欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用書簽的流對(duì)象實(shí)例化的制作方法

文檔序號(hào):6479549閱讀:212來源:國(guó)知局
專利名稱:使用書簽的流對(duì)象實(shí)例化的制作方法
使用書簽的流對(duì)象實(shí)例化背景可以從流數(shù)據(jù)中創(chuàng)建對(duì)象實(shí)例。例如,對(duì)象實(shí)例化管理器可以訪問各種類定義。流 數(shù)據(jù)提供驅(qū)動(dòng)實(shí)例化管理器來實(shí)例化特定類的對(duì)象的指令。流數(shù)據(jù)還提供與如何實(shí)例化和 如何填充這些對(duì)象有關(guān)的指令。在直接從流數(shù)據(jù)進(jìn)行實(shí)例化而不緩沖時(shí),這些指令應(yīng)當(dāng)以 如下方式來編寫在接收到這些指令時(shí)實(shí)例化管理器具有對(duì)每一指令作出響應(yīng)所必需的所 有信息?;蛘?,實(shí)例化管理器可以緩沖流數(shù)據(jù),直至接收到所有指令。例如,如果實(shí)例化指 令是使用標(biāo)記表示的,則緩沖所有標(biāo)記文檔。簡(jiǎn)要概述本文描述的各實(shí)施例涉及用書簽來標(biāo)記一組流權(quán)標(biāo)中的權(quán)標(biāo),每一權(quán)標(biāo)表示一實(shí) 例化指令。導(dǎo)航器接收一組流權(quán)標(biāo)并將這些權(quán)標(biāo)提供給實(shí)例化管理器。然而,如果實(shí)例化 管理器請(qǐng)求導(dǎo)航器用書簽來標(biāo)記特定權(quán)標(biāo),則導(dǎo)航器緩沖至少在用書簽標(biāo)記的權(quán)標(biāo)處開始 (并且在存在先前書簽的情況下甚至可能更早)的該組流指令。導(dǎo)航器響應(yīng)于來自實(shí)例化 管理器的指令來重放在書簽處開始的該組流權(quán)標(biāo)。實(shí)例化管理器接收該組流權(quán)標(biāo)。如果實(shí)例化管理器目前不能處理特定權(quán)標(biāo)的指 令,則實(shí)例化管理器指示導(dǎo)航器用書簽來標(biāo)記該特定權(quán)標(biāo)。在實(shí)例化管理器稍后接收到準(zhǔn) 許該實(shí)例化管理器返回至該書簽的權(quán)標(biāo)時(shí),該實(shí)例化管理器返回至?xí)炓灾胤旁谠摃炋?開始的實(shí)例化指令。這準(zhǔn)許實(shí)例化管理器正確地遵循實(shí)例化指令的集合而不需要緩沖所有的實(shí)例化 指令。此外,實(shí)例化管理器可以處理實(shí)例化權(quán)標(biāo)的流而不必能夠在接收到每一權(quán)標(biāo)時(shí)能夠 對(duì)它進(jìn)行處理。本概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助 確定所要求保護(hù)的主題的范圍。附圖簡(jiǎn)述為了描述可獲得本發(fā)明的上述和其他優(yōu)點(diǎn)和特征的方式,本發(fā)明各實(shí)施例的更具 體描述在附圖中示出。可以理解,這些附圖僅描述本發(fā)明的各典型實(shí)施例,從而不被認(rèn)為是 對(duì)其范圍的限制,將通過使用附圖用附加特征和細(xì)節(jié)來描述和解釋這些實(shí)施例,附圖中

