国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      程序連接方法

      文檔序號:6554951閱讀:769來源:國知局
      專利名稱:程序連接方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及不同編程語言的連接,尤其是從面向?qū)ο蟮木幊陶Z言中調(diào)用面向函數(shù)的編程語言的子程序,或者相反。
      已知有許多編程系統(tǒng)可以被用來編制數(shù)據(jù)處理設(shè)備的程序。另外,下文采用編程語言JAVA和C作為例子。產(chǎn)生程序代碼的翻譯程序?qū)儆诰幊陶Z言的抽象說明。因此該翻譯程序是被計算機安裝用于某個行為的工具。
      隨著新編程語言-此處為JAVA-的引入,便提出了調(diào)用另一編程語言的子程序的問題。通常已知以下技術(shù),即一旦所述的編程語言足夠地相似,便由該技術(shù)翻譯不同編程語言-實現(xiàn)的調(diào)用協(xié)定。譬如已知有混合地使用C和Pascal,其中大多由一個關(guān)鍵字來相應(yīng)地表征所述的函數(shù)或過程。只要它涉及簡單的變量,則該技術(shù)是簡單和已知的。在共同地使用一些結(jié)構(gòu)時會產(chǎn)生更大的問題。此處的解決方案大多是,可以在存儲器內(nèi)進行共同的表示,或在知道存儲器結(jié)構(gòu)之后人工地編制一對表示相同存儲器結(jié)構(gòu)的描述。
      但在連接面向?qū)ο蟮恼Z言(如JAVA)和面向函數(shù)的語言(如C)的情況下,當(dāng)涉及結(jié)構(gòu)時尤其會產(chǎn)生問題。因為JAVA不知道C的結(jié)構(gòu);最佳的近似在于使用一些必要時被嵌套的對象。
      在JAVA中已設(shè)立一個接口來尤其調(diào)用C程序。該接口被稱為“JAVA本機接口”,并簡稱為JNI。尤其可以在http//java.sun.com/docs/books/tutorial/native1.1/index.html下找到描述。其中著重指出,必須匹配C函數(shù)“在現(xiàn)實世界中”你也許擁有那些你想與Java程序綜合起來的現(xiàn)有C函數(shù),而你仍然需要修改這些C函數(shù)的標(biāo)志以便利用JNI進行工作。因此,在沒有為每個如此調(diào)用的函數(shù)編制一個通常被稱為“打包函數(shù)”(wrapperfunction)的輔助函數(shù)的情況下,并不能毫無問題地從JAVA調(diào)用預(yù)定的C函數(shù)。尤其是需要分別單獨地把C語言中的結(jié)構(gòu)用法翻譯成參數(shù),因為在JAVA中不存在結(jié)構(gòu)。
      因此本發(fā)明的任務(wù)在于從JAVA中調(diào)用預(yù)定的C函數(shù)且該C函數(shù)的參數(shù)是預(yù)定的C結(jié)構(gòu),而無需為C函數(shù)和C結(jié)構(gòu)單獨地和人工地編制“打包函數(shù)”。
      下面接著例子來講述該任務(wù)的解決方案,該實施例在下文采用JAVA和C編程語言。程序的表示包括一行開始處的行號,該行號只被用作參考。
      在此,該解決方案采用了被稱為串行化的技術(shù),且在http//java.sun.com/docs/books/tutotial/essential/io/serializing.html下進行了描述。在該解決方案中,每個類中都設(shè)有一個用于串行化的方法和一個用于相反方向的方法。所述的串行化方法通過“writeobject”來稱呼,并被迭代地應(yīng)用于一個類的所有元素。在此,所述的迭代采用了運行時間系統(tǒng)“JAVA虛擬機”,所述的運行時間系統(tǒng)便從需要串行化的對象中動態(tài)地、也即只有在運行時間內(nèi)才求出需要處理的字段,當(dāng)涉及基本類型、且一旦請求對象便迭代地處理這些基本類型時,便以標(biāo)準的方式輸出所述的字段。
      下面借助一個簡單的例子來講述串行化,正如其在本發(fā)明中所應(yīng)用的那樣。作為基本元素,采用整數(shù)類型“Inter”和浮點數(shù)類型“Float”。兩者被定義為類<pre listing-type="program-listing"><![CDATA[1class myInt {2 public Integer val=new Integer(0);3 public void show(String id) {4 System.out.println(id+".val="+val);5 }6 public String toX() {7 return"I"+val+";";8 }9 public String fromX(String buf) {10 int semi=buf.indexof(′;′);11 try {12 val=val.valueOf(buf.substring(1,semi));13 } catch(NumberFormatException e) {14 val=new Integer(0);15 }16 return buf.substring(semi+1);17 }18 }]]></pre>在第1行通過下面的程序文本定義類“myInt”。它在第2行包括類“Integer”中的一個存儲器位置’val’。該應(yīng)用中的每個類知道三種方法,即第三行的“show”、第六行的“toX”和第九行的“fromX”?!皊how”只被用于顯示測試目的的值。
      方法“toX”用于串行化。它以串返回標(biāo)準形式的值,其中在指示符(此處為“I”)之后跟有一個十進制數(shù)字,該值通過一個分號結(jié)束。
      方法“fromX”期待一個恰好以這種格式的元素開始的串,也就是說具有一個總是為“I”的指示符、所述十進制數(shù)字的值以及一個分號。后者的位置在第10行求出。在取出對象值和存放到“val”中之后,由“formX”返回所述字符串的其余部分。
      因此所述的兩個函數(shù)“toX”和“fromX”是互逆的;尤其由x.fromX(x.toX())促使通過“toX”讀出所述的值,并通過“fromX”進行重新設(shè)置,其中x是類“myInt”的對象。
      相應(yīng)地定義類“myFloat”<pre listing-type="program-listing"><![CDATA[20class myFloat {21 public Float val=new Float(0.0);22 public void show(String id) {23 System.out.println(id+".val="+val);24 }25 public String toX(){26 return"F"+val+";";27 }28 public String fromX(String buf) {29int semi=buf.indexOf(′;′);30try {31val=val.valueOf(buf.substring(1,semi));32} catch(NumberFormatException e) {33val=new Float(0.0);34}35return buf.substring(semi+1);36}37}]]></pre>假定在C中存在一種簡單的結(jié)構(gòu)typedef struct MyStruc2 {int s2f1;};該結(jié)構(gòu)被轉(zhuǎn)換為下面的.JAVA類<pre listing-type="program-listing"><![CDATA[40class myStruc2 {41 public myInt s2f1=new myInt();42 public void show(String id) {43 s2f1.show(id+".s2f1");44 }45 public String toX() {46 return′{′+s2f1.toX()+′}′;47 }48 public String fromX(String buf) {49 String cpy=buf.substring(1);50 cpy=s2f1.fromX(buf);51return cpy.substring(1);52 }53}]]></pre>在第41行定義數(shù)據(jù)區(qū)s2f1;方法“show”用于顯示該值。
      方法“toX”以串的形式產(chǎn)生在圓括號內(nèi)的值?!癴romX”提供返回路徑。兩種方法也象方法“show”一樣使用迭代的調(diào)用,以便為結(jié)構(gòu)元素執(zhí)行相應(yīng)的函數(shù)。
      現(xiàn)在利用這些元素用C語言構(gòu)造一個稍微復(fù)雜的結(jié)構(gòu)typedef struct myStruc1 {int s1f1;int s1f2[2];float s1f3;myStruc2 s1f4;}相應(yīng)的等價體用JAVA表示為
      <pre listing-type="program-listing"><![CDATA[56class myStruc1 {57 public myInt s1f1=new myInt();58 public myInt[] s1f2=new myInt[2];59 public myFloat s1f3=new myFloat();60 public myStruc2 s1f4=new myStruc2();61 public myStruc1() {62 for (int i=0;i<2;++i) {63 s1f2[i]=new myInt();64 }65 }66 public void show(String id) {67 s1f1.show(id+".s1f1");68for (inti=0;i<s1f2.length;++i){69s1f2[i].show(id+".s1f2");70}71 s1f3.show(id+".s1f3");72 s1f4.show(id+".s1f4");73 }74 public String toX() {75 String buf=s1f1.toX();76 buf+=′[′;77 for (int i=0;i<s1f2.length;++i) {78 buf+=s1f2[i].toX();79 }80 buf+=′]′;81 buf+=s1f3.toX();82 buf+=s1f4.toX();83 return′{′+buf+′}′;84 }85 public String fromX(String buf) {86 buf=buf.substring(1);87 buf=s1f1.fromX(buf);88 buf=buf.substring(1);89for (int i=0;i<s1f2.length;++i) {90buf=s1f2[i].fromX(buf);91}92 buf=buf.substring(1);93 buf=s1f3.fromX(buf);94 buf=s1f4.fromX(buf);95 return buf.substring(1);96 }97}]]></pre>對于該結(jié)構(gòu)的每個字段,在方法“toX”和“fromX”中通過遞歸地調(diào)用該字段的相應(yīng)方法變換成標(biāo)準的線性表示,或從標(biāo)準的線性表示變換而來。對于陣列“s1f2”,必須相應(yīng)地通過所述的元素進行迭代,正如在第78和90行內(nèi)所進行的一樣。此處也用圓括號來標(biāo)記該結(jié)構(gòu);所述的陣列被包含在方括號內(nèi)。
      另外還給該實施例設(shè)立了類“CallC”<pre listing-type="program-listing"><![CDATA[101 class CallC {102 public String execC(String func,String buf) {103 System.out.println("Calling"+func+";"+buf);104 int off=buf.indexOf("9876");105 String mod=buf.substring(0,off)106 + 6789107 + buf.substring(off+4);108 System.out.println("Modified"+mod);109 return mod;110 }111}]]></pre>該類只包含有方法“execC”,由該方法顯示所述的自變量,并通過用“6789”代替數(shù)“9876”來修改所提供的字符串。該方法真正代表了用C函數(shù)的調(diào)用,這在稍后將詳細講述。
      為了論證這種JAVA代碼,還在類“sample”中定義一個主程序“main”<pre listing-type="program-listing"><![CDATA[113 public class sample {114 private static myStruc1 my1=new myStruc1();115 static void myInit() {116my1.s1f1.val=new Integer(1234);117my1.s1f4.s2f1.val=new Integer(9876);118my1.s1f2
      .val=new Integer(11);119my1.s1f2[1].val=new Integer(12);120my1.s1f3.val=new Float(5.6);121 }122 public static void main(String[] params) {123System.out.println("begin...");124myInit();125my1.show("old my1");126String flat=my1.toX();127flat=new CallC().execC("aFunc",flat);128my1.fromX(flat);129my1.show("new my1");130System.out.println("done.") ;131}132 }]]></pre>
      在此,在第115-121行中首先用舉例值來賦值類“myStruc1”的對象“my1”。處于清晰的緣故,這里通過直接訪問對象的字段來實現(xiàn)。在現(xiàn)實的應(yīng)用中,需要采用與此相匹配的方法,但其表述是由該應(yīng)用的內(nèi)容制定的,因此在此沒有意義。
      在第124行中初始化在第114行中編制的對象。在第125行中顯示值。在第126行中通過-遞歸地-在變量“flat”中調(diào)用“toX”而以標(biāo)準的線性表示來產(chǎn)生對象。在第127行調(diào)用方法“execC”,該方法通常作為C函數(shù)經(jīng)JNI進行調(diào)用,但此處利用JAVA類來進行仿真,并以線性化的標(biāo)準形式返回一個必要時被更改的結(jié)構(gòu),其被保留在變量“flat”中。借助所述的串,此時通過-遞歸地-調(diào)用“fromX”把所述的可能被更改的值存放在所述的對象中。
      可以看到,函數(shù)“toX”遞歸地構(gòu)造所述的串,而“fromX”以相同的方式拆除它。
      顯然,可以通過一個程序自動地從相應(yīng)的結(jié)構(gòu)定義中生成所述的方法“fromX”和“toX”。對于每個元素,遞歸地調(diào)用各自的方法。在“toX”的情況下,其輸出被附加到所述的串上;在“fromX”的情況下,其結(jié)果表示需進一步處理的其余部分。
      如果把所有的程序行1-132集中成一個JAVA程序,再翻譯和執(zhí)行該程序,則出現(xiàn)以下輸出begin...old my1.s1f1.val=1234old my1.s1f2.val=11old my1.s1f2.val=12old my1.s1f3.val=5.6old my1.s1f4.s2f1.val=9876Calling aFunc{I1234;[I11;I12;]F5.6;{I9876;}}Modified{I1234;[I11;I12;]F5.6;{I6789;}}new my1.s1f1.val=1234new my1.s1f2.val=11new my1.s1f2.val=12new my1.s1f3.val=5.6new my1.s1f4.s2f1.val=6789done.
      可以明顯看到遵照C結(jié)構(gòu)“myStruc1”的對象“myStruc1”的結(jié)構(gòu),還有其值的標(biāo)準表示“{I1234;[I11;I12;]F5.6;{I9876;}}”。
      但至此為止尚未使用格式指示符“I”、“F”、“{”和“}”。此處的分號只是為清楚起見而插入的;也可以取消它。所述的串也可以有其它的表示。由于JAVA串是作為單一碼利用每個字符為16比特而存儲的,而且所述類“String”的方法不一定非???,所以優(yōu)化方案在于使用預(yù)先施加的字節(jié)-陣列,并用二進制數(shù)據(jù)填充該陣列。為替代十進制的數(shù)值表示,顯然也可以采用16進制和36進制。就可移植性和可維護性的損失而言,這種優(yōu)化是否值得,必須在每個單個情況下具體地通過測量來證實和判斷。這種和類似的優(yōu)化對本領(lǐng)域技術(shù)人員是公知的,因此下文不再詳述。
      利用至此所講述的手段,此時可以實現(xiàn)通過方法“toX”可以線性地出現(xiàn)所以的數(shù)據(jù)區(qū),利用方法“fromX”可以再次存放。因此,這些方法體現(xiàn)了已知的串行化函數(shù)的特殊特點,并且也可以替代其位置。
      但與從JAVA所公知的串行化函數(shù)相反,首先確定由在本發(fā)明所使用的串行化函數(shù)產(chǎn)生一個確定的字段順序,也即所述字段在所述結(jié)構(gòu)內(nèi)被定義時的順序。另外,通過串行化,把該結(jié)構(gòu)的格式按照函數(shù)語言C表示為非常簡單的形式。相反,在JAVA內(nèi)已有的串行化只存儲用于對象的信息,但顯然不包含關(guān)于所屬C結(jié)構(gòu)的結(jié)構(gòu)信息。
      此時,所述內(nèi)容的這種線性化的且設(shè)有類型指示符的存儲形式可以被轉(zhuǎn)換成一種與各種C結(jié)構(gòu)相對應(yīng)的存儲器布局,而與所述結(jié)構(gòu)的定義無關(guān)。為此采用C語言來-優(yōu)選也遞歸地-分析所述的字符串、求出和相應(yīng)地處理所述的類型指示符。如果所述的類型指示符表征一個簡單的變量,則轉(zhuǎn)換接下來的數(shù)字,并按二進制存儲在相應(yīng)長度和對齊的存儲區(qū)中。如果所述的類型指示符表征一個結(jié)構(gòu),那么,即便該結(jié)構(gòu)僅由不需要對齊的字節(jié)組成,但在一些實現(xiàn)當(dāng)中也經(jīng)常需要對齊雙字的邊界。該處理對于C語言的相應(yīng)編譯系統(tǒng)是特有的,并且對應(yīng)于從該編譯結(jié)構(gòu)中充分公開的技術(shù),必要時由相應(yīng)的編譯器的源代碼接管該技術(shù)。
      打包函數(shù)可以如下<pre listing-type="program-listing"><![CDATA[901 void pack_stru(char*fmt,void*stru)902 {903int i,j;904for (i=0;i<strlen(fmt);) {905 switch fmt[i++] {906 case′I′stru=align(stru,4);907 sscanf(fmt,"%d;%n",(int*)stru,&amp;j);908 i+=j(luò);stru+=4;909 break;910 case′F′stru=align(stru,8);911 sscanf(fmt,"%f;%n",(float*)stru,&amp;j);912 i+=j(luò);stru+=8;913 break;914 case′{′stru=align(stru,8);915 break;916 case′}′stru=align(stru,8);917 break;918 case′]′919 break;920 case′[′921 break;922 }923}924 }]]></pre>函數(shù)“pack_stru”具有兩個參數(shù),一個指示符指示組合的格式及數(shù)據(jù)串,以及一個指示符指示一個(足夠大的)存儲區(qū),在該存儲區(qū)內(nèi)建立所述的結(jié)構(gòu)。所述的存儲區(qū)與類型無關(guān)地被定義為“viod*”。此時,由第904-923行的循環(huán)處理所述組合的格式及數(shù)據(jù)串。由第906、910、914和916行的函數(shù)“align”執(zhí)行地址到第二參數(shù)的倍數(shù)的對準,此處沒有示出,因為它們較大地依賴于相應(yīng)的計算機系統(tǒng)。在第907和911行,通過庫函數(shù)“sscanf”從串“fmt”提取所述的值,并存儲在用指示符“stru”定址的存儲區(qū)中,其中由于形式的正確性而進行類型的匹配。處理的字符數(shù)量被輸出,并被用于格式及數(shù)據(jù)串的串接?!瓣嚵小敝甘痉癧‘und’]”在此是不起作用的;這也取決于各種實現(xiàn)。
      于是,正如用“CallC”類中的方法“execC”所表示的一樣,提供需調(diào)用的C函數(shù)的名稱和一個包含有隨該C函數(shù)一起給出的結(jié)構(gòu)編碼的字符串。通過JNIC以C函數(shù)的形式調(diào)用方法“execC”,并象所示的那樣把該字符串轉(zhuǎn)換成與所述結(jié)構(gòu)相應(yīng)的存儲器格式。于是,調(diào)用在第一參數(shù)內(nèi)給出的C函數(shù),并提供一個指示存儲器結(jié)構(gòu)的指示符。
      作為該函數(shù)返回之后的結(jié)果,可以改變所述存儲器結(jié)構(gòu)的字段。由此,函數(shù)“execC”從該存儲器結(jié)構(gòu)再次產(chǎn)生標(biāo)準的表示。為此使用所述被提供的、恰好描述了所述存儲器結(jié)構(gòu)的字符串,并對其進行重新處理??截愃龅念愋椭甘痉?,并隨后插入所述存儲位置的值或代替現(xiàn)有的值。根據(jù)與其產(chǎn)生時相同的長度和對齊規(guī)則來實現(xiàn)存儲器地址內(nèi)的串接。如果以固定的(最大)長度存儲所述的數(shù)值,則可以簡單地進行重寫。
      于是,由函數(shù)“execC”返回了存儲器結(jié)構(gòu)值的線性化表示。隨后利用方法“fromX”對該存儲器結(jié)構(gòu)再次進行遞歸的分析,并被用來更新所述對象內(nèi)的字段值。
      在至此為止的例子中,所述的類型指示符和所述的值是混合地被存儲在相同的串內(nèi)。顯然也可以將兩者分開地在兩個串內(nèi)產(chǎn)生。于是從{I1234;[I11;I12;]F5.6;{I9876;}}產(chǎn)生格式串{I [I I]F{ }}以及數(shù)據(jù)串1234;11;12;5.6;9876;這有個優(yōu)點,即在函數(shù)或方法“execC”的方法內(nèi)返回被調(diào)用的函數(shù)之后,只須借助所述被編碼的結(jié)構(gòu)描述{I [I I]F{ }}以新字符串的形式匯編所述結(jié)構(gòu)元素的值,為此可以從頭重寫包含有所述輸入值的緩沖器。另外在該情形下,也可以靜態(tài)地提供所述的結(jié)構(gòu)信息。當(dāng)優(yōu)選地象上述那樣從C結(jié)構(gòu)描述自動地產(chǎn)生串行化和去串行化方法“toX”和“fromX”時,便尤其是這種情況。數(shù)據(jù)串的編制由此變得更為有效。
      所述的方法也可以用來從C函數(shù)調(diào)用JAVA方法。為此可以靜態(tài)地提供所述的格式串,或者通過調(diào)用串行化方法ad hoc來進行編制。在后一種情況下,必須先對所需的對象進行實例化和初始化。此時借助格式串可以通過拆包函數(shù)把C結(jié)構(gòu)轉(zhuǎn)換成串行的形式。最遲必須在現(xiàn)在實例化和初始化所需的對象。在JNI中設(shè)立了為此所需的調(diào)用。同樣,通過在JNI中所設(shè)立的手段首先調(diào)用與對象結(jié)構(gòu)相應(yīng)的對象的去串行化方法“fromX”,然后調(diào)用最后需要調(diào)用的任一對象的JAVA方法,該對象根本就與分配給所述結(jié)構(gòu)的對象無關(guān)。在返回之后,通常是反向地、或者與在從JAVA調(diào)用C時的第一部分相應(yīng)地運行相應(yīng)的過程。
      權(quán)利要求
      1.從面向?qū)ο蟮木幊陶Z言(JAVA)中調(diào)用面向函數(shù)的編程語言(C)的函數(shù)的方法,在所述的面向函數(shù)的編程語言中,函數(shù)以參數(shù)的形式期望一種結(jié)構(gòu),而在面向?qū)ο蟮木幊陶Z言中,給字段分配與所述的結(jié)構(gòu)相應(yīng)的JAVA類,具有一些步驟-以格式串提供一個描述所述結(jié)構(gòu)的字符串,-通過遞歸地調(diào)用一種串行化方法(toX)提取在所述結(jié)構(gòu)中所使用的字段的內(nèi)容,并且將其以一個與所述格式串相應(yīng)的順序存放在一個數(shù)據(jù)串中,-由一個打包函數(shù)利用所述的格式串把所述的數(shù)據(jù)串轉(zhuǎn)換成所述結(jié)構(gòu)的存儲器映像,-利用所述的存儲器映像以所述結(jié)構(gòu)的參數(shù)形式調(diào)用所述面向函數(shù)的編程語言的函數(shù)。
      2.按權(quán)利要求1的方法,具有以下進一步的步驟-由一個拆包函數(shù)利用所述的格式串把所述的存儲器映像轉(zhuǎn)換成一個數(shù)據(jù)串,-通過遞歸地調(diào)用一種去串行化方法(fromX),以一個與所述格式串相應(yīng)的順序從所述的數(shù)據(jù)串中提取在所述結(jié)構(gòu)中所使用的字段,并將其存放在所述對象的字段中。
      3.按權(quán)利要求1或2的方法,其中把所述的數(shù)據(jù)串和所述的格式串混合成一個借助串行化方法產(chǎn)生的公共串。
      4.以面向函數(shù)的編程語言(C)的函數(shù)形式調(diào)用面向?qū)ο蟮木幊陶Z言(JAVA)的方法的方法,其中在調(diào)用所述的函數(shù)時以參數(shù)的形式提供一個結(jié)構(gòu),并且給字段分配與所述結(jié)構(gòu)相應(yīng)的JAVA類,具有以下步驟-產(chǎn)生與所述結(jié)構(gòu)相應(yīng)的、包括所需子對象的對象,-在一個格式串中提供一個描述所述結(jié)構(gòu)的字符串,-由一個拆包函數(shù)利用所述的格式串把存儲器映像轉(zhuǎn)換成一個數(shù)據(jù)串,-通過遞歸地調(diào)用一種去串行化方法(fromX),以一個與所述格式串相應(yīng)的順序從所述的數(shù)據(jù)串中提取在所述結(jié)構(gòu)中所使用的字段,并將其存放在所述對象的字段中,-調(diào)用所述的方法。
      5.按權(quán)利要求4的方法,具有以下進一步的步驟-通過遞歸地調(diào)用一種串行化方法(toX)提取在所述結(jié)構(gòu)中所使用的字段的內(nèi)容,并且將其以一個與所述格式串相應(yīng)的順序存放在一個數(shù)據(jù)串中,-由一個打包函數(shù)利用所述的格式串在所述結(jié)構(gòu)的存儲器映像中替換掉由所述數(shù)據(jù)串中存在的值所組成的字段。
      6.用于編制為執(zhí)行上述方法所需的程序的方法,其中,從一種用面向函數(shù)的編程語言所描述的結(jié)構(gòu)中至少產(chǎn)生串行化或去串行化方法的程序文本。
      全文摘要
      從面向?qū)ο蟮木幊陶Z言(譬如JAVA)中調(diào)用面向函數(shù)的編程語言(譬如C)的函數(shù)的方法,其中,通過遞歸地調(diào)用一種串行化方法(toX),把在結(jié)構(gòu)中所使用的字段的內(nèi)容以一個與所述格式串相應(yīng)的順序存放在一個數(shù)據(jù)串中,然后由一個打包函數(shù)把所述的數(shù)據(jù)串轉(zhuǎn)換成所述結(jié)構(gòu)的存儲器映像,并利用所述的存儲器映像以參數(shù)形式調(diào)用所述面向函數(shù)的編程語言的函數(shù)。
      文檔編號G06F9/46GK1447938SQ01814435
      公開日2003年10月8日 申請日期2001年7月12日 優(yōu)先權(quán)日2000年8月24日
      發(fā)明者A·德雷塞爾豪斯, R·維格納 申請人:溫科尼克斯多夫國際有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1