国产精品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>

      簡化具有動態(tài)庫的接口的方法

      文檔序號:6581004閱讀:169來源:國知局
      專利名稱:簡化具有動態(tài)庫的接口的方法
      技術(shù)領(lǐng)域
      本發(fā)明總體涉及計算機(jī)編程領(lǐng)域,以及更具體地,涉及一種用來簡化具有動態(tài)庫 的接口的系統(tǒng)、方法、和計算機(jī)編程產(chǎn)品。
      背景技術(shù)
      利用動態(tài)庫可以用于避免將代碼轉(zhuǎn)載入內(nèi)存直至需要所述代碼用來實現(xiàn)計算機(jī) 程序。包括弱符號鏈接功能性的鏈接器允許計算機(jī)程序的主代碼引用動態(tài)庫中的符號而不 產(chǎn)生鏈接時(link-time)錯誤。但是,這種類型的鏈接器隨后在使用符號時會要求引用這 些符號的代碼檢查運行(rim-time)錯誤。另外,一些鏈接器不支持弱符號鏈接,和/或在 一些情況下可禁用弱符號鏈接。在這些情形中,所述計算機(jī)程序的主代碼段可能無法引用 動態(tài)庫中的符號而不產(chǎn)生鏈接時錯誤??商鎿Q地,另一種方法可要求可能被主代碼引用的動態(tài)庫中的所有符號被包括 在符號表中。在這種實施方式下,所述主代碼隨后在引用這些符號時使用符號表查詢 路由檢查它們的存在。然后,當(dāng)找到所需符號時,可以通過指針去訪問它以避免鏈接時 (link-time)錯誤。該技術(shù)會給計算機(jī)編程環(huán)境引入不必要的復(fù)雜性,同時增加所述符號表 的大小,并需要特別的運行(rim-time)來實現(xiàn)和檢驗符號表查詢的結(jié)果。

      發(fā)明內(nèi)容
      一種方法可以包括定義一包含具有實現(xiàn)指針的靜態(tài)成員的接口類。所述方法也 可以包括加載一包含所述接口類的存根實現(xiàn)的主代碼段。此外,所述方法可以包括實例化 所述接口類的所述存根實現(xiàn)以提供一存根實現(xiàn)對象。所述接口類的所述存根實現(xiàn)可以包 括第一構(gòu)造函數(shù),該第一構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象。進(jìn) 一步,所述方法可以包括加載一包含所述接口類的實實現(xiàn)(real implementation)的動 態(tài)庫。更進(jìn)一步,所述方法可包括實例化所述接口類的所述實實現(xiàn)以提供一實實現(xiàn)(real implementation)對象。所述接口類的所述實實現(xiàn)包括第二構(gòu)造函數(shù),該第二構(gòu)造函數(shù)被配 置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象。一種計算機(jī)編程產(chǎn)品可包括承載一個或多個指令的信號承載介質(zhì),用于定義一包 含具有實現(xiàn)指針的靜態(tài)成員的接口類。所述計算機(jī)編程產(chǎn)品也可包括一個或多個指令,用 于加載一包含所述接口類的一存根實現(xiàn)的主代碼段。此外,所述計算機(jī)編程產(chǎn)品可包括一 個或多個指令,用于實例化所述接口類的存根實現(xiàn)以提供一存根實現(xiàn)對象。所述接口類的 存根實現(xiàn)可以包括第一構(gòu)造函數(shù),該第一構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述存 根實現(xiàn)對象。進(jìn)一步,所述計算機(jī)編程產(chǎn)品可包括一個或多個指令,用于加載一包含所述接 口類的實實現(xiàn)的動態(tài)庫。更進(jìn)一步,所述計算機(jī)編程產(chǎn)品可包括一個或多個指令,用于實例 化所述接口類的實實現(xiàn)以提供一實實現(xiàn)對象。 述接口類的實實現(xiàn)可以包括第二構(gòu)造函 數(shù),該第二構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象。一種系統(tǒng)可包括計算設(shè)備和在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備定義一包含具有實現(xiàn)指針的靜態(tài)成員的接口類的指令。所述系統(tǒng)也可包括在所述計算設(shè)備上執(zhí)行時 使所述計算設(shè)備加載一包含所述接口類的存根實現(xiàn)的主代碼段的指令。此外,所述系統(tǒng)可 包括在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備實例化所述接口類的存根實現(xiàn)以提供一存 根實現(xiàn)對象的指令。所述接口類的存根實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述存根 實現(xiàn)對象的第一構(gòu)造函數(shù)。進(jìn)一步地,所述系統(tǒng)可包括在所述計算設(shè)備上執(zhí)行時使所述計 算設(shè)備加載一包含所述接口類的實實現(xiàn)的動態(tài)庫的指令。更進(jìn)一步地,所述系統(tǒng)可包括在 所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備實例化所述接口類的實實現(xiàn)以提供一實實現(xiàn)對象 的指令。所述接口類的實實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象的第二 構(gòu)造函數(shù)。應(yīng)該理解上述的一般描述和以下的具體描述都僅僅是示范性和解釋性的,并不是 對本發(fā)明公開內(nèi)容的強制限制。附圖被結(jié)合入且組成本說明書的一部分,解釋了公開的主 題。上述描述和附圖用來一起解釋本發(fā)明所公開的原理。


      本發(fā)明公開的多個優(yōu)點可參照下面的附圖更容易被本領(lǐng)域技術(shù)人員所理解圖1是本發(fā)明所述的表示多個類的類方框圖;圖2是本發(fā)明所述的表示一種方法的流程圖;圖3是本發(fā)明所述的一種計算機(jī)編程產(chǎn)品的局部視圖;和圖4是本發(fā)明所述的一種示例系統(tǒng)的局部視圖。
      具體實施方案現(xiàn)在將詳細(xì)說明在附圖中示出的公開的主題??傮w參照圖1到圖2,根據(jù)本發(fā)明描述了一種方法200??傮w而言,方法200使用 C++繼承技術(shù)結(jié)合加強單例模式(帶有能修改的實現(xiàn)指針)。這樣,即使在特定庫未被加載 時,方法200仍可提供對動態(tài)庫符號的訪問。例如,需要由主代碼段102訪問的動態(tài)庫100 中的符號可以作為抽象C++單例接口類的成員被包含。所述動態(tài)庫100包括一個含有所述 接口 108的實實現(xiàn)104的C++單例類,以及所述主代碼段102包括另一個含有所述接口 108 的存根實現(xiàn)106的C++單例類。與單例設(shè)計模式中一樣,所述接口類的靜態(tài)成員包含指向 所述實現(xiàn)類的指針。最初此指針指向存根實現(xiàn)對象,但是當(dāng)所述動態(tài)庫100被加載時,構(gòu)造 函數(shù)修改所述指針以指向來自所述動態(tài)庫100的實實現(xiàn)對象。應(yīng)該注意到,下面描述使用了具有一些特性的C++語法和結(jié)構(gòu)。例如,下面描述包 括接口類,其被描述為增強單例接口類。更具體地,所述增強單例接口類作為抽象C++單例 接口類被實現(xiàn)。但是,應(yīng)該理解的是上述描述是以解釋的形式提供的,并不意味著對本發(fā)明 進(jìn)行限制。例如,當(dāng)下面的描述是在引用C++時,任何使用封裝和/或包括類似C++的繼承 特征的編程語言都能用于本發(fā)明中。在一個特定實施例中,可以使用C編程語言。在C實 現(xiàn)中,下面描述的存根實現(xiàn)可包括第一陣列的指針,同時所述實實現(xiàn)可包括第二陣列的指 針(這里用一個指針代替每個符號)。在這樣的實現(xiàn)中,每個符號將會通過索引所述陣列進(jìn) 行訪問。現(xiàn)在參照方法200(以及特別注意圖1所示的表示這些關(guān)系的類方框圖),首先,包含具有實現(xiàn)指針的靜態(tài)成員的接口類108被定義,210。隨后,在動態(tài)庫100被加載之前,包 含所述接口類108的存根實現(xiàn)106的主代碼段102被加載,220。下一步,所述存根實現(xiàn)106 被實例化以提供存根實現(xiàn)對象,所述接口類108的存根實現(xiàn)106包括被配置以設(shè)置所述實 現(xiàn)指針指向所述存根實現(xiàn)對象的第一構(gòu)造函數(shù)110,230。例如,如標(biāo)準(zhǔn)單例模式中一樣,所 述第一構(gòu)造函數(shù)110可以利用“Interface set Instance () ”來設(shè)置所述實現(xiàn)指針指向所 述實現(xiàn)對象(在此情形中為存根實現(xiàn)對象)。接著,當(dāng)客戶端112訪問符號114時,所述客 戶端112可使用語法“Interface::getInstance()-> symbol 1 (). ”。在此情形中,實際被 調(diào)用的例程是"Stublmplementation: :symboll(). ”。在某些點,包括接口類108的實實現(xiàn)104的動態(tài)庫100被加載,240。隨 后,所述實實現(xiàn)104被實例化以提供實實現(xiàn)對象,接口類108的實實現(xiàn)104包括 被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象的第二構(gòu)造函數(shù)116,250。例 如,第二構(gòu)造函數(shù)116可利用“Interface :SetInStanCe(),,來設(shè)置所述實現(xiàn) 指針指向所述實實現(xiàn)(RealImplementation)對象。隨后,當(dāng)客戶端112使用 語法“Interface :getlnstance()- > symbol 1(). ” 時,實際被調(diào)用的例程是 "Reallmplementation:symbol 1(). ”。在第二構(gòu)造函數(shù)116設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象之前(參見方法200, 步驟250),當(dāng)所述實現(xiàn)指針被設(shè)置成指向所述存根實現(xiàn)對象時,可存儲所述實現(xiàn)指針的備 份,260。如果在稍后時間所述動態(tài)庫100被卸載,則所述實實現(xiàn)(RealImplementation) 的析構(gòu)函數(shù)118可使用諸如“ Interface unset Instance (),,的語法來恢復(fù)所述接口 指針至其原值。例如,可卸載所述動態(tài)庫和所述接口類的實實現(xiàn),270。隨后,可設(shè)置所 述實現(xiàn)指針指向所述實現(xiàn)指針的所述已存儲的備份,280。在一個實施例中,使用Imp lementation: original Implementation指針。在本實施例中,其可通過第一次調(diào)用 "Interface: setlnstance ().,,予頁先賦值。圖3表示一種示范計算機(jī)編程產(chǎn)品300的局部視圖,計算機(jī)編程產(chǎn)品300包括用 于在計算設(shè)備上實現(xiàn)計算機(jī)處理的計算機(jī)程序304。所述示范計算機(jī)編程產(chǎn)品300的一種 實現(xiàn)方式是通過使用信號承載介質(zhì)302進(jìn)行提供的,以及可包括一個或多個指令用以定義 包含具有實現(xiàn)指針的靜態(tài)成員的接口類;加載包含所述接口類的存根實現(xiàn)的主代碼段;實 例化所述接口類的存根實現(xiàn)以提供一存根實現(xiàn)對象,所述接口類的存根實現(xiàn)包括被配置以 設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象的第一構(gòu)造函數(shù);加載包含所述接口類的實實現(xiàn) 的動態(tài)庫;和實例化所述接口類的實實現(xiàn)以提供實實現(xiàn)對象,所述接口類的實實現(xiàn)包括被 配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象的第二構(gòu)造函數(shù)。所述一個或多個指令可以 是,例如,計算機(jī)可執(zhí)行和/或邏輯實現(xiàn)的指令。在一個實現(xiàn)中,所述信號承載介質(zhì)302可 包括計算機(jī)可讀介質(zhì)306。在一個實現(xiàn)中,所述信號承載介質(zhì)302可包括可記錄介質(zhì)308。 在一個實現(xiàn)中,所述信號承載介質(zhì)302可包括通信介質(zhì)310。圖4表示了示范系統(tǒng)400,實施例可在其中實現(xiàn)。所述系統(tǒng)400包括計算系統(tǒng)環(huán) 境。所述系統(tǒng)400也給出了使用設(shè)備404的用戶412,圖中可選地顯示為通過任選耦合406 與計算設(shè)備402通信。所述任選耦合406可表示本地、廣域或?qū)Φ?peerto peer)網(wǎng)絡(luò),或 可表示計算設(shè)備內(nèi)部的總線(如,在示范實施例中,所述計算設(shè)備402被全部或部分地包括 在所述設(shè)備404中)。存儲介質(zhì)408可以是任意計算機(jī)存儲媒體。
      所述計算設(shè)備402包括計算機(jī)可執(zhí)行指令410,當(dāng)其在計算機(jī)設(shè)備402上實現(xiàn)時 使計算機(jī)設(shè)備402定義一包含具有實現(xiàn)指針的靜態(tài)成員的接口類;加載一包含所述接口類 的存根實現(xiàn)的主代碼段;實例化所述接口類的存根實現(xiàn)以提供一存根實現(xiàn)對象,所述接口 類的存根實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象的第一構(gòu)造函數(shù);加 載一包含所述接口類的實實現(xiàn)的動態(tài)庫;和實例化所述接口類的實實現(xiàn)以提供一實實現(xiàn)對 象,所述接口類的實實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象的第二構(gòu)造 函數(shù)。如上述內(nèi)容和圖4所示的一樣,在一些實例中,可選地,所述計算設(shè)備402被部分或 全部包含在所述設(shè)備404內(nèi)。在圖4中,隨后,所述系統(tǒng)400包括至少一個計算設(shè)備(如,402和/或404)。所 述計算機(jī)可執(zhí)行指令410可在所述至少一個計算設(shè)備中的一個或多個上實現(xiàn)。例如,所述 計算設(shè)備402可實現(xiàn)計算機(jī)可執(zhí)行指令410并輸出結(jié)果給(和/或接收數(shù)據(jù)從)所述計算 設(shè)備404。由于所述計算設(shè)備402可全部或部分被包含在計算設(shè)備404中,所以設(shè)備404也 可被認(rèn)為實現(xiàn)一些或全部的計算機(jī)可執(zhí)行指令410,以獲得進(jìn)行和實現(xiàn)如這里所述的各種 技術(shù)或其它技術(shù)。所述設(shè)備404可包括例如便攜式計算設(shè)備、工作站或臺式計算設(shè)備。在另一個示 范實施例中,可操作所述計算設(shè)備402與和用戶412相關(guān)聯(lián)的所述設(shè)備404進(jìn)行通信,以接 收來自用戶412的有關(guān)輸入的信息,用來實現(xiàn)數(shù)據(jù)訪問、數(shù)據(jù)處理和提供具有至少部分基 于用戶數(shù)據(jù)的動態(tài)庫的簡化接口的輸出。本發(fā)明中公開的所述方法可作為設(shè)備可讀的指令組或軟件實現(xiàn)。進(jìn)一步地,應(yīng)該 理解在公開方法中步驟的具體次序和層次為示例方法的例子。基于設(shè)計偏好,容易理解該 方法中步驟指定的順序和層次在公開主題范圍內(nèi)可以進(jìn)行重新設(shè)計。隨后的方法權(quán)利要求 表述了在樣本順序中不同步驟的要素,并不必限于表述的指定順序和層次??烧J(rèn)為本發(fā)明和許多其帶來的優(yōu)點通過上述描述容易進(jìn)行理解,很明顯可能做出 在所述組件的形式、結(jié)構(gòu)和布局上沒有偏離公開的主題或沒有犧牲所有原有優(yōu)點的各種改 變。上述形式僅僅是解釋性的,且隨后的權(quán)利要求用于包含和包括這些改變。
      權(quán)利要求
      一種方法,包括定義一包含一具有一實現(xiàn)指針的靜態(tài)成員的接口類;加載一包含所述接口類的一存根實現(xiàn)的主代碼段;實例化所述接口類的所述存根實現(xiàn)以提供一存根實現(xiàn)對象,所述接口類的所述存根實現(xiàn)包括一第一構(gòu)造函數(shù),所述第一構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象;加載一包含所述接口類的一實實現(xiàn)的動態(tài)庫;和實例化所述接口類的所述實實現(xiàn)以提供一實實現(xiàn)對象,所述接口類的所述實實現(xiàn)包括一第二構(gòu)造函數(shù),所述第二構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象。
      2.如權(quán)利要求1所述的方法,進(jìn)一步包括當(dāng)所述實現(xiàn)指針被設(shè)置成指向所述存根實現(xiàn)對象時,存儲所述實現(xiàn)指針的一備份。
      3.如權(quán)利要求2所述的方法,進(jìn)一步包括 卸載所述動態(tài)庫和所述接口類的所述實實現(xiàn)。
      4.如權(quán)利要求3所述的方法,進(jìn)一步包括設(shè)置所述實現(xiàn)指針指向所述實現(xiàn)指針的所述已存儲的備份。
      5.如權(quán)利要求1所述的方法,其中所述接口類是一增強單例接口類。
      6.如權(quán)利要求5所述的方法,其中所述增強單例接口類包括一抽象C++單例接口類。
      7.如權(quán)利要求1所述的方法,其中所述存根實現(xiàn)包括一第一陣列的指針,以及所述實 實現(xiàn)包括一第二陣列的指針。
      8.一種計算機(jī)編程產(chǎn)品,包括 一信號承載介質(zhì),其承載一個或多個用于定義一包含一具有一實現(xiàn)指針的靜態(tài)成員的接口類的指令; 一個或多個用于加載一包含所述接口類的一存根實現(xiàn)的主代碼段的指令; 一個或多個用于實例化所述接口類的所述存根實現(xiàn)以提供一存根實現(xiàn)對象的指令,所 述接口類的所述存根實現(xiàn)包括一第一構(gòu)造函數(shù),所述第一構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn) 指針指向所述存根實現(xiàn)對象;一個或多個用于加載一包含所述接口類的一實實現(xiàn)的動態(tài)庫的指令;和 一個或多個用于實例化所述接口類的所述實實現(xiàn)以提供一實實現(xiàn)對象的指令,所述接 口類的所述實實現(xiàn)包括一第二構(gòu)造函數(shù),所述第二構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指 向所述實實現(xiàn)對象。
      9.如權(quán)利要求8所述的計算機(jī)編程產(chǎn)品,進(jìn)一步包括一個或多個用于當(dāng)設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象時存儲所述實現(xiàn)指針的 一備份的指令。
      10.如權(quán)利要求9所述的計算機(jī)編程產(chǎn)品,進(jìn)一步包括一個或多個用于卸載所述動態(tài)庫和所述接口類的所述實實現(xiàn)的指令。
      11.如權(quán)利要求10所述的計算機(jī)編程產(chǎn)品,進(jìn)一步包括一個或多個用于設(shè)置所述實現(xiàn)指針指向所述實現(xiàn)指針的所述已存儲的備份的指令。
      12.如權(quán)利要求8所述的計算機(jī)編程產(chǎn)品,其中所述接口類是一增強單例接口類。
      13.如權(quán)利要求12所述的計算機(jī)編程產(chǎn)品,其中所述增強單例接口類包括一抽象C++單例接口類。
      14.如權(quán)利要求8所述的計算機(jī)編程產(chǎn)品,其中所述存根實現(xiàn)包括一第一陣列的指針, 以及所述實實現(xiàn)包括一第二陣列的指針。
      15.一種系統(tǒng),包括一計算設(shè)備;和多個指令,當(dāng)其在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備定義一包含一具有一實現(xiàn)指針的靜態(tài)成員的接口類;加載一包含所述接口類的一存根實現(xiàn)的主代碼段;實例化所述接口類的所述存根實現(xiàn)以提供一存根實現(xiàn)對象,所述接口類的所述存根實 現(xiàn)包括一第一構(gòu)造函數(shù),所述第一構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn) 對象;加載一包含所述接口類的一實實現(xiàn)的動態(tài)庫;和實例化所述接口類的所述實實現(xiàn)以提供一實實現(xiàn)對象,所述接口類的所述實實現(xiàn)包括 一第二構(gòu)造函數(shù),所述第二構(gòu)造函數(shù)被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象。
      16.如權(quán)利要求15所述的系統(tǒng),進(jìn)一步包括一個或多個指令,當(dāng)其在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備在設(shè)置所述實現(xiàn)指針 指向所述存根實現(xiàn)對象時存儲所述實現(xiàn)指針的一備份。
      17.如權(quán)利要求16所述的系統(tǒng),進(jìn)一步包括一個或多個指令,當(dāng)其在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備卸載所述動態(tài)庫和所 述接口類的所述實實現(xiàn)。
      18.如權(quán)利要求17所述的系統(tǒng),進(jìn)一步包括一個或多個指令,當(dāng)其在所述計算設(shè)備上執(zhí)行時使所述計算設(shè)備設(shè)置所述實現(xiàn)指針指 向所述實現(xiàn)指針的所述已存儲的備份。
      19.如權(quán)利要求15所述的系統(tǒng),其中所述接口類包括一增強單例接口類。
      20.如權(quán)利要求19所述的系統(tǒng),其中所述增強單例接口類是一抽象C++單例接口類。
      全文摘要
      簡化具有動態(tài)庫的接口的方法。一種方法可以包括定義一包含具有實現(xiàn)指針的靜態(tài)成員的接口類。所述方法也可包括加載一包含所述接口類的存根實現(xiàn)的主代碼段。此外,所述方法可包括實例化所述接口類的存根實現(xiàn)以提供一存根實現(xiàn)對象。所述接口類的存根實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述存根實現(xiàn)對象的第一構(gòu)造函數(shù)。進(jìn)一地,所述方法包括加載一包含所述接口類的實實現(xiàn)的動態(tài)庫。更進(jìn)一步,所述方法可包括實例化所述接口類的實實現(xiàn)以提供一實實現(xiàn)對象。所述接口類的實實現(xiàn)包括被配置以設(shè)置所述實現(xiàn)指針指向所述實實現(xiàn)對象的第二構(gòu)造函數(shù)。
      文檔編號G06F9/44GK101853154SQ200910180290
      公開日2010年10月6日 申請日期2009年10月13日 優(yōu)先權(quán)日2009年4月3日
      發(fā)明者詹姆士·A·林恩 申請人:Lsi公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1