圖1示出可用于傳送流數(shù)據(jù)的示例計(jì)算系統(tǒng);圖2示出其中使用流數(shù)據(jù)來在存儲(chǔ)器中實(shí)例化對(duì)象的軟件體系結(jié)構(gòu);圖3示出供導(dǎo)航器便于響應(yīng)于流權(quán)標(biāo)來實(shí)例化對(duì)象的方法的流程圖;圖4示出使導(dǎo)航器用書簽來標(biāo)記權(quán)標(biāo)的方法的流程圖;以及圖5示出可使導(dǎo)航器進(jìn)入重放模式從而重放自先前書簽處的權(quán)標(biāo)流的方法的流 程圖;以及圖6示出供實(shí)例化管理器從導(dǎo)航器接收一組權(quán)標(biāo)的方法的流程圖。詳細(xì)描述根據(jù)本文描述的各實(shí)施例,描述了用書簽來標(biāo)記一組流權(quán)標(biāo)中的權(quán)標(biāo),其中每一 權(quán)標(biāo)表示一實(shí)例化指令或至少提供實(shí)例化上下文。導(dǎo)航器接收一組流權(quán)標(biāo)并將這些權(quán)標(biāo)提供給實(shí)例化管理器。然而,如果請(qǐng)求導(dǎo)航器用書簽來標(biāo)記特定權(quán)標(biāo),則導(dǎo)航器緩沖至少在用 書簽標(biāo)記的權(quán)標(biāo)處開始(并且在存在先前書簽的情況下甚至可能更早)的該組流指令。導(dǎo) 航器響應(yīng)于來自實(shí)例化管理器的指令來重放在書簽處開始的該組流權(quán)標(biāo)。首先,在概括地關(guān)于計(jì)算系統(tǒng)的一些介紹性討論之后,將參考圖1描述基本計(jì)算 系統(tǒng)。隨后,參考圖2到6示出并描述在基于流數(shù)據(jù)來實(shí)例化對(duì)象的上下文中使用書簽的 各實(shí)施例。計(jì)算系統(tǒng)現(xiàn)在越來越多地采用各種各樣的形式。例如,計(jì)算系統(tǒng)可以是手持式設(shè) 備、電器、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、大型機(jī)、分布式計(jì)算系統(tǒng)或甚至常規(guī)上不被認(rèn)為是計(jì) 算系統(tǒng)的設(shè)備。在本說明書以及權(quán)利要求書中,術(shù)語“計(jì)算系統(tǒng)”被廣義地定義為包括包含 至少一個(gè)處理器以及其上能含有可由處理器執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器的任何設(shè) 備或系統(tǒng)(或其組合)。存儲(chǔ)器可采取任何形式,且可取決于計(jì)算系統(tǒng)的本質(zhì)和形式。計(jì)算 系統(tǒng)可分布在網(wǎng)絡(luò)環(huán)境上,且可包括多個(gè)組成計(jì)算系統(tǒng)。參考圖1,在其最基本的配置中,計(jì)算系統(tǒng)100 —般包括至少一個(gè)處理單元102和 存儲(chǔ)器104。存儲(chǔ)器104可以是物理系統(tǒng)存儲(chǔ)器,它可以是易失性的、非易失性的或兩者的 某種組合。術(shù)語“存儲(chǔ)器”也可在此處用來指示諸如物理存儲(chǔ)介質(zhì)等非易失性大容量存儲(chǔ)。 如果計(jì)算系統(tǒng)是分布式的,則處理、存儲(chǔ)器、和/或存儲(chǔ)能力也可以是分布式的。如此處所 使用的,術(shù)語“模塊”或“組件”可以指在計(jì)算系統(tǒng)上執(zhí)行的軟件對(duì)象或例程。此處描述的 不同的組件、模塊、引擎和服務(wù)可被實(shí)現(xiàn)為在計(jì)算系統(tǒng)上執(zhí)行的對(duì)象或進(jìn)程(例如,作為分 開的線程)。在以下描述中,參考由一個(gè)或多個(gè)計(jì)算系統(tǒng)執(zhí)行的動(dòng)作描述各實(shí)施例。如果這樣 的動(dòng)作用軟件實(shí)現(xiàn),則相關(guān)聯(lián)計(jì)算系統(tǒng)中執(zhí)行該動(dòng)作的一個(gè)或多個(gè)處理器響應(yīng)于執(zhí)行了計(jì) 算可執(zhí)行指令而引導(dǎo)計(jì)算系統(tǒng)的操作。這樣的操作的示例涉及對(duì)數(shù)據(jù)的操縱。計(jì)算機(jī)可執(zhí) 行指令(和所操縱的數(shù)據(jù))可被存儲(chǔ)在計(jì)算系統(tǒng)100的存儲(chǔ)器104中。計(jì)算系統(tǒng)100還可包含允許計(jì)算系統(tǒng)100例如通過網(wǎng)絡(luò)110與其他計(jì)算系統(tǒng)通信 的通信信道108。通信信道108是通信介質(zhì)的示例。通信介質(zhì)一般用諸如載波或其他傳輸 機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并且包括 任何信息傳遞介質(zhì)。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連 接,以及無線介質(zhì),諸如聲學(xué)、無線電、紅外線和其他無線介質(zhì)。如此處所用的術(shù)語“計(jì)算機(jī) 可讀介質(zhì)”既包括存儲(chǔ)介質(zhì)又包括通信介質(zhì)。在圖1中,計(jì)算系統(tǒng)100被示為通過容許限度108接收流數(shù)據(jù)112。流數(shù)據(jù)112表 示將使得處理器112在存儲(chǔ)器104中實(shí)例化一個(gè)或多個(gè)對(duì)象的對(duì)象實(shí)例化指令。具體而言, 對(duì)象114被示為在存儲(chǔ)器104的易失性部分內(nèi)實(shí)例化。對(duì)象114可以響應(yīng)于流數(shù)據(jù)112來 實(shí)例化。流數(shù)據(jù)可以通過圖1所示的網(wǎng)絡(luò)來接收,但也可以通過任何其他數(shù)據(jù)信道來接收。 例如,流數(shù)據(jù)可以從本地盤、存儲(chǔ)器棒、光盤驅(qū)動(dòng)器等獲得。關(guān)于該過程的更多信息將參考 圖2及后續(xù)附圖并且參考若干詳細(xì)但非限制性的示例來討論。本發(fā)明的范圍內(nèi)的實(shí)施例也包括用于攜帶或其上儲(chǔ)存有計(jì)算機(jī)可執(zhí)行指令或數(shù) 據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這樣的機(jī)器可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問的任 何可用介質(zhì)。作為示例而非限制,這樣的計(jì)算機(jī)可讀介質(zhì)可包括物理存儲(chǔ)和/或存儲(chǔ)器介 質(zhì),諸如RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于
6承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì) 算機(jī)訪問的任何其他介質(zhì)。當(dāng)信息在網(wǎng)絡(luò)或另一通信連接(硬連線、無線或硬連線或無線 的組合)上傳輸或提供給計(jì)算機(jī)時(shí),計(jì)算機(jī)將連接完全視為計(jì)算機(jī)可讀介質(zhì)。因此,任何這 樣的連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍 內(nèi)。計(jì)算機(jī)可執(zhí)行指令例如包括,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某 一功能或某組功能的指令和數(shù)據(jù)。盡管用對(duì)結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本 主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于在此所述的具體特征或動(dòng)作。相 反,在此所述的具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。圖2示出其中使用流數(shù)據(jù)來在存儲(chǔ)器中實(shí)例化對(duì)象的軟件體系結(jié)構(gòu)200。在物理 層,流數(shù)據(jù)僅僅是以諸如電或光信號(hào)等某一物理形式表示的一系列數(shù)字位。流數(shù)據(jù)201被 示為是二進(jìn)制1和二進(jìn)制0的二進(jìn)制序列。讀取器211可用硬件、軟件、固件、或其組合來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,讀取器211 本身是在存儲(chǔ)器中實(shí)例化的對(duì)象。讀取器包含將接收到的數(shù)據(jù)流201轉(zhuǎn)換成一系列權(quán)標(biāo) 202的邏輯,每一權(quán)標(biāo)表示實(shí)例化上下文并且一些權(quán)標(biāo)表示實(shí)例化指令。這一轉(zhuǎn)換過程可以在若干步驟中執(zhí)行。例如,如果數(shù)據(jù)流201表示的該組實(shí)例化 指令是標(biāo)記語言文檔(例如,可擴(kuò)展標(biāo)記語言(XML)文檔),則這些權(quán)標(biāo)可表示特定元素的 開始、特定元素的結(jié)束、元素的內(nèi)容、元素的屬性,等等。讀取器211因而可以首先將每一 個(gè)位序列段轉(zhuǎn)換成特定字符。例如,對(duì)于表示ASCII字符的位序列,每一個(gè)位序列可以是 8位。然而,字符也可由其他位序列長(zhǎng)度來表示,如在使用Unicode字符或可能其他字符集 的情況下。讀取器211隨后解析字符流以尋找表示分層標(biāo)記語言文檔的邏輯部分的邏輯段 (即,權(quán)標(biāo))。讀取器211還可執(zhí)行任何流控制和有限緩沖來提供權(quán)標(biāo)流202。導(dǎo)航器212也可用硬件、軟件、固件、或組合來實(shí)現(xiàn)成一組件。在一個(gè)實(shí)施例中,導(dǎo) 航器212本身可以是在存儲(chǔ)器中實(shí)例化的對(duì)象。導(dǎo)航器212從讀取器211接收權(quán)標(biāo)202。 讀取器211能以推送的方式將權(quán)標(biāo)202提供給導(dǎo)航器212。然而,為降低或消除緩沖要求, 并且在以下詳細(xì)討論的各示例中,導(dǎo)航器212響應(yīng)于對(duì)每一權(quán)標(biāo)的顯式導(dǎo)航器請(qǐng)求以拉取 的方式從讀取器211 —次接收一個(gè)權(quán)標(biāo)。導(dǎo)航器212包括準(zhǔn)許導(dǎo)航器用書簽來標(biāo)記權(quán)標(biāo)流203的加書簽機(jī)制205。導(dǎo)航器 212將權(quán)標(biāo)流203提供給實(shí)例化管理器213,實(shí)例化管理器213實(shí)際上在存儲(chǔ)器214中實(shí)例 化對(duì)象。被提供給實(shí)例化管理器213的權(quán)標(biāo)流203中提供的權(quán)標(biāo)是與到導(dǎo)航器212的權(quán)標(biāo) 流202中提供的權(quán)標(biāo)相同的權(quán)標(biāo)。然而,如下所述,由于加標(biāo)簽機(jī)制205,這些權(quán)標(biāo)在權(quán)標(biāo)流 203中可以按與權(quán)標(biāo)流202相比不同的次序來提供。實(shí)例化管理器213可以使導(dǎo)航器212 在權(quán)標(biāo)流202中創(chuàng)建書簽。每一書簽表示稍后要返回到的特定權(quán)標(biāo),其模擬在用書簽標(biāo)記 的權(quán)標(biāo)處開始的權(quán)標(biāo)流的重放。導(dǎo)航器212可以通過在緩沖區(qū)206中緩沖在該書簽處開始 的權(quán)標(biāo)流來重放權(quán)標(biāo)流。所緩沖的權(quán)標(biāo)流稍后在釋放書簽時(shí)可被釋放,并且權(quán)標(biāo)流可以從 緩沖區(qū)重放。實(shí)例化管理器213實(shí)際上響應(yīng)于其從導(dǎo)航器212接收到的權(quán)標(biāo)流202所表示的實(shí) 例化指令在存儲(chǔ)器214中實(shí)例化對(duì)象。術(shù)語“權(quán)標(biāo)流”參考從導(dǎo)航器212提供給實(shí)例化管 理器213的權(quán)標(biāo)序列來松散地使用,因?yàn)閷?shí)例化管理器213可返回以重放權(quán)標(biāo)流的先前部分。實(shí)例化管理器213還可以用硬件、軟件、固件、或組合來實(shí)現(xiàn),并且甚至可以是在存儲(chǔ)器 中實(shí)例化的對(duì)象,并且可能處于它在其中實(shí)例化對(duì)象的同一存儲(chǔ)器214中。實(shí)例化管理器213能夠訪問類定義的集合204。在所示示例中,實(shí)例化管理器213 能夠訪問三個(gè)特定類定義204A、204B、204C。然而,實(shí)例化管理器213能夠訪問如使用省略 號(hào)204D來象征性地表示的任何數(shù)量(一個(gè)或兩個(gè))的類定義。實(shí)例化管理器213可以在 存儲(chǔ)器214中實(shí)例化任何數(shù)量的對(duì)象。例如,實(shí)例化管理器被示為在存儲(chǔ)器中實(shí)例化了三 個(gè)對(duì)象205A、205B及205C,但實(shí)例化管理器213可以在存儲(chǔ)器中實(shí)例化任何數(shù)量的對(duì)象,如 省略號(hào)205D所示。對(duì)象實(shí)例可以根據(jù)該對(duì)象的對(duì)應(yīng)類定義來在存儲(chǔ)器中進(jìn)行分配。圖3示出供導(dǎo)航器便于響應(yīng)于流權(quán)標(biāo)來實(shí)例化對(duì)象的方法300的流程圖。方法300 可以在每次導(dǎo)航器確定實(shí)例化管理器對(duì)權(quán)標(biāo)流中的下一權(quán)標(biāo)做好準(zhǔn)備時(shí)執(zhí)行(動(dòng)作301)。 回想權(quán)標(biāo)流中的每一權(quán)標(biāo)表示實(shí)例化管理器的某一實(shí)例化上下文。從導(dǎo)航器提供給實(shí)例化管理器的權(quán)標(biāo)流可以是實(shí)況權(quán)標(biāo)流,其中導(dǎo)航器在從讀取 器接收到權(quán)標(biāo)時(shí)就提供這些權(quán)標(biāo)。然而,權(quán)標(biāo)流也可以處于重放模式,在這種情況下,導(dǎo)航 器將來自其緩沖區(qū)的權(quán)標(biāo)提供給實(shí)例化管理器。對(duì)于特定權(quán)標(biāo)流中的第一權(quán)標(biāo),該權(quán)標(biāo)流 是實(shí)況的(判定框302中的“實(shí)況”)。在實(shí)況權(quán)標(biāo)流(判定框302中的“實(shí)況”)的情況下,導(dǎo)航器從讀取器獲得該流的 下一權(quán)標(biāo)(動(dòng)作303)。在拉取機(jī)制中,導(dǎo)航器可以顯式地作出對(duì)來自讀取器的下一權(quán)標(biāo)的 請(qǐng)求,并且作為對(duì)該請(qǐng)求的響應(yīng)來接收該權(quán)標(biāo)。如果權(quán)標(biāo)流中設(shè)置了先前的書簽(判定框 304中的“是”),則導(dǎo)航器緩沖剛從讀取器獲得的權(quán)標(biāo)(動(dòng)作305),并且還將該權(quán)標(biāo)提供給 實(shí)例化管理器(動(dòng)作306)。在緩沖之前將權(quán)標(biāo)提供給實(shí)例化管理器也是可能的。因此,對(duì) 于動(dòng)作305和306而言,沒有相對(duì)的時(shí)序要求。如果權(quán)標(biāo)流中沒有設(shè)置先前的書簽(判定 框304中的“否”),則導(dǎo)航器將權(quán)標(biāo)提供給實(shí)例化管理器(動(dòng)作306)而不必緩沖該權(quán)標(biāo)。在一個(gè)實(shí)施例中,緩沖區(qū)206被實(shí)現(xiàn)成單鏈表,緩沖區(qū)開頭中的每一權(quán)標(biāo)都與該 單鏈表中的一節(jié)點(diǎn)相關(guān)聯(lián)。除該單鏈表中的最終節(jié)點(diǎn)之外,每一節(jié)點(diǎn)還包括到該列表中的 下一節(jié)點(diǎn)的鏈接。使用該權(quán)標(biāo)流的所有書簽共享該鏈表。在實(shí)況權(quán)標(biāo)流(判定框302中的 “實(shí)況”)的情況下,如果不存在先前的書簽(判定框304中的“否”),則緩沖區(qū)中不存在權(quán) 標(biāo)并且該鏈表將具有長(zhǎng)度0。然而,在其中存在先前書簽(判定框304中的“是”)的實(shí)況 權(quán)標(biāo)流(判定框302中的“實(shí)況”)的情況下,則通過在單鏈表中創(chuàng)建附加節(jié)點(diǎn)并將該列表 中的之前的最后節(jié)點(diǎn)鏈接到新創(chuàng)建的附加節(jié)點(diǎn)來將權(quán)標(biāo)添加到該列表中。另一方面,在重放權(quán)標(biāo)流(判定框302中的“重放”)的情況下,導(dǎo)航器提供來自 其緩沖區(qū)的下一權(quán)標(biāo)(動(dòng)作307)而非必須從讀取器獲得下一權(quán)標(biāo)。如果權(quán)標(biāo)流中存在先 前的書簽(判定框308中的“是”),則導(dǎo)航器將來自其緩沖區(qū)的權(quán)標(biāo)提供給實(shí)例化管理器 (動(dòng)作306)。如果權(quán)標(biāo)流中不存在先前的書簽(判定框308中的“否”),則在將該權(quán)標(biāo)提 供給實(shí)例化管理器(動(dòng)作306)之前、同時(shí)、和/或之后,導(dǎo)航器自由地(但不必)釋放與緩 沖該權(quán)標(biāo)相關(guān)聯(lián)的存儲(chǔ)器(動(dòng)作309)。在鏈表實(shí)施例中,在導(dǎo)航器重放來自緩沖區(qū)的權(quán)標(biāo) 時(shí),導(dǎo)航器使造成該重放的書簽前進(jìn)到該鏈表中的下一權(quán)標(biāo)。如果該書簽是該鏈表中的最 早書簽,則該書簽前進(jìn)將不再訪問的已過權(quán)標(biāo)。垃圾收集模塊可周期性地檢測(cè)鏈表中的這 些未使用的模塊,并可以從鏈表中移除這些權(quán)標(biāo)。圖4示出使導(dǎo)航器用書簽來標(biāo)記權(quán)標(biāo)的方法400的流程圖。具體而言,在從實(shí)例
8化管理器接收到用書簽來標(biāo)記特定權(quán)標(biāo)的請(qǐng)求時(shí)啟動(dòng)加書簽(動(dòng)作401)。導(dǎo)航器隨后可用 書簽來標(biāo)記權(quán)標(biāo)(動(dòng)作402),并且還開始緩沖該權(quán)標(biāo)(動(dòng)作403)。當(dāng)然,這一加書簽可以 影響圖3的方法300對(duì)于在該書簽有效時(shí)接收到的后續(xù)權(quán)標(biāo)的流程。圖5示出可使導(dǎo)航器進(jìn)入重放模式從而從先前書簽重放權(quán)標(biāo)流的方法500的流程 圖。具體而言,導(dǎo)航器從實(shí)例化管理器接收重放在特定用書簽標(biāo)記的權(quán)標(biāo)處開始的流權(quán)標(biāo) 的請(qǐng)求(動(dòng)作501)。導(dǎo)航器隨后通過返回到作為要提供給實(shí)例化管理器的下一權(quán)標(biāo)的用書 簽標(biāo)記的權(quán)標(biāo)來進(jìn)入重放模式(動(dòng)作502)。圖6示出供實(shí)例化管理器從導(dǎo)航器接收一組權(quán)標(biāo)的方法600的流程圖。方法600 在每一次實(shí)例化管理器從導(dǎo)航器接收權(quán)標(biāo)時(shí)啟動(dòng)(動(dòng)作601)。一開始,實(shí)例化管理器決定 其當(dāng)前是否能夠履行由接收到的指令所表示的任何實(shí)例化指令(判定框602)。如果實(shí)例化管理器當(dāng)前能夠履行實(shí)例化指令(判定框602中的“是”),則實(shí)例化 管理器確實(shí)履行該實(shí)例化指令(動(dòng)作603)。另外,如果存在先前用書簽標(biāo)記的權(quán)標(biāo),并且實(shí) 例化指令允許實(shí)例化管理器執(zhí)行先前用書簽標(biāo)記的實(shí)例化權(quán)標(biāo)(判定框605中的“是”), 然后實(shí)例化管理器重放在該先前用書簽標(biāo)記的權(quán)標(biāo)處開始的權(quán)標(biāo)(動(dòng)作606)。例如,實(shí)例 化管理器可以向?qū)Ш狡魈峁┲胤胖噶?,從而使得?dǎo)航器執(zhí)行圖5的方法500。否則(判定框 605中的“否”),實(shí)例化管理器簡(jiǎn)單地等待下一權(quán)標(biāo)(動(dòng)作607),可任選地向?qū)Ш狡魍ㄖ獙?shí) 例化管理器對(duì)下一權(quán)標(biāo)已就緒。如果實(shí)例化管理器當(dāng)前不能夠履行實(shí)例化指令(判定框602中的“否”),則實(shí)例 化管理器用書簽標(biāo)記當(dāng)前權(quán)標(biāo)(動(dòng)作608)。例如,實(shí)例化管理器可以請(qǐng)求導(dǎo)航器用書簽標(biāo) 記使得導(dǎo)航器執(zhí)行圖4的方法400的權(quán)標(biāo)。實(shí)例化管理器隨后等待下一權(quán)標(biāo)(動(dòng)作607)。因此,在實(shí)例化管理器不能夠立即對(duì)特定權(quán)標(biāo)進(jìn)行響應(yīng)時(shí),本文描述的各實(shí)施例 準(zhǔn)許重放權(quán)標(biāo)流。實(shí)例化管理器可以用書簽標(biāo)記該權(quán)標(biāo),并在該實(shí)例化管理器變得準(zhǔn)備好 接收該用書簽標(biāo)記的權(quán)標(biāo)所提供的實(shí)例化上下文時(shí)返回以重放在該權(quán)標(biāo)處開始的流?,F(xiàn)在將提供兩個(gè)非常具體的示例。在每一具體示例中,將用》1來提供類定義。另 外,將提供特定權(quán)標(biāo)流和相關(guān)聯(lián)的分層標(biāo)記語言文檔以示出如何根據(jù)具體實(shí)施例來處理權(quán) 標(biāo)。這些示例只是出于說明性目的來提供的。第一示例較簡(jiǎn)單,因?yàn)樗幻枋鲆粚訕?biāo)簽。該 第一示例可被稱為“單書簽”示例。第二示例更加復(fù)雜,并且示出若干層書簽,在此被稱為 “多書簽”示例。在單書簽示例中,目標(biāo)是創(chuàng)建遵循以下定義的類的對(duì)象實(shí)例public class Monster<Tffeapon>{public int SizeInMeters{get ;set ;}public string Name{get ;set ;}}Monster (怪物)類是需要類自變量TWeapon (武器)來分配Monster類的通用類, 因?yàn)镸onster對(duì)象的結(jié)構(gòu)將取決于TWeapon類型自變量。以下是實(shí)例化指令的集合的并行 化形式的示例〈Monster〉<Monster. SizeInMeters>100</Monster. SizeInMeters)
9
<xTypeArguments>Fire</χTypeArguments>〈Monster. Name>Godzi1la</Monster. Name)〈/Monster〉讀取器從位流中提取的對(duì)應(yīng)權(quán)標(biāo)序列將如下表現(xiàn)1 起始元素Monster2起始元素Monster. SizeInMeters (怪物.以米為單位的大小)3 文本1004 結(jié)束元素Monster· SizeInMeters5起始元素x TypeArguments (類型自變量)6 文本Fire(火)7 結(jié)束元素x: TypeArguments8起始元素=Monster. Name (怪物.名稱)9 文本Godzilla(哥斯拉)10 結(jié)束元素Monster. Name11 結(jié)束元素Monster將權(quán)標(biāo)1從導(dǎo)航器提供給實(shí)例化管理器。然而,實(shí)例化管理器尚不能夠創(chuàng)建 Monster對(duì)象,因?yàn)轭愋妥宰兞縏Weapon未知?;叵朐谶@一示例中Monster類是通用類,并 且因此在知道對(duì)象的結(jié)構(gòu)之前需要類型自變量。因?yàn)樯胁恢缹?duì)象的結(jié)構(gòu),實(shí)例化管理器 使得導(dǎo)航器用書簽標(biāo)記權(quán)標(biāo)1,因此導(dǎo)航器緩沖權(quán)標(biāo)1。隨后,導(dǎo)航器將權(quán)標(biāo)2、3和4提供 給實(shí)例化管理器,并且導(dǎo)航器也緩沖這些權(quán)標(biāo)。實(shí)例化管理器仍然不能夠處理權(quán)標(biāo)2-4,因 為Monster對(duì)象尚未創(chuàng)建,并且對(duì)這些權(quán)標(biāo)的遵從需要Monster對(duì)象的存在。導(dǎo)航器隨后將權(quán)標(biāo)5 “起始元素uJypeArguments”提供給實(shí)例化管理器,從而提 示實(shí)例化管理器其將要接收到創(chuàng)建Monster對(duì)象所需的類型自變量。導(dǎo)航器隨后將權(quán)標(biāo)6 “文本Fire”提供給實(shí)例化管理器,這告訴實(shí)例化管理器 Monster類的類型自變量是“Fire”。此時(shí),或可能在實(shí)例化管理器接收到權(quán)標(biāo)7 “結(jié)束元 素X:TypeArgUmentS”后,實(shí)例化管理器知道類型自變量是“Fire”。實(shí)例化管理器指示導(dǎo) 航器從先前書簽處(其在權(quán)標(biāo)1處)重放。在實(shí)例化管理器再次接收到權(quán)標(biāo)1時(shí),其將創(chuàng)建Monster對(duì)象。然而,現(xiàn)在,實(shí)例 化管理器知道了類型自變量將是“Fire”。因此,實(shí)例化管理器創(chuàng)建MonsteKFire〉對(duì)象。 在這一階段,可以從緩沖區(qū)釋放權(quán)標(biāo)1,因?yàn)橹淮嬖谑褂迷摼彌_區(qū)的一個(gè)書簽,并且因?yàn)樵?書簽現(xiàn)在將前進(jìn)到緩沖區(qū)中的權(quán)標(biāo)2。當(dāng)隨后從導(dǎo)航器緩沖區(qū)重放權(quán)標(biāo)2 “起始元素=Monster. SizeInMeters"時(shí),實(shí)例 化管理器準(zhǔn)備好向Monster<Fire>對(duì)象的SizeInMeters屬性進(jìn)行寫入。在這一階段,權(quán)標(biāo) 2可以但不必從緩沖區(qū)釋放。例如,書簽可在緩沖區(qū)的單鏈表表示中前進(jìn)到權(quán)標(biāo)3。隨后, 垃圾收集模塊可檢測(cè)到不再使用鏈表中的表示權(quán)標(biāo)1和2的節(jié)點(diǎn)。當(dāng)重放權(quán)標(biāo)3 “文本100”時(shí),實(shí)例化管理器將值“100”寫到MonsteKFire〉對(duì)象 的SizeInMeters屬性。權(quán)標(biāo)3隨后可以從緩沖區(qū)丟棄。當(dāng)隨后從導(dǎo)航器緩沖區(qū)重放權(quán)標(biāo)4 “結(jié)束元素=Monster. SizeInMeters"時(shí),實(shí)例 化管理器知道向SizelnMeters屬性的寫入已完成。權(quán)標(biāo)4隨后可以從緩沖區(qū)丟棄。
10
當(dāng)從導(dǎo)航器緩沖區(qū)重放權(quán)標(biāo)5到7時(shí),實(shí)例化管理器無需采取動(dòng)作,因?yàn)轭愋妥宰?量已被設(shè)置,并且實(shí)際上是在創(chuàng)建MonsteKFire〉對(duì)象之前需要的。權(quán)標(biāo)5到7隨后可以 從緩沖區(qū)丟棄。當(dāng)實(shí)例化管理器接收到權(quán)標(biāo)8 “起始元素=Monster. Name"時(shí),退出重放模式并進(jìn) 入實(shí)況模式,因?yàn)閷?dǎo)航器現(xiàn)在并非從其緩沖區(qū)(其現(xiàn)在是空的)提供權(quán)標(biāo)而是從訪問位流 的讀取器的權(quán)標(biāo)。實(shí)例化管理器準(zhǔn)備好向MonsteKFire〉對(duì)象的Name屬性進(jìn)行寫入。當(dāng)實(shí)例化管理器接收到權(quán)標(biāo)9 “文本GodZilla”時(shí),值“Godzilla”被寫到 Monster<Fire> 對(duì)象的 Name 屬性。有了權(quán)標(biāo)10 “結(jié)束元素=Monster. Name",實(shí)例化管理器知道其完成了對(duì)Name屬 性的寫入。有了權(quán)標(biāo)11 “結(jié)束元素M0nSter”,實(shí)例化管理器知道其完成了對(duì)MonsteKFire〉 對(duì)象的創(chuàng)建和填充。因此,在該單書簽示例中,準(zhǔn)許實(shí)例化管理器用書簽標(biāo)記權(quán)標(biāo),從而允許實(shí)例化管 理器在其具有與該用書簽標(biāo)記的權(quán)標(biāo)相對(duì)應(yīng)的適當(dāng)上下文時(shí)稍后返回到該權(quán)標(biāo)。雖然進(jìn)行 了一些緩沖,但未緩沖整個(gè)實(shí)例化指令集。下一示例是多書簽示例。在該具體示例中,存在三個(gè)相關(guān)的類定義,針對(duì)City (城 市)的一個(gè),針對(duì)Country (國(guó)家)的一個(gè),以及針對(duì)Monster的新的一個(gè),如下用C#編寫。public class City{public City (Country country);public string Name{get ;set ;}public string Population{get ;set ;}}public class Country{public string Name{get ;set ;}}public class Monster{public Monster(City home);public int SizeInMeters{get ;set ;}public Color SkinColor{get ;set ;}}這是我們希望并行化的標(biāo)記。注意,在該示例中,x:ConstructorArguments (構(gòu)造 函數(shù)自變量)包含要傳遞給構(gòu)造函數(shù)以創(chuàng)建對(duì)象的一串對(duì)象。〈Monster〉<Monster. SizeInMeters>100</Monster. SizeInMeters)<x:ConstructorArguments><City>
<City. Name>Tokyo</City. Name)〈City. Population>12800000</City. Population〉<x:ConstructorArguments><Country><Country. Name>Japan</Country. Name></Country></χ:ConstructorArguments></City></χ:ConstructorArguments><Monster. SkinColor>Green</Monster. SkinColor>〈/Monster〉以下是其作為權(quán)標(biāo)序列的表示1 起始元素Monster2 起始元素Monster. SizeInMeters3 文本1004 結(jié)束元素Monster. SizeInMeters5 起始元素:x ConstructorArguments6起始元素City7起始元素City. Name (城市.名稱)8 文本Tokyo (東京)9 結(jié)束元素City. Name10 起始元素City. Population(城市.人口)11 文本1280000012 結(jié)束元素City. Population13 起始元素:x ConstructorArguments14 起始元素Country15起始元素Country. Name (國(guó)家.名稱)16 文本 Japan(日本)17 結(jié)束元素Country. Name18 結(jié)束元素Country19 結(jié)束元素:x ConstructorArguments20 結(jié)束元素City21 結(jié)束元素:x ConstructorArguments22 起始元素Monster. SkinColor (怪物.膚色)23 文本=Green (綠色)24 結(jié)束元素Monster. SkinColor25 結(jié)束元素:Monster導(dǎo)航器首先確定實(shí)例化管理器對(duì)權(quán)標(biāo)流的第一權(quán)標(biāo)1已就緒。在其中實(shí)例化管理 器驅(qū)動(dòng)導(dǎo)航器的實(shí)施例中,導(dǎo)航器可以接收來自實(shí)例化管理器的就緒指示符。在另一實(shí)施
12例中,可能僅僅是導(dǎo)航器未接收到來自實(shí)例化管理器的“未就緒”指示符,從而使導(dǎo)航器假 定實(shí)例化管理器對(duì)權(quán)標(biāo)流的第一權(quán)標(biāo)1已就緒?;蛘撸瑢?dǎo)航器可簡(jiǎn)單地假定實(shí)例化管理器 總是就緒而不與實(shí)例化管理器進(jìn)行任何通信。在確定實(shí)例化管理器已就緒后,導(dǎo)航器指示讀取器從權(quán)標(biāo)序列獲得第一權(quán)標(biāo)。讀 取器將權(quán)標(biāo)1 “起始元素Monster”提供給導(dǎo)航器。因?yàn)閷?dǎo)航器現(xiàn)在向?qū)嵗芾砥魈峁?權(quán)標(biāo)流實(shí)況,所以導(dǎo)航器將權(quán)標(biāo)1 “起始元素Monster”提供給實(shí)例化管理器。實(shí)例化管理器引用需要City構(gòu)造函數(shù)自變量的Monster類。然而,實(shí)例化管理器 尚未具有City構(gòu)造函數(shù)自變量。因此,實(shí)例化管理器尚不能履行權(quán)標(biāo)1所表示的實(shí)例化指 令。實(shí)例化管理器指示導(dǎo)航器用書簽標(biāo)記權(quán)標(biāo)1。因?yàn)樵谠撌纠写嬖谝褂玫亩鄠€(gè)書簽, 所以這將被稱為“第一”書簽。導(dǎo)航器在權(quán)標(biāo)1 “起始元素Monster”處維護(hù)第一書簽并緩 沖權(quán)標(biāo)1。導(dǎo)航器將繼續(xù)緩沖后續(xù)權(quán)標(biāo),直至釋放該書簽為止。實(shí)例化管理器還可以注意到 將允許實(shí)例化管理器返回到該書簽的事件即,創(chuàng)建了 Monster類的所有構(gòu)造函數(shù)自變量 (即City對(duì)象)。導(dǎo)航器隨后指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)2 “起始元素 Monster. SizelnMeters”提供給導(dǎo)航器。導(dǎo)航器將該權(quán)標(biāo)與權(quán)標(biāo)1 一起緩沖,并將權(quán)標(biāo)2“起 始元素=Monster. SizelnMeters”提供給實(shí)例化管理器。實(shí)例化管理器仍然不能處理權(quán)標(biāo) 1,因?yàn)槿匀恍枰獦?gòu)造函數(shù)自變量。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)3 “文本100”提供給導(dǎo) 航器。導(dǎo)航器緩沖權(quán)標(biāo)1-3,并將權(quán)標(biāo)3 “文本100”提供給實(shí)例化管理器。實(shí)例化管理 器仍然不能采取動(dòng)作,因?yàn)榇藭r(shí)甚至未創(chuàng)建Monster對(duì)象。該過程也對(duì)權(quán)標(biāo)4 “結(jié)束元素 Monster. SizelnMeters,,重復(fù)。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)5 “起始元素 ^ConstructorArguments”提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1_5,并將權(quán)標(biāo)5 “起始元素 ^ConstructorArguments”提供給實(shí)例化管理器。實(shí)例化管理器仍然不能采取動(dòng)作,因?yàn)榇?時(shí)甚至未創(chuàng)建Monster對(duì)象。實(shí)例化管理器可任選地準(zhǔn)備創(chuàng)建構(gòu)造函數(shù)對(duì)象。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)6 “起始元素City”提供 給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1-6,并將權(quán)標(biāo)6 “起始元素City”提供給實(shí)例化管理器。實(shí) 例化管理器仍然不能對(duì)權(quán)標(biāo)1處的第一書簽采取動(dòng)作,因?yàn)榇藭r(shí)甚至未創(chuàng)建Monster對(duì)象。 此外,權(quán)標(biāo)6指示實(shí)例化管理器將City對(duì)象實(shí)例化。實(shí)例化管理器引用City類,但尚不 能實(shí)例化City對(duì)象,因?yàn)樾枰狢ountry構(gòu)造函數(shù)。因此,實(shí)例化管理器指示導(dǎo)航器在權(quán)標(biāo) 6 “起始元素City”處創(chuàng)建另一書簽(“第二”書簽)。因此,現(xiàn)在權(quán)標(biāo)流中存在兩個(gè)書簽, 權(quán)標(biāo)1 “起始元素Monster”處的第一書簽和權(quán)標(biāo)6 “起始元素City”處的第二書簽。導(dǎo) 航器隨后創(chuàng)建第二書簽。實(shí)例化管理器還可以注意到將允許實(shí)例化管理器返回到該第二書 簽的事件即,創(chuàng)建并填充了 Country對(duì)象。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)7“起始元素City. Name" 提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1-7,并將權(quán)標(biāo)7 “起始元素City. Name”提供給實(shí)例化管 理器。實(shí)例化管理器仍然不能對(duì)權(quán)標(biāo)1 “起始元素Monster”處的第一書簽采取動(dòng)作,因?yàn)?此時(shí)甚至未創(chuàng)建Monster對(duì)象。此外,實(shí)例化管理器不能對(duì)權(quán)標(biāo)6 “起始元素City”處的 第二書簽采取動(dòng)作,因?yàn)樯形磩?chuàng)建City對(duì)象,因?yàn)樾枰狢ountry構(gòu)造函數(shù)自變量。這一過
13程對(duì)權(quán)標(biāo) 8 “文本Tokyo”、9 “結(jié)束元素=City. NameMO “起始元素=City. Population", 11 “文本:12800000”、以及12 “結(jié)束元素City. Population”重復(fù)。每一個(gè)都作為實(shí)況權(quán) 標(biāo)流從導(dǎo)航器提供給實(shí)例化管理器,每一個(gè)都由導(dǎo)航器緩沖,并且實(shí)例化管理器不能對(duì)它 們做任何事情,因?yàn)镸onster和City對(duì)象尚未被創(chuàng)建。在導(dǎo)航器將權(quán)標(biāo)13 “起始元素ufonstructorArguments”提供給實(shí)例化管理器 時(shí),提示實(shí)例化管理器將要提供City類的構(gòu)造函數(shù)自變量。在這一階段,導(dǎo)航器緩沖權(quán)標(biāo) 1-13。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)14 “起始元素C0Untry” 提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1-14,并將權(quán)標(biāo)14 “起始元素C0Untry”提供給實(shí)例化管 理器。這一權(quán)標(biāo)指示實(shí)例化管理器將Country對(duì)象實(shí)例化。Country類被引用。在可分配 Country對(duì)象之前不需要構(gòu)造函數(shù)、類型自變量、或任何其他信息。因此,實(shí)例化管理器在存 儲(chǔ)器中分配Country對(duì)象,如Country類所定義的。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)15 “起始元素=Coimtry. Name”提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1_15,并將權(quán)標(biāo)15 “起始元素=Coimtry. Name”提供 給實(shí)例化管理器。實(shí)例化管理器準(zhǔn)備好向新實(shí)例化的Country對(duì)象的Name屬性寫入值。導(dǎo)航器指示讀取器從位流獲得下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)16 “文本Japan”提供給 導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1-16,并將權(quán)標(biāo)16 “文本Japan”提供給實(shí)例化管理器。實(shí)例化 管理器向Country對(duì)象的Name屬性寫入值“Japan”。讀取器將權(quán)標(biāo)17 “結(jié)束元素=Coimtry. Name"提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo) 1-17,并將權(quán)標(biāo)17提供給實(shí)例化管理器。實(shí)例化管理器注意到其現(xiàn)在完成了對(duì)Country對(duì) 象的Name屬性的寫入。讀取器將權(quán)標(biāo)18 “結(jié)束元素C0Untry”提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1_18,并 將權(quán)標(biāo)18提供給實(shí)例化管理器。實(shí)例化管理器注意到其現(xiàn)在完成了對(duì)Country對(duì)象的實(shí) 例化和填充。實(shí)例化管理器現(xiàn)在具有Country對(duì)象來用作City對(duì)象的構(gòu)造函數(shù),并且現(xiàn)在 可創(chuàng)建City對(duì)象。這是將允許實(shí)例化管理器返回到第二書簽的事件。實(shí)例化管理器指示 導(dǎo)航器重放在最后書簽處(在該示例中這是權(quán)標(biāo)6處的第二書簽)開始的權(quán)標(biāo)流。隨后移 除第二書簽,從而只留下權(quán)標(biāo)1 “起始元素Monster”處的第一書簽。不需要來自讀取器的任何信息,導(dǎo)航器從其緩沖區(qū)中將權(quán)標(biāo)6 “起始元素City” 提供給實(shí)例化管理器。實(shí)例化管理器注意到它擁有了 City類的所有構(gòu)造函數(shù)自變量,并且 因而實(shí)例化City對(duì)象。實(shí)例化管理器仍然不能處理權(quán)標(biāo)1,因?yàn)榧词箤?shí)例化了 City對(duì)象它 也尚未足夠準(zhǔn)備好用作Monster對(duì)象的構(gòu)造函數(shù)自變量。導(dǎo)航器隨后將權(quán)標(biāo)7 “起始元素City. Name”從其緩沖區(qū)中提供給實(shí)例化管理器。 實(shí)例化管理器準(zhǔn)備好向City對(duì)象的Name字段進(jìn)行寫入。導(dǎo)航器隨后將權(quán)標(biāo)8 “文本Tokyo”從其緩沖區(qū)中提供給實(shí)例化管理器。實(shí)例化 管理器寫入“Tokyo”作為City對(duì)象的Name字段的值。導(dǎo)航器隨后將權(quán)標(biāo)9 “結(jié)束元素City. Name”從其緩沖區(qū)中提供給實(shí)例化管理器。 實(shí)例化管理器注意到,Name屬性的值寫入操作已完成。導(dǎo)航器隨后將權(quán)標(biāo)10 “起始元素City. Population”從其緩沖區(qū)中提供給實(shí)例化 管理器。實(shí)例化管理器準(zhǔn)備好向City對(duì)象的Population字段寫入值。
導(dǎo)航器隨后將權(quán)標(biāo)11 “文本12800000”從其緩沖區(qū)中提供給實(shí)例化管理器。實(shí) 例化管理器向City對(duì)象的Population屬性寫入值“ 12800000”。導(dǎo)航器隨后將權(quán)標(biāo)12 “結(jié)束元素City. Population”從其緩沖區(qū)中提供給實(shí)例化 管理器。實(shí)例化管理器注意到,對(duì)Population屬性的寫入操作已完成。導(dǎo)航器隨后將權(quán)標(biāo)13 “起始元素ufonstructorArguments”從其緩沖區(qū)中提供 給實(shí)例化管理器。實(shí)例化管理器準(zhǔn)備好用構(gòu)造函數(shù)自變量來填充City對(duì)象。導(dǎo)航器隨后將權(quán)標(biāo)14 “起始元素C0Untry”從其緩沖區(qū)中提供給實(shí)例化管理器。 實(shí)例化管理器已經(jīng)創(chuàng)建了 Country對(duì)象,并且因而用該Country對(duì)象填充City對(duì)象。導(dǎo)航器隨后順序地將權(quán)標(biāo)14-18從其緩沖區(qū)中提供給實(shí)例化管理器。然而,實(shí)例 化管理器已經(jīng)執(zhí)行了這些權(quán)標(biāo)所需的動(dòng)作,因?yàn)镃ountry對(duì)象已被創(chuàng)建。因此,權(quán)標(biāo)14-48 無需特別的動(dòng)作。在一個(gè)實(shí)施例中,在對(duì)特定權(quán)標(biāo)采取動(dòng)作時(shí),該權(quán)標(biāo)可被標(biāo)志成完成,使 得在向?qū)嵗芾砥髦胤艡?quán)標(biāo)流時(shí)導(dǎo)航器甚至不提供該權(quán)標(biāo)。在這種情況下,例如,權(quán)標(biāo) 14-18可被標(biāo)志?;蛘?,實(shí)例化管理器可以查看標(biāo)志并嘗試不采取動(dòng)作。導(dǎo)航器隨后準(zhǔn)備將下一權(quán)標(biāo)(權(quán)標(biāo)19)發(fā)送到實(shí)例化管理器。然而,導(dǎo)航器只具 有在這一階段緩沖的權(quán)標(biāo)1-18。導(dǎo)航器因此退出重放模式并再次進(jìn)入實(shí)況模式。導(dǎo)航器因 而向讀取器請(qǐng)求下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)19 “結(jié)束元素fonstructorArguments”提供給 導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1-19 (因?yàn)槿匀淮嬖谙惹皶?,并將權(quán)標(biāo)19提供給實(shí)例化管理 器。實(shí)例化管理器注意到,City對(duì)象的構(gòu)造函數(shù)自變量已完成。讀取器將權(quán)標(biāo)20“結(jié)束元素City”提供給導(dǎo)航器。導(dǎo)航器緩沖權(quán)標(biāo)1_20,并將權(quán) 標(biāo)20提供給實(shí)例化管理器。實(shí)例化管理器注意到,City對(duì)象現(xiàn)在已完成。因?yàn)镃ity對(duì)象 已完成,所以實(shí)例化管理器現(xiàn)在準(zhǔn)備好處理需要City對(duì)象作為構(gòu)造函數(shù)自變量的權(quán)標(biāo)1。 實(shí)例化管理器注意到,發(fā)生了與返回到第一書簽相對(duì)應(yīng)的事件。實(shí)例化管理器指示導(dǎo)航器 從最后書簽處重放,該最后書簽是權(quán)標(biāo)1 “起始元素Monster”處的第一書簽,因?yàn)樵跈?quán)標(biāo) 6處的第二書簽之前已被刪除。導(dǎo)航器從權(quán)標(biāo)1處重放,并刪除第一權(quán)標(biāo)。導(dǎo)航器將權(quán)標(biāo)1 “起始元素Monster” 從其緩沖區(qū)中提供給實(shí)例化管理器。實(shí)例化管理器引用Monster類,并注意到其現(xiàn)在包含 Monster類的所有構(gòu)造函數(shù)自變量(即City對(duì)象),并且因而分配Monster對(duì)象。可任選 地,因?yàn)闄?quán)標(biāo)流中沒有更多書簽,所以在將權(quán)標(biāo)提供給實(shí)例化管理器時(shí)導(dǎo)航器可以從其緩 沖區(qū)中釋放每一權(quán)標(biāo)?;蛘?,一旦緩沖區(qū)的重放完成并且導(dǎo)航器再次進(jìn)入實(shí)況模式且權(quán)標(biāo) 流中沒有剩余書簽,則導(dǎo)航器可以釋放整個(gè)緩沖區(qū)。導(dǎo)航器將權(quán)標(biāo)2 “起始元素=Monster. SizelnMeters”從其緩沖區(qū)中提供給實(shí)例化 管理器。實(shí)例化管理器準(zhǔn)備好向Monster對(duì)象的SizelnMeters屬性寫入值??扇芜x地,權(quán) 標(biāo)2隨后從緩沖區(qū)中釋放,但如上所述,緩沖區(qū)可以稍后釋放。導(dǎo)航器將權(quán)標(biāo)3 “文本100”從其緩沖區(qū)中提供給實(shí)例化管理器。實(shí)例化管理器 向Monster對(duì)象的SizelnMeters屬性寫入值“100”。導(dǎo)航器將權(quán)標(biāo)4 “結(jié)束元素=Monster. SizelnMeters”從其緩沖區(qū)中提供給實(shí)例化 管理器。實(shí)例化管理器注意到其完成了對(duì)Monster對(duì)象的SizelnMeters屬性的寫入。導(dǎo)航器將權(quán)標(biāo)5 “起始元素ufonstructorArguments”從其緩沖區(qū)中提供給實(shí)例 化管理器。實(shí)例化管理器準(zhǔn)備好用構(gòu)造函數(shù)自變量來填充Monster對(duì)象。
導(dǎo)航器將權(quán)標(biāo)6 “起始元素City”從其緩沖區(qū)中提供給實(shí)例化管理器。實(shí)例化管 理器使用City對(duì)象來填充Monster對(duì)象。導(dǎo)航器一次一個(gè)地將權(quán)標(biāo)7-20依次從其緩沖區(qū)提供給實(shí)例化管理器。實(shí)例化管 理器基本上不采取響應(yīng)于權(quán)標(biāo)7-02的動(dòng)作,因?yàn)镃ity對(duì)象已被構(gòu)造。因?yàn)閷?dǎo)航器重放了 其緩沖區(qū)中的所有權(quán)標(biāo)(即,權(quán)標(biāo)1-20),所以導(dǎo)航器不再緩沖各權(quán)標(biāo)并且現(xiàn)在進(jìn)入實(shí)況模 式,在該模式中從讀取器獲取新權(quán)標(biāo)。導(dǎo)航器請(qǐng)求讀取器提供位流中的下一權(quán)標(biāo)。讀取器將權(quán)標(biāo)21 “結(jié)束元素 ^ConstructorArguments”提供給導(dǎo)航器。導(dǎo)航器處于實(shí)況模式,且權(quán)標(biāo)流中當(dāng)前沒有書 簽。因此,無需緩沖權(quán)標(biāo)21。相反,導(dǎo)航器在不緩沖的情況下將權(quán)標(biāo)21提供給實(shí)例化管理 器。實(shí)例化管理器注意到,Monster對(duì)象的構(gòu)造函數(shù)自變量已完成。讀取器將權(quán)標(biāo)22 “起始元素=Monster. SkinColor”提供給導(dǎo)航器,導(dǎo)航器在不 緩沖的情況下將該權(quán)標(biāo)中繼給實(shí)例化管理器。實(shí)例化管理器準(zhǔn)備好向Monster對(duì)象的 SkinColor屬性寫入值。讀取器將權(quán)標(biāo)23 “文本Green”提供給導(dǎo)航器,導(dǎo)航器在不緩沖的情況下將該權(quán) 標(biāo)中繼給實(shí)例化管理器。實(shí)例化管理器向Monster對(duì)象的SkinColor屬性寫入值“Green”。讀取器將權(quán)標(biāo)24 “結(jié)束元素=Monster. SkinColor”提供給導(dǎo)航器,導(dǎo)航器在不緩 沖的情況下將該權(quán)標(biāo)中繼給實(shí)例化管理器。實(shí)例化管理器注意到,其完成了對(duì)SkinColor 屬性的值寫入操作。讀取器將權(quán)標(biāo)25 “結(jié)束元素Monster”提供給導(dǎo)航器,導(dǎo)航器在不緩沖的情況下 將該權(quán)標(biāo)中繼給實(shí)例化管理器。實(shí)例化管理器注意到,其完成了對(duì)Monster對(duì)象的創(chuàng)建。實(shí) 例化管理器也已響應(yīng)于權(quán)標(biāo)流的所有實(shí)例化指令完成。雖然執(zhí)行了一些緩沖,但這一緩沖小于權(quán)標(biāo)流中的所有權(quán)標(biāo)。使用本文描述的實(shí) 施例,即使權(quán)標(biāo)流不是以實(shí)例化管理器總是知道如何處理特定實(shí)例化權(quán)標(biāo)的方式來編寫 的,也可以評(píng)估一些權(quán)標(biāo)流而只緩沖整個(gè)權(quán)標(biāo)流的一小部分。因此,在不需要權(quán)標(biāo)流的任何 特殊結(jié)構(gòu)要求的情況下降低了基于權(quán)標(biāo)流的實(shí)例化的緩沖要求。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在 所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利要求書而 非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán)利要求書 的范圍所涵蓋。
1權(quán)利要求
一種供流權(quán)標(biāo)導(dǎo)航器(212)向?qū)嵗芾砥?213)提供一組流權(quán)標(biāo)(203)的方法,所述一組流權(quán)標(biāo)表示實(shí)例化指令的集合,所述方法包括所述導(dǎo)航器接收表示實(shí)例化指令的特定權(quán)標(biāo)的動(dòng)作(303);所述導(dǎo)航器一開始將所述特定權(quán)標(biāo)提供給所述實(shí)例化管理器的動(dòng)作(動(dòng)作306);所述導(dǎo)航器從所述實(shí)例化管理器接收在所述特定權(quán)標(biāo)處用書簽來標(biāo)記所述一組流權(quán)標(biāo)的請(qǐng)求的動(dòng)作(401),其中所述書簽指示所述導(dǎo)航器要緩沖至少在所述特定權(quán)標(biāo)處開始的所述一組流數(shù)據(jù);所述導(dǎo)航器接收所述一組流權(quán)標(biāo)的一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的動(dòng)作(303);所述導(dǎo)航器緩沖所述特定權(quán)標(biāo)和所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的動(dòng)作(305);所述導(dǎo)航器一開始將所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)提供給所述實(shí)例化管理器的動(dòng)作(306);在所述導(dǎo)航器一開始將所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)提供給所述實(shí)例化管理器后,所述導(dǎo)航器從所述實(shí)例化管理器接收重放在所述特定權(quán)標(biāo)處開始的所述一組流權(quán)標(biāo)的請(qǐng)求的動(dòng)作(501);以及響應(yīng)于來自所述實(shí)例化管理器的重放請(qǐng)求,導(dǎo)航器將所述特定權(quán)標(biāo)和所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)以其在所述一組流權(quán)標(biāo)內(nèi)的正確次序重放給所述實(shí)例化管理器的動(dòng)作(502)。
2.如權(quán)利要求1所述的方法,其特征在于,所述特定權(quán)標(biāo)是所述一組流權(quán)標(biāo)的第一個(gè) 權(quán)標(biāo)。
3.如權(quán)利要求1所述的方法,其特征在于,所述特定權(quán)標(biāo)是所述一組流權(quán)標(biāo)的中間權(quán)標(biāo)。
4.如權(quán)利要求3所述的方法,其特征在于,還包括在所述導(dǎo)航器一開始將所述特定權(quán) 標(biāo)提供給所述實(shí)例化管理器的動(dòng)作之前的以下動(dòng)作;所述導(dǎo)航器接收所述一組流權(quán)標(biāo)中的先前權(quán)標(biāo)的動(dòng)作; 所述導(dǎo)航器一開始將所述先前權(quán)標(biāo)提供給所述實(shí)例化管理器的動(dòng)作; 所述導(dǎo)航器從所述實(shí)例化管理器接收在所述先前權(quán)標(biāo)處用書簽來標(biāo)記所述一組流權(quán) 標(biāo)的請(qǐng)求的動(dòng)作,其中所述書簽指示所述導(dǎo)航器至少要在所述先前權(quán)標(biāo)處開始進(jìn)行緩沖; 以及所述導(dǎo)航器緩沖所述先前權(quán)標(biāo)、以及所述權(quán)標(biāo)流中的所述先前權(quán)標(biāo)與所述特定權(quán)標(biāo)之 間的任何居間權(quán)標(biāo)的動(dòng)作。
5.如權(quán)利要求4所述的方法,其特征在于,還包括在所述導(dǎo)航器重放所述特定權(quán)標(biāo)和 所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的動(dòng)作之后的以下動(dòng)作所述導(dǎo)航器從所述實(shí)例化管理器接收重放在所述先前權(quán)標(biāo)處開始的所述一組流權(quán)標(biāo) 的請(qǐng)求的動(dòng)作;以及響應(yīng)于來自所述實(shí)例化管理器的在所述先前權(quán)標(biāo)處開始進(jìn)行重放的請(qǐng)求,所述導(dǎo)航器 向所述實(shí)例化管理器重放所述先前權(quán)標(biāo)、所述先前權(quán)標(biāo)與所述特定權(quán)標(biāo)之間的任何居間權(quán) 標(biāo)、所述特定權(quán)標(biāo)、以及所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的動(dòng)作。
6.如權(quán)利要求5所述的方法,其特征在于,還包括在所述先前權(quán)標(biāo)處開始進(jìn)行重放的 動(dòng)作之后和/或同時(shí)的以下動(dòng)作釋放包括所述先前權(quán)標(biāo)、所述先前權(quán)標(biāo)與所述特定權(quán)標(biāo)之間的任何居間權(quán)標(biāo)、所述特定權(quán)標(biāo)、以及所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的緩沖區(qū)的動(dòng)作。
7.如權(quán)利要求1所述的方法,其特征在于,還包括在所述特定權(quán)標(biāo)處開始進(jìn)行重放的 動(dòng)作之后和/或同時(shí)的以下動(dòng)作釋放包括所述先前權(quán)標(biāo)、所述先前權(quán)標(biāo)與所述特定權(quán)標(biāo)之間的任何居間權(quán)標(biāo)、所述特 定權(quán)標(biāo)、以及所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的緩沖區(qū)的動(dòng)作。
8.一種供實(shí)例化管理器(213)從導(dǎo)航器(202)接收一組權(quán)標(biāo)(203)的方法,所述導(dǎo)航 器接收所述一組權(quán)標(biāo)作為流權(quán)標(biāo),所述一組權(quán)標(biāo)表示實(shí)例化指令的集合,所述方法包括所述實(shí)例化管理器從導(dǎo)航器接收所述一組權(quán)標(biāo)中的特定權(quán)標(biāo)的動(dòng)作(601),所述導(dǎo)航 器被配置成接收所述一組權(quán)標(biāo)作為流權(quán)標(biāo),所述特定權(quán)標(biāo)表示一實(shí)例化指令;所述實(shí)例化管理器確定所述實(shí)例化管理器尚不能操作由所述特定權(quán)標(biāo)所表示的實(shí)例 化指令的動(dòng)作(602);所述實(shí)例化管理器指示所述導(dǎo)航器在所述特定權(quán)標(biāo)處用書簽標(biāo)記所述一組權(quán)標(biāo)的動(dòng) 作(603);所述實(shí)例化管理器從所述導(dǎo)航器接收所述一組權(quán)標(biāo)的一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的動(dòng)作 (601);確定所述一個(gè)或多個(gè)后續(xù)權(quán)標(biāo)的最后權(quán)標(biāo)準(zhǔn)許所述實(shí)例化管理器操作由所述特定權(quán) 標(biāo)所表示的實(shí)例化指令的動(dòng)作(602、603、605);以及重放在所述特定用書簽標(biāo)記的權(quán)標(biāo)處開始的所述一組權(quán)標(biāo)的動(dòng)作(606)。
9.如權(quán)利要求8所述的方法,其特征在于,所述權(quán)標(biāo)集合中的每一權(quán)標(biāo)包括標(biāo)記語言 文檔的一部分。
10.如權(quán)利要求8所述的方法,其特征在于,所述特定權(quán)標(biāo)表示實(shí)例化特定類的對(duì)象的 指令,其中所述實(shí)例化管理器確定所述實(shí)例化管理器尚不能操作由所述特定權(quán)標(biāo)所表示的 實(shí)例化指令的動(dòng)作包括以下動(dòng)作在可分配所述特定類的對(duì)象之前確定需要一個(gè)或多個(gè)信息項(xiàng)的動(dòng)作。
11.如權(quán)利要求10所述的方法,其特征在于,所述特定類是通用類,所述一個(gè)或多個(gè)信 息項(xiàng)至少包括準(zhǔn)許標(biāo)識(shí)所述通用類中的具體類的類型自變量。
12.如權(quán)利要求10所述的方法,其特征在于,所述一個(gè)或多個(gè)信息項(xiàng)至少包括一個(gè)或 多個(gè)構(gòu)造函數(shù)自變量。
13.如權(quán)利要求8所述的方法,其特征在于,所述一組流權(quán)標(biāo)中的每一個(gè)表示實(shí)例化上 下文,但并非所述一組流權(quán)標(biāo)中的全部都表示實(shí)際的實(shí)例化指令。
14.如權(quán)利要求8所述的方法,其特征在于,重放在所述特定用書簽標(biāo)記的權(quán)標(biāo)處開始 的所述一組權(quán)標(biāo)的動(dòng)作包括所述實(shí)例化管理器指示所述導(dǎo)航器重放在所述特定權(quán)標(biāo)處開始的所述一組權(quán)標(biāo)的動(dòng)作;所述實(shí)例化管理器從所述導(dǎo)航器接收在所述特定權(quán)標(biāo)處開始的所述一組權(quán)標(biāo)的重放 的動(dòng)作;以及在所述實(shí)例化管理器接收在所述特定權(quán)標(biāo)處開始的所述一組權(quán)標(biāo)的重放時(shí),所述實(shí)例 化管理器遵循從所述導(dǎo)航器接收到的實(shí)例化指令的動(dòng)作。
15.如權(quán)利要求8所述的方法,其特征在于,所述導(dǎo)航器緩沖少于所述一組權(quán)標(biāo)的全部。
16.一種包括其上具有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序 產(chǎn)品(104),當(dāng)所述指令由計(jì)算系統(tǒng)(100)的一個(gè)或多個(gè)處理器(102)執(zhí)行時(shí),使所述計(jì)算 系統(tǒng)實(shí)例化導(dǎo)航器(202)和實(shí)例化管理器(213),其中所述導(dǎo)航器被配置成接收一組流權(quán)標(biāo)(112),并將所述一組流權(quán)標(biāo)(203)提供給 所述實(shí)例化管理器,所述導(dǎo)航器還被配置成即使是在所述一組流位置的中間也用書簽標(biāo)記 所述一組流權(quán)標(biāo),并且被配置成重放在書簽處開始的所述一組流權(quán)標(biāo);以及其中所述實(shí)例化管理器被配置成對(duì)從所述導(dǎo)航器接收到的每一權(quán)標(biāo)執(zhí)行以下動(dòng)作確定所述實(shí)例化管理器當(dāng)前是否能夠履行由接收到的權(quán)標(biāo)所表示的實(shí)例化指令 (602);如果所述實(shí)例化管理器當(dāng)前能夠履行所述實(shí)例化指令,則履行所述實(shí)例化指令(603);以及如果所述實(shí)例化管理器當(dāng)前不能夠履行所述實(shí)例化指令,則指示所述導(dǎo)航器用書簽標(biāo) 記所述權(quán)標(biāo)(608),因此在所述實(shí)例化管理器接收到準(zhǔn)許所述導(dǎo)航器履行由所述用書簽標(biāo) 記的權(quán)標(biāo)所表示的實(shí)例化指令的后續(xù)權(quán)標(biāo)(602)時(shí),所述實(shí)例化管理器履行由所述用書簽 標(biāo)記的權(quán)標(biāo)所表示的實(shí)例化指令(603),并重放所述一組流權(quán)標(biāo)中的后續(xù)權(quán)標(biāo)(606)。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)計(jì)算機(jī)可讀 介質(zhì)是物理存儲(chǔ)器和/或存儲(chǔ)介質(zhì)。
18.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述導(dǎo)航器還被配置成控制 一緩沖區(qū),響應(yīng)于來自所述實(shí)例化管理器的書簽指令可在所述緩沖區(qū)中緩沖少于所述一組 權(quán)標(biāo)中的全部權(quán)標(biāo)。
19.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述實(shí)例化管理器能夠訪問 類定義的集合。
20.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可讀介質(zhì)上還具 有所述類定義。
全文摘要
對(duì)一組流權(quán)標(biāo)中的權(quán)標(biāo)加書簽,每一個(gè)權(quán)標(biāo)都表示實(shí)例化指令或?qū)嵗舷挛?。?dǎo)航器接收一組流權(quán)標(biāo),并將這些權(quán)標(biāo)提供給實(shí)例化管理器。然而,如果導(dǎo)航器接收到用書簽來標(biāo)記特定權(quán)標(biāo)的指令,則導(dǎo)航器緩沖至少在該用書簽標(biāo)記的權(quán)標(biāo)處開始(并且在存在先前書簽的情況下甚至可能更早)的該組流指令。導(dǎo)航器響應(yīng)于來自實(shí)例化管理器的指令來重放在書簽處開始的該組流權(quán)標(biāo)。實(shí)例化管理器接收該組流權(quán)標(biāo)。如果實(shí)例化管理器目前不能處理特定權(quán)標(biāo)的指令,則實(shí)例化管理器指示導(dǎo)航器用書簽來標(biāo)記該特定權(quán)標(biāo)。在實(shí)例化管理器稍后接收到準(zhǔn)許該實(shí)例化管理器返回到該書簽的權(quán)標(biāo)時(shí),該實(shí)例化管理器返回到書簽以重放在該書簽處開始的實(shí)例化指令。
文檔編號(hào)G06F15/16GK101925889SQ200880125603
公開日2010年12月22日 申請(qǐng)日期2008年12月29日 優(yōu)先權(quán)日2008年1月25日
發(fā)明者C·L·安德森, J·C·施利梅爾, J·D·多蒂, M·J·加金 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宜都市| 丰都县| 吕梁市| 同德县| 宁城县| 灵武市| 永泰县| 阜南县| 麻江县| 永和县| 吉木萨尔县| 苏州市| 宜黄县| 金溪县| 土默特右旗| 辰溪县| 贵溪市| 南平市| 全南县| 修武县| 綦江县| 湟源县| 临汾市| 大竹县| 遵义市| 丹凤县| 湾仔区| 鹤山市| 武强县| 呼伦贝尔市| 沙坪坝区| 襄垣县| 临泽县| 临沂市| 大理市| 翁牛特旗| 永兴县| 惠安县| 嘉黎县| 夏邑县| 伽师县|