JPH10505693A - 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法 - Google Patents

異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法

Info

Publication number
JPH10505693A
JPH10505693A JP8509776A JP50977696A JPH10505693A JP H10505693 A JPH10505693 A JP H10505693A JP 8509776 A JP8509776 A JP 8509776A JP 50977696 A JP50977696 A JP 50977696A JP H10505693 A JPH10505693 A JP H10505693A
Authority
JP
Japan
Prior art keywords
type
class
instance
returns
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8509776A
Other languages
English (en)
Inventor
フーディ,ダニエル,エム.
フーディ,マイケル,エイ.
Original Assignee
ビジュアル エッジ ソフトウエア リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビジュアル エッジ ソフトウエア リミテッド filed Critical ビジュアル エッジ ソフトウエア リミテッド
Publication of JPH10505693A publication Critical patent/JPH10505693A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/46Indexing scheme relating to G06F9/46
    • G06F2209/461Bridge

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Liquid Developers In Electrophotography (AREA)

Abstract

(57)【要約】 好ましい一実施例に従ったシステム及び方法は、デジタルコンピュータにおける2つ以上の異種オブジェクトシステムからのオブジェクトの相互動作を可能にし、それらを組み合わせてより大型のオブジェクト指向ソフトウェアプロジェクトを生成することができる。また、そのようなシステムと方法の用途を挙げる。外部オブジェクトシステムからのオブジェクトは変更されず、それらが使用又はアクセスされるオブジェクトシステムに対してネイティブであるように見える。実外部オブジェクトに対してネイティブプロクシオブジェクト(他のネイティブオブジェクトとの区別は不可能である)を構成する。プロクシオブジェクトは実オブジェクトに対する識別子と、そのオブジェクトをいかにしてアクセスし且つ操作すべきか、たとえば、その方法をいかにして呼び出し、その特性をいかにしてセットし、例外をいかにして処理するかのソフトウェア記述を指示するポインタとを含む。プロクシオブジェクトが操作されるとき、それはソフトウェア記述の中の命令に従うので、その結果、外部オブジェクトもそれに対応して操作される。

Description

【発明の詳細な説明】 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム 及び方法 技術分野 本発明はデジタルコンピュータのオブジェクト指向(オブジェクト・オリエン ティッド)ソフトウェアシステム及びそれに関連する方法に関する。 背景技術 オブジェクト指向ソフトウェア技法を使用すると、ソフトウェアオブジェクト を組み合わせることにより、デジタルコンピュータのソフトウェアアプリケーシ ョンが生成される。このプロセスを容易にするため、オブジェクト指向ソフトウ ェアシステムは、通常、オブジェクトモデルと呼ばれるアーキテクチャ仕様を提 供しており、これは、その仕様に合わせて開発される全てのオブジェクトを1つ のアプリケーションの中で一体に境界なく作用させることができる。オブジェク トモデルの例としては、Object Management Groupのコモン・オブジェクト・リ クエスト・ブローカ・アーキテクチャ(Common Object Request Broker Archite cture:CORBA)やマイクロソフト(Microsoft)のコモン・オブジェクト・モデル( common Object Model:COM.)が挙げられるであろう。また、このようなシステム は、通常、オブジェクトモデル内で提供される基本特徴を実現するオブジェクト システムと呼ばれるソフトウェアも提供する。 オブジェクトシステムは数多くあり、マイクロソフトのオブジェクト・リンキ ング・アンド・エンベディング(Object Linking and Embedding:OLE)(C OMオブジェクトモデルに準拠する)、又はIBMのディストリビューテッド・ システム・オブジェクト・モデル(Distributed System Object Model:DSOM )及びイオナ(Iona)のORBIX(共にCORBAオブジェクトモデルに準拠する)などの 非常に一般的な性質を持つものもある。例えば、OLE 2 Programmers Reference ,第1巻及び第2巻、Microsoft Press社刊、1994年;IBM SOMobjects Deve loper Toolkit V2.0,Programmers Reference Manual,1993年;Iona ORBIX ,Advanced Programmers Guide,1994年;及びThe Commmon Object request Broker:Architecture and Specification,第6章、OMG,1991年などを参 照。これらの参考文献は参考として本明細書にも取り入れられている。 その他のオブジェクトシステムは、例えば、ロータスノーツ(Lotus Notes)な どのグループウェア又は関連データベースなどの領域で特定の機能性を提供する ように設計されている。更に別のオブジェクトシステムは、例えば、ノーベル(N ovell's)のAppWare Bus,ヒューレュトパッカード(Hewlett Packard's)のBroadc ast Message Server及びMicrosoft Visual BasicのVBXオブジェクトメカニズ ムなどのアプリケーションに特定されている。例えば、Lotus Notes Programmer s Reference Manual,1993年; Novell Visual AppBuilder Programmers Re ference Manual,1994年; Hewlett Packard Softbench BMSのProgrammer R eference Manual,1992年; Microsoft Visual Basic 3.0 Professional Fe atures Book 1, COntrol Development Guide,1993年などを参照。これら の参考文献も参考として本明細書に取り入れられている。 ソフトウェアアプリケーションを生成する場合、種々のオブジェクトシステム は、様々に異なるタスクに最も良く適合しており、また、最良の解決方法は、通 常、最良の部分(すなわち、オブジェクト)から作成されるので、様々なオブジ エクトシステムからオブジェクトを組み合わせることが望ましい。ところが様々 なオブジェクトシステムからのオブジェクトは、当然のことながら、いくつかの 理由により一体には動作しない。 使用される基本メカニズムの相違、並びにタイプ及びクラスの物理的レイアウ トなどの低レベルのコール(call)のコンベンション(convention)の相違を含めて 、オブジェクトを生成し、方法をコールし且つ各オブジェクトシステムで特性を 設定するための手段に相違があるため、オブジェクトシステムは互換性を失う。 例えば、基本レベルにおいて、COMのようないくつかのオブジェクトシステム は直接C++呼び出しメカニズムを使用する。DSOMプリプロセスソースコー ドなどの他のシステムでは、直接呼び出しを実行するのではなく、オブジェクト システムから機能を呼び出し、その結果、実方法にポインタを戻す。このポイン タをデリファレンスして、実際に方法を呼び出す。OLE Automationなどの更に別 のオブジェクトシステムは、専門化された機能を提供し、開発時にはそれらを使 用して方法を呼び出さなければならない(多くの場合、これをダイナミック・イ ンボケーション・インタフェース(Dynamic Invocation Interface:DII)と 呼ぶ)。これらの機能は、呼び出すべき方法を引数として取り出すと共に、方法 の引数を取り出し(通常は特定のフォーマットにパックされている)、開発者に 対して方法を呼び出す。基本呼び出しメカニズムには、他の広い範囲の相違や変 形が数多く存在している。それらの基本メカニズムは、それぞれ、詳細な点でも 異なっている。例えば、CORBAは環境ポインタ引数を必要とするが(更に、 オプションのコンテクスト引数(context argument)を有する)、他のオブジェク トシステムは必要としない。 基本呼び出しメカニズムの大きな相違に加えて、手続き呼び出しコンベンショ ンと呼ばれることもある低レベル呼び出しコンベンションにも多くの相違点があ る。例えば、戻り値のタイプがフロート又は構造である場合、異なるオブジェク トシステムは方法からの戻り値を異なる方式で処理する。ある場合には値をプロ セッサスタックに戻しても良いが、別の場合には値をレジスタに導入しても良い 。すなわち、異なるオブジェクトシステムからの方法の戻り値を使用すれば、そ の結果、誤りが生じてしまうであろう。手続き呼び出しコンベンションの相違の 例としては、その他に、構造をメモリにパックする方式や、引数をスタックに配 置する方式が考えられる。 様々なオブジェクトシステムは、他のオブジェクトシステムとの間では互換性 を持ち得ない様々なタイプをも支援する。タイプの単純な例は、整数、フロート などの言語タイプを含む。更に複雑な言語タイプとしては、アレイ、ストリング 及びオブジェクトがある。また、CORBAのAny,COMCのVARIANTのような「可変タ イプ」などの意味タイプ(semantic types)もある。意味タイプは、システムに対 して特定の意味論的意味を有するという点で言語タイプとは異なる。いくつかの 意味タイプは概念の上では様々なオブジェクトシステムの中で同一のものを意味 するであろうが、それに対応する言語表現とインプリメンテーションが全く異な る場合もある。共通する例はストリングである。COMでは、ストリングは「B STR」(長さ情報を含むNULLで終わらないストリング)を使用して表現さ れるが、CORBAの場合には、ストリングは従来通りのC言語バイトアレイ( 長さ情報を伴わないNULLで終わるストリング)である。従って、COMオブ ジ ェクトについては、CORBAオブジェクトで使用されるストリングに対して作 用するコピーや比較などの機能がいずれも実行不可能になるため、COMオブジ ェクトは、CORBAオブジェクトにBSTRを渡すことができないであろう。 同様に、CORBAのAnyやCOMのVARIANTなどの「可変タイプ」は 同一のものを「意味」してはいるが、それらは互換性を持たない。 加えて、オブジェクトシステムはライフサイクル管理に関して、互換性を持ち 得ない様々な規則を有する。ライフサイクル管理という用語は、オブジェクトを 生成し、記憶し、削除するときに必要とされるプロセスを表わす。例えば、CO Mでは、開発者はオブジェクトを自動的に削除できるようにリファレンス・カウ ンティングを実行しなければならない。関連データベースのライフサイクル管理 ははるかに精巧であるが、CORBAのライフサイクル管理はリファレンスカウ ンティングを伴わず、ごく単純である。 多くの場合、オブジェクトは引数として方法に渡されるので、上記のライフサ イクル管理の問題は重大である。1つのオブジェクトシステムにあるオブジェク トが外部オブジェクトシステムのオブジェクトの方法を呼び出し、(そのオブジ エクトシステムからの)オブジェクトを引数として方法に渡すという場合を考え てみる。外部オブジェクトシステムはそれ自身のオブジェクトしか理解しないの で、オブジェクト引数を外部オブジェクトシステムの対応するオブジェクトに動 的に変換しなければならない。言い換えれば、引数として渡される元のオブジェ クトに適合させるべく、外部オブジェクトシステムで新たなオブジェクトを生成 しなければならない。オブジェクトシステム相互間でインタオペラビリティを作 用させるべきであれば、このような動的ライフサイクル管理、すなわち、対応す るオブジェクト破壊を伴うオブジェクト生成を全て適正に処理しなければならな い。 オブジェクトシステムのインタオペラビリティ(interoperability)のもう1つ の面は、オブジェクトシステム間の例外と誤りの処理の相違である。通常、オブ ジェクトのコードの中で現われる誤り又は例外もそのコードを呼び出したオブジ ェクトの中で処理しなければならない。2つのオブジェクトが異なるオブジェク トシステムから出たものであり、誤り処理メカニズムが互換性を持たない場合、 ソフトウェア障害が起こるであろう。 オブジェクトシステムが様々に異なれば、オブジェクトに関する情報を動的に 問い合わせる方法も異なる。この機能性は、汎用マクロスクリプト記録機能を提 供するオブジェクトシステム並びに分散計算能力を提供するオブジェクトシステ ムについて要求される。例えば、マイクロソフトのOLE 2 Programmers Referenc eの第2巻、アップル社のInside Macintosh: Interapplication Communication の第8章(参考として本明細書にも取り入れられている)、又はObject Managem ent GroupのThe Common Object Request Broker:Architecture and Specificat ionの第6章を参照。すなわち、メカニズムがオブジェクトに関する情報を問い 合わせる方式に互換性がなければ、その結果、他のオブジェクトシステムにおい てオブジェクトを使用する方法に重大な制限が生じる。 先に述べた通り、オブジェクトシステムの設計目標はそれぞれ異なっている。 従って、各オブジェクトシステムは、通常、別のオブジェクトシステムでは利用 できない機能性を有する。その例を2つ挙げると、CORBAネームスペース( COMにはこれはない)と、複数のインタフェースを支援するCOMオブジェク ト(CORBAはそのようなオブジェクトを持たない)である。あるオブジェク トに別のオブジェクトシステムでのみ利用可能な何らかのアクションを実行する ことを求めると、ソフトウェアの誤りが起こる可能性がある。 要するに、強く求められる目標は様々なオブジェクトシステムの間にインタオ ペラビリティを提供することである。異なるオブジェクトシステムはオブジェク トに異なる必要条件を課するので、インタオペラビリティを可能にするためには 専門化されたソフトウェアシステムが必要である。従来の技術にも、オブジェク トシステム相互間にインタオペラビリティを提供する方式がある。そのうちスタ ブ・ファンクション・ラッパ(stub function wrapper);コモン・ワイヤ・プロ トコル;ダイナミック・コンバータの3つが興味ある方式である。 スタブ・ファンクション・ラッパ方式の場合、自動化ツールを使用して、別の オブジェクトモデルの仕様に従うコードにオブジェクトを「ラップ(包む)」す るスタブ機能を生成する。すなわち、このツールはネイティブオブジェクトへ要 求を送り出すために必要なコードのみを含むオブジェクトクラスを外部オブジェ クトシステムで生成する。この「スタブ」コードをコンパイルし、アプリケーシ ョンにリンクする。スタブファンクション方式を示す良い例が、IBMのウイン ドウズ(Windows)用DSOMで実行されているCOMインタオペラビリティであ る。これを使用すると、DSOMオブジェクトを持つ開発者がそれらのオブジェ クトをCOMの中から使用したいときに、自動ツールを利用して、対応するCO Mオブジェクトのソースコードを生成できる。COMオブジェクトのソースコー ドは単にDSOMへ呼び出しを送り出す一組のスタブ機能である。例えば、CO MアプリケーションがCOMオブジェクトの方法を呼び出したときには、方法は その方法のDSOMバージョンを再呼び出しするだけである。 一組のスタブ・ファンクション・ラッパを生成するための自動化ツールの1つ は、2つのオブジェクトシステムの間に一方向インタオペラビリティを提供する 。動的ライフサイクル管理で求められるような二方向インタオペラビリティを提 供するためには、第2のツールを書き込まなければならない。追加のオブジェク トシステムを支援すべきであり、且つ3つのシステム全ての間に完全なインタオ ペラビリティが要求される場合には、追加の4つの自動化ツールを書き込まなけ ればならない。実際に、N個のオブジェクトシステムの間でインタオペラビリテ ィを成立させるために要求されるそのようなツールの数は(Nの2乗−N)であ る。更に、オブジェクトクラスごとに、スタブラッパ機能の(Nの2乗−N)個 のバージョンを生成し、管理し、支援しなければならない。ある特定のアプリケ ーションが数百のクラスを有していると仮定すれば、これは重大な欠陥である。 また、この方法は、タイプ変換の処理、低レベル呼び出しコンベンションの相違 、ライフサイクル管理の相違、誤り及び例外処理の相違、問い合わせ方式、又は 機能性の相違などのインタオペラビリティに関わるその他の問題点については何 の支援も行わない。そのため、オブジェクトのユーザは、手動操作によりそのよ うな変換をユーザ自身のソフトウェアにコード化して、オブジェクトが別のオブ ジェクトシステムのものである(すなわち、オブジェクトがネイティブオブジェ クトとは明確に区別できない)ことを明らかにしなければならない。最後に、新 たなオブジェクトシステムに対する支援は動的ではないので、コードを再コンパ イルし、再びリンクしなければならない。 ダイナミックコンバータは、共にダイナミック・インボケーション・インタフ ェース(DII)を支援する2つのオブジェクトシステムの間にインタオペラビ リティを提供するように設計されている。DIIは方法を「動的に呼び出す」。 すなわち、DDIは、開発者に対してオブジェクトの方法を動的に呼び出し、そ の呼び出しをアプリケーションにコンパイルすることを要求する代わりに、事前 に定義済コンベンションを使用して引数を方法に渡す一組の機能である。ダイナ ミックコンバータは2つのDIIの間のハードコード化マップである。方法が呼 び出されると、コンバータコードは第2のオブジェクトシステムのDIIに適す るフォーマットに情報をパッケージし、次に、方法を呼び出す。 スタブ・ラッパ・メカニズムの場合と同様に、この方式はN個のオブジェクト システムを支援するために(Nの2乗−N)個のコンバータを必要とする。更に 、ダイナミックコンバータはDIIを支援するオブジェクトシステムと併用しな ければ有効ではない。また、DIIを使用するために性能が低下する。スタブラ ッパ方式と同様に、この方法も、タイプ変換の処理、誤り及び例外処理の相違、 問い合わせ方式、又は機能性の相違などのインタオペラビリティのその他の問題 について一般に支援しない。従って、ネイティブオブジェクトと区別不可能であ る外部オブジェクトを提供することができない。 コモン・ワイヤ・プロトコル方式は分散オブジェクトシステム、すなわち、異 なる機械アーキテクチャを有する異なるコンピュータに記憶させ得るオブジェク トを含むオブジェクトシステムと併用されるように設計されている。コモン・ワ イヤ・プロトコル方式の場合、基礎をなす共通の分散計算システム(DCS)、 すなわちコモンワイヤを共用するオブジェクトシステムがインタオペレイト(int eroperate)できる。共通分散計算システムでは、DCSにより非(Nの2乗−N )言語データタイプ転送メカニズムが形成されるので、オブジェクトシステムは 言語データタイプを転送することができる。 この方式は低レベル呼び出しコンベンションの問題に対処し、低レベルデータ タイプのマッピングを実行する。N個のオブジェクトシステムを支援することが どれほど複雑になるかは、オブジェクトシステムが同一のオブジェクトモデルを 共用するか否かによって直接に決まる。共用しているならば、基本呼び出しコン ベンションの相違、意味タイプの相違、ライフサイクル管理の相違、誤り及び例 外処理の相違、又は機能性の相違の間にインタオペラビリティを成立させる必要 はなく、各オブジェクトシステムはDCSを支援するだけで良い。これを示す例 は、それぞれがOpen Software FoundationのDistributed Computing Environmen t(DCE)を使用できるIBMのDSOM、イオナ(Iona)のOrbix,ヒューレットパ ッカードのDOMFなどの様々なCORBAオブジェクトシステム相互間のイン タオペラビリティであろう。 共通オブジェクトモデルを共用しないオブジェクトシステムの間のインタオペ ラビリティである場合には、この方式は残る問題点を処理するために(Nの2乗 −N)個のコンバータを必要とする。更に、インタオペレイトしなければならな いオブジェクトシステムが共用分散計算システムの最上部に形成されていないと きには、この方式は全く機能しない。また、DCSに依存しているため、資源の 消耗がことのほか激しい。単純なデータタイプの転送は処理するが、より複雑な タイプ変換、ライフサイクル管理の相違、誤り及び例外処理の相違、問い合わせ 方式、又は機能性の相違を処理するための汎用メカニズムは提供されないので、 他の従来技術と同様の欠点が見られる。 オブジェクトシステムのインタオペラビリティの問題を直接解決しようとした 従来の上記の方式と並んで、この問題の様々な要素をそれぞれ別の見方で処理し た方法が他にもある。 異なる低レベル呼び出しコンベンションの間のマッピングの問題に対処したシ ステムはいくつかある。米国特許第4,736,321号には、対話言語ワーク スペース、すなわち、APLが外部言語手続きを呼び出すことができる方法が記 載されていた。この場合、APL環境に対してFORTRAN機能を宣言し、A PL環境はAPL呼び出し及び引数をFORTRAN呼び出し環境にマッピング した。この特許の方法は対話APL言語環境に特定されており、APLから複数 の言語(FORTRAN及びアセンブラ)への一方向アクセスを実行する。任意 の数の言語の間で両方向アクセスを行う方法ではなく、コンパイル言語コードシ ステムの間では機能しない。 これに類似するメカニズムは米国特許第5,274,821号にProlog に関して記載されており、この場合、Prolog言語手続きは外部言語機能を 呼び出すことができ、逆に、外部言語機能がProlog言語を呼び出すことも できた。この特許においては、マッピングはテーブル駆動方式を使用して実行さ れた。すなわち、Prologから複数の言語へのマッピング及び複数の言語か らPrologへのマッピングは、テーブルの中で低レベル呼び出しコンベンシ ョンをシステムに記述することによって実行された。この情報は実行時にマッピ ングを動的に実行するために使用された。米国特許第4,736,321号の方法 と同様に、この方法は対話言語環境に特定され、この場合はPrologに特定 されている。PrologからN個の言語への両方向マッピングを実行するが、 N個の言語相互間でのマッピングは実行しない。この方法はコンパイル言語コー ドシステムの間では機能せず、いずれにしても、(Nの2乗−N)個の変換テー ブルを必要とするであろう。 米国特許第5,210,876号に記載されたメカニズムにおいては、インタ プリタはコンパイル手続きを呼び出すことが可能であり、コンパイル手続きは解 釈済手続きを呼び出す。すなわち、元のコンパイル手続きにより呼び出される新 たな中間コンパイル手続きを生成した。その後、新たなコンパイル手続を元のコ ンパイル手続きと動的にリンクさせた。新たに生成された手続きは引数をインタ プリタが要求するフォーマットに変換し、次に、解釈済手続きを呼び出した。最 後に、結果をコンパイル言語により要求される元の形に変換した。従来の他の技 法と同様に、この特許は解釈される環境がコンパイル言語コードを呼び出すのを 容易にしている。また、従来の他の技法と同様に、N個のシステムの間の手続き 呼び出しコンベンションの変換を支援するためには、(Nの2乗−N)個のコー ド発生器が必要であろう。 米国特許第5,097,533号は、様々な事前確定済コンピュータ言語を単 一のソフトウェアシステムにインタフェースする方法を説明している。この場合 には、言語ごとにコードを書き込み、その言語のAPIから基礎となるソフトウ ェアシステムの単一のAPIヘマッピングする。この特許では、言語ごとにマッ ピングを実行するために、コードを書き込むことによりN個の言語から1つの言 語へ手続き呼び出しコンベンションをマッピングする。この方法はN個の言語コ ンベンションの間での変換には有効でなく、いずれにしても、(Nの2乗−N) 個のコードブロックを書き込む必要があるだろう。 米国特許第5,146,593号には、単一のソフトウェアインタフェースを 使用して複数の手続きを呼び出す方法が記載されている。実際、これはDIIの 一例にすぎず、異なるプログラミング言語ヘマッピングするように設計されたD DIである。この場合、方法はテーブルを使用して、特定の言語の低レベル呼び 出しコンベンションを記述する。ユーザ(すなわち、呼び出しを実行したいソフ トウェア開発者)はDIIインタフェースをそのアプリケーションとリンクし、 手続き識別子と、事前定義済フォーマットをとるデータ構造とをアプリケーショ ンに渡すことにより、DDIインタフェースを使用して全ての呼び出しを実行す る。この方法はN個の言語呼び出しコンベンション相互間のインタオペラビリテ ィを支援するものではなく、その目的のために拡張しようとしたならば、やはり (Nの2乗−N)個のテーブルが必要になるであろう。 上記の特許には、様々な言語の低レベル呼び出しコンベンションの相違を処理 するためのメカニズムを提供するように設計されているということが共通してい た。米国特許第5,210,876号を除き、それぞれの特許は様々な言語タイ プを変換する手段も提供する。しかしながら、これらの特許は高レベル呼び出し コンベンションの相違という問題には触れていない。事実、それぞれの高レベル 呼び出しコンベンションは異なっているため、その相違を問題にする必要はない 。また、意味タイプ相互間のマッピングの支援も行ってはいない。 例えば、米国特許第5,187,787号のような他の特許は、意味タイプ互 間のマッピングの問題を扱っている。この特許においては、意味タイプ間のマッ ピングは、2つのソフトウェアアプリケーションをデカップルする通信インタフ ェースを構成するために使用される、より大型のシステムの1つの要素であるに すぎなかった。この場合、通信で使用される意味タイプは自己記述型であるよう に設計されていた。この特許は、インタオペラビリティを得るために意味記述を データ表現から分離させなければならないと教示している。更に、開発者は、い ずれかの場所に、別の意味形態をとって存在すると思われるデータをアクセスす るためにシステムAPIを使用する。従って、このメカニズムは開発者の側にデ カップルデータを使用するための明確な知識を必要とし、単−DIIに類似して いるので、同じような制約が見られる。 米国特許第5,278,978号には、2つのデータベースの間で情報を転送 する方法が記載されていた。システムの一部として、言語タイプと意味タイプの 双方をマッピングするためのメカニズムが説明されていた。各言語タイプにはマ ーカ記述子と呼ばれる標準識別子が付されている。同様に、各意味タイプには、 それとは別に、タイプ定義と呼ばれる標準識別子が付されている。別のデータベ ースからデータを受信したとき、それらの記述を使用して変換を実行する。変換 は受信側データベースで実行されるので、それぞれのデータベースは他の全ての 機械環境と意味タイプの事前定義済記述、すなわち、(Nの2乗−N)個の変換 記述を有していなければならない。 発明の概要 本発明は、いくつかの実施例の中で、複数の異種オブジェクトシステムからの ソフトウェアオブジェクトが両方向にインタオペレイトし、且つより大型のソフ トウェアシステムの生成に際してそれらのソフトウェアオブジェクトを組み合わ せることを可能にするデジタルコンピュータ内の単一システムを提供する。外部 オブジェクトシステムからのオブジェクトは変更されないが、それらが使用又は アクセスされるオブジェクトシステムに対してネイティブであるように見える。 追加オブジェクトシステムへの支援はシステムの実行中に動的に追加されるので 、支援される他の全てのオブジェクトシステムとの間に両方向インタオペラビリ ティが追加される。また、オブジェクトを変更する必要なく、1つのオブジェク トシステムの特徴を他のオブジェクトシステムでも支援できるようにするメカニ ズムも提供される。 外部オブジェクトを別のオブジェクトシステムでも使用できるようにするため に、これらの実施例のシステムは、実外部オブジェクトに対してネイティブ・プ ロクシ・オブジェクト(native proxy object)(他のネイティブオブジェクト とは区別不可能である)を構成する。プロクシオブジェクト(proxy object)は実 オブジェクトに対する識別子と、そのオブジェクトをいかにしてアクセスし、操 作するか、例えば、その方法をいかにして呼び出し、その特性をいかにしてセッ トし、例外をいかにして処理するかを表わすソフトウェア記述に対するポインタ とを含む。プロクシオブジェクトを操作するときには、ソフトウェア記述の中の 命令に従うので、その結果、外部オブジェクトもそれに相応して操作される。 これらの実施例のシステムは、デフォルト・インプリメンテーション(default implementations)を伴ういくつかのオブジェクト指向フレームワーク(object-o riented frameworks)を提供する。オブジェクトシステム特有の又は均一のネー ムスペースにおいてオブジェクトの場所を動的に指定するフレームワークと;オ ブジェクトクラス又はインスタンス(instance)の特性を記述するフレームワーク と;意味タイプと言語タイプの双方を記述するフレームワークと;プロクシオブ ジェクトの操作を実外部プロジェクトへ送り出すためにソフトウェア記述を「実 行」するフレームワークと;誤り及び例外を処理するフレームワークと;オブジ ェクトのライフサイクルを生成し、コピーし、破壊し、管理するフレームワーク と;オブジェクト定義を「エクスポート」する、すなわち、1つのオブジェクト システムのオブジェクトを一時的に又は永久に他のオブジェクトシステムにある ネイティブオブジェクトとは区別不可能なオブジェクトクラスとして見えるよう にするフレームワークとがある。 更に、どのオブジェクトクラスの記述にも余分な情報を追加するフレームワー クがある。そのような追加情報を「ミキシン(mixin)」と呼ぶ。オブジェクト をそれが支援しない方式で操作される場合、例えば、ある集合体の中央の要素を 戻すことが求められているが、その要素がそのような方法を支援しない場合には 、システムはオブジェクトと関連するミキシンに要求を支援できるか否かを尋ね る。支援できるのであれば、ミキシンはその要求を引き継ぎ、実行する。このよ うにして、オブジェクトシステムのオブジェクトの能力を、それらのオブジェク トが当然支援しないと考えられる他のオブジェクトシステムの特徴をもって拡張 するための汎用メカニズムが提供される。 上記のそれぞれのフレームワークのデフォルト・インプリメンテーションへの 拡張はオブジェクトシステムによってグループ化され、オブジェクトシステムア ダプタ(OSA)と呼ばれるライブラリにパッケージングされる。OSAをシス テムのOSAレジストリ・フレームワーク(OSA Registry framework)にロードす ることができ、従って、新たなオブジェクトシステムを動的に支援し、且つ他の オブジェクトシステムとの間に完全なインタオペラビリティを提供するために必 要なあらゆるものを追加できる。 このシステムが独立して使用されても良く、あるいは、より大型のソフトウェ アシステムの1つの要素として組み込まれても良いことは当業者には自明であろ う。 本発明の更に別の実施例も提供される: (A)「汎用オブジェクト」、すなわち、複数のオブジェクトシステムで同時に インプリメントされるように見え、且つそれが支援するオブジェクトシステムを 動的に変更することができる単一のオブジェクトの生成を可能にするシステム及 び方法。前記システムは個別構成、アプリケーション構成及びサーバ構成でもオ ブジェクトの生成を可能にする。更に、そのようなオブジェクトは解釈済又はコ ンパイル済言語技法に基づいていても良い; (B)ライブラリ又は対話方式に基づき、前記「汎用オブジェクト」を含むオブ ジェクトクラスの構成を可能にするシステム及び方法。前記オブジェクトクラス を生成するとき、このようなシステムは複数のオブジェクトシステムからのオブ ジェクトのサブクラスを構成するか、それらのオブジェクトを取り込むか、又は そのインスタンスを組み込んでも良い。 (C)アプリケーション及びサーバの実行中に、オブジェクトクラス及びオブジ ェクトを利用するソフトウェアも実行中であっても、そのソフトウェアを崩壊さ せることなく、1つ又は複数のオブジェクトシステムの中でオブジェクトクラス 及びオブジェクトの場所をアプリケーション間及びサーバ間で変更することを可 能にするシステム及び方法。 図面の簡単な説明 本発明の上記の面は、添付の図面と関連して与えられる以下の詳細な説明を参 照することにより更に容易に理解されるであろう。 図1は、本発明の好ましい一実施例に従った(使用中の)システムの概略図で ある。 図2は、本発明の好ましい一実施例に従ったシステムアーキテクチャの概略図 である。 図3は、アダプタ・レジストリ・フレームワーク(Adapter registry framewor k)にプラグ接続された図2のオブジェクト・システム・アダプタ(Object System Adapter)を示す図である。 図4は、図2の実施例に従った1つの方法と、1つの特性とを有するクラスの 記述を示す図である。 図5は、図2の実施例に従った入れ子型記述を示す図である。 図6は、CORBA C言語呼出しコンベンションに従う方法の記述を示す図 である。 図7は、ダイナミック・インボケーション・インタフェース(Dynamic Invocat ion Interface)を使用して呼び出される類似する方法の記述を示す図である。 図8は、オブジェクトの代表的なライフサイクルを示す図である。 図9は、図2のシステムを使用してクラスを露出させるために使用されるプロ セスを示す図である。 図10は、図2の実施例に従った代表的なプロクシオブジェクトを示す図であ る。 図11は、本発明の好ましい一実施例に従った「汎用オブジェクト」の個別構 成、アプリケーション構成及びサーバ構成を示す図である。 図12aは、個別構成で汎用オブジェクトをイネーブルするシステムの一例を 示す図である。 図12b及び図12cは、それぞれ、アプリケーション構成とサーバ構成を示 す図である。 特定の実施例の詳細な説明 図1は、本発明の好ましい一実施例に従ったデジタルコンピュータで使用され るシステム105の簡略化した概略図を示す図である。 プロセス101は、プロセス102及びオブジェクト103が実行される第2 のオブジェクトシステムとは明確に異なる、「ネイティブ」のオブジェクトシス テムと呼ばれる第1のオブジェクトシステムを使用して実行される。プロセス1 02とオブジェクト103を実行する第2のオブジェクトシステムは、「外部(f oreign)」オブジェクトシステムと呼ばれる(オブジェクト103を使用してい るプロセス101に対して外部のものである)。システム105はプロクシオブ ジェクト100を構成している。プロクシオブジェクト101は、プロセス10 1中のネイティブオブジェクトシステムを使用して実行される他のオブジェクト からは区別不可能であるように見える。システム105により確定されるプロク シオブジェクト100は実オブジェクト103と、実オブジェクト103をいか にしてアクセスし且つ操作するか、たとえば、その方法をいかにして呼び出し、 その特性をいかにして設定し、例外をいかにして処理するかを記述するソフトウ ェア記述104に対するポインタを含む。プロセス101がプロクシオブジェク ト100を操作するとき、その操作はシステムによりインタセプトされて、実オ ブジェクト103へと送られる。システムはソフトウェア記述104中の命令に 続いて操作を進め、その結果、実オブジェクト103の対応する操作が実行され る。システムは、どのオブジェクトシステムがその命令を作成したかにかかわら ず、ソフトウェア記述104中の命令に従うことができるので、オブジェクトシ ステムのインタオペラビリティに対する非(Nの2乗−N)アプローチとなる。 図2を参照すると、本発明の好ましい一実施例に従ったシステムの簡略化した アーキテクチャが示されている。後述するように、出願人は広範囲にわたるオブ ジェクトシステムにおいて広範囲にわたるハードウェアプラットフォームについ てこの実施例を実施し、申し分のない結果を得た。図中、三角形の記号110は 、その右側にある項目がサブクラスであることを指示する。システムは次のよう な9つのフレームワークを含む。 ロケーション・列挙フレームワーク(Enumeration Frame work)1: オブジェクトシステムに特有の又は均一なネームスペースにおいてオブジェク トの場所を動的に規定する。このフレームワークには、場所を指定されたオブジ ェクトの特性を確定する能力が含まれている。 クラス記述フレームワーク2: オブジェクトクラス又はインスタンスの特性を記述する。 タイプ記述フレームウェア3: 意味タイプと言語タイプ双方を記述し且つ変換する。 フォワーディング・エンジン・フレームワーク4: プロクシオブジェクトの操作を実外部オブジェクトへ送り出すためにソフトウ ェア記述を「実行(execute)」する。 誤り・例外処理フレームワーク5: 誤り及び例外を処理する。 ライフサイクル管理フレームワーク6: オブジェクトのライフサイクルを生成し、コピーし、破壊し、管理する。 オブジェクトエクスポートフレームワーク7: オブジェクト定義を「エクスポート(export)」する。すなわち、1つのオブ ジェクトシステムにおけるオブジェクトを他のオブジェクトシステムで一時的に 又は永久にネイティブオブジェクトクラスとは区別不可能なオブジェクトクラス として見えるようにする。 加えて、1つのオブジェクトシステムでのみ見いだされる特徴を全てのオブジ ェクトシステムで支援できるように、どのオブジェクトクラスの記述にも余分な 情報を追加するためのミキシン支援フレームワーク8がある。また、オブジェク トシステムアダプタ(OSA)10をロードし、アンロードし、管理するための OSAレジストリ・フレームワーク9もある。OSA10は、システムにより提 供される前述のフレームワークの各々のデフォルト・インプリメンテーションに 対する拡張を一体にパッケージするライブラリである。OSAは、追加されると 、対応するOSAがロードされている他の全てのオブジェクトシステムの間に完 全な両方向インタオペラビリティを成立させる。 更に詳細なアーキテクチャについては、実施例の詳細な説明の終わりに添付し たVisual Edge Software 社のClass Registry Functional Specification(ペー ジ141からページ143)を参照のこと。上記のアーキテクチャをここで説明 する実施例の有効性に影響を及ぼすことなく再編成し得ることは当業者には理解 されるであろう。 図3は、OSAレジストリフレームワーク9と、ロードされるいくつかのOS Aとを示す。この構成においては、システムはそれらのOSAに対応する4つの オブジェクトシステムの間にインタオペラビリティを提供している。 本発明の特定の実施例はC++で書き表されており、マイクロソフトのウインド ウズ(Windows3.1)及びWindows NT,IBMのOS/2及びAIX、サンマイクロ システムズ(Sun Microsystems)のSunOS及びSolaris,並びにヒューレットパッカ ード(Hewlett Packard)のHP-UXで実行される。オブジェクトシステムアダプタは マイクロソフトのOLE Automation,IBMのSOM及びDSOM、マイクロソフ トのCOMに対して実行されており、マイクロソフトのVisual Basic VBXオブジ ェクトシステムに対応する。さらに、OSAは解釈言語環境に合わせて実行され ている。現時点では、この実施例は対応するOSAを伴うオブジェクトシステム において使用されるべき純粋C++でインプリメントされたオブジェクトをイネー ブルするための支援を実行する。同様に、この実施例は現時点では対応するOS Aを伴うオブジェクトシステムにおいて使用されるべきCで書き込まれた(すな わち、どのオブジェクトシステムにも書き込まれていない)ソフトウェアをイネ ーブルするための支援を実行する。 以下の各章は上記のフレームワークをそれぞれ説明し、以下の各章の番号は図 2の項目番号に相当する。 1)ロケーション・列挙フレームワーク: オブジェクトシステムに特有の又は均一なネームスペースにおけるオブジェク トの場所を動的に指定するためのフレームワーク。 ロケーション・列挙フレームワークは、図2bに示すように、「アダプタネー ムスペース(Adapter NameSpace)」111と呼ばれるオブジェクトシステムに特 有のネームスペースサブフレームワークと、「ビューネームスペース(View Name Space)」112と呼ばれるオブジェクトシステムとは無関係のネームスペース サブフレームワークの2つの主要サブフレームワークを有する。これらが合わさ ると、新たなオブジェクトシステムについてフレームワークにおける支援を追加 する際に、アダプタネームスペースをサブクラス化するという線形(すなわち、 非(Nの2乗−N))動作を実行するだけで良い。 ロケーション・列挙フレームワークは、OSAにより使用されるか、又はオー バライドされ(オブジェクト指向の意味で)、個々のオブジェクトシステムに特 有な能力と置き換えられる一連の総称(generic)能力を提供する。すなわち、ア ダプタネームスペース111は、オブジェクトシステムの中で1つの特定のクラ ス、インスタンス、機能、タイプ、例外、サブネームスペース、あるいはクラス 、インスタンス、機能、タイプ、例外、サブネームスペースの完全なリスト、も しくはその何らかの組み合わせの場所を指定するための能力の探索を実行する。 この探索プロセスの間に、正規表現整合などの周知の数多くの探索技法を適用で きることは当業者には明白であろう。従って、オブジェクト指向原理を使用すれ ば、単一のインタフェース、すなわち、アダプタ・ネームスペース・インタフェ ースをシステムのその他の部分により利用して、どのような特定のオブジェクト システムでも探索し、それが提供する情報の階層を確定して、戻せる。 アダプタネームスペースの項目は、システムの実行時又は特定のOSAのロー ディング時に列挙できる。しかしながら、多くの場合、アダプタネームスペース は、ユーザがブラウジング操作を実行するか、システムが特定のクラスのオブジ ェクトを構成する必要が生じたか、又はシステムが別のオブジェクトシステムで も見えるクラスを作成する必要が生じたときのように、要求が発生するまでは内 容を列挙しない。 アダプタネームスペースは、システムにより提供される総称メカニズムを使用 するか、又はオブジェクト特有メカニズムを供給することによって内容を列挙す る。システムが提供する総称メカニズムには、静的メカニズム、動的メカニズム 又はデータベースメカニズムが含まれる。静的メカニズムの場合、システムのユ ーザはシステムAPIを呼び出して、ユーザの情報を登録する。動的メカニズム の場合には、システムはオブジェクト自体(又は言語インタプリタの記号テーブ ルのような、そのシステムを利用しているソフトウェア)に問い合わせて、情報 を確定する。データベースメカニズムの場合には、システムはファイル又はレポ ジトリ(repository)を読み取って、情報を確定する。レポジトリを読み取る場合 の例としてはCORBAインタフェースレポジトリから情報を問い合わせること 、COMタイプライブラリを読み取ること、「ヘッダファイル」(たとえば、C+ +ヘッダファイル又はCORBA IDLファイル)を読み取ること、又は「ダ イナミック・リンクライブラリ」の記号テーブルを読み取ることが挙げられるで あろう。通常は、各OSAは総称メカニズムのいくつかの能力をオーバライドし なければならないであろう。 第2のサブフレームワークであるビューネームスペース112は、クラス、イ ンスタンス、タイプなどの情報を編成するためのオブジェクトシステム独立メカ ニズムを提供する。ビューネームスペースは非巡回グラフで編成されても良い。 また、ビューネームスペースをサブクラス化して、名前付きオブジェクト(すな わち、クラス、インスタンス、タイプなど)のフラットリストのような特定の能 力を提供しても良い。アダプタネームスペースで列挙される項目は、いずれも、 OSAのネームスペース全体を含めて、ビューネームスペースの中に配置できる 。ファイルシステムにおいては通常見られることであるが、エイリアスを提供す ると共に、循環性を認識する。このように、システムのユーザはオブジェクトシ ステムとは全く無関係に完全に情報の場所を指定し且つ情報を編成する手段を得 る。 2)クラス記述フレームワーク(Class Description Framework): オブジェクトクラス又はインスタンスの特性を記述するためのフレームワーク アダプタネームスペース及びビューネームスペースには、クラスを記述するた めの情報が含まれている。クラス記述フレームワークは、この能力をイネーブル にすると共に、OSAが組み込み機能性をオーバライドできるようにするために 提供される。クラス記述フレームワークは、クラス、インスタンス、特性、機能 (方法を含む)、引数及び例外を記述する一連のクラスから構成されている。使 用される対応クラスは、それぞれ、VClassData,VInstance Data,VPropData,VFunctionData,VArgume ntData及びVExceptionDataと名付けられている。以下に説 明するように、タイプを記述するための追加フレームワークであるタイプ記述フ レームワークも利用される。上記のクラスの各々は、それが表わすオブジェクト の名前、そのタイプ、その所有者(たとえば、クラス特性を記述している場合に は、所有者はそのクラスということになるであろう)、それを管理するオブジェ クトシステム並びに「利用(usage)コード」(後述する)について求めること ができる。 クラスを記述するために使用されるクラス記述フレームワーク中のクラスは、 (特性又は方法を記述する場合とは異なり)VClassDataと呼ばれる。 VClassDataは、静的データ構造、連係リストデータ構造などを構築す るのではなく、方法呼び出しの結果を戻すことによって、システムのその他の部 分に対してVClassDataが表わすクラスの記述を提供する。たとえば、 特性のリストを戻すクラス方法(class methods)を提供する。これにより、OS AはVClassDataをサブクラス化し、その方法をオーバライドして、シ ステムのその他の部分に対して依然として単一のAPIを提供しつつ、オブジェ クトシステム特有インプリメンテーションを使用してクラス記述を行うことがで きる。 VClassDataは、それが記述するクラスについて、ベースクラス(V ClassDataのリストとして);コンストラクタ、デュプリケータ及びデ ストラクタ(VFunctionDataとして);クラスの方法(VFunc tionDataのリストとして);クラスの特性(VPropDataとして );クラスの例外(VExceptionDataのリストとして)を戻すため の方法;並びにクラスの名前付きインスタンスを戻すための方法を有する。 機能とクラス方法を記述するクラス記述フレームワーク中のクラスをVFun ctionDataと呼ぶ。VFunctionDataクラスは、それが記述 する機能について、引数(VArgDataとして)、機能がスロー(throw)で きる例外(VExceptionDataのリストとして)及び機能に関する呼 び出し可能エントリポイント(又は方法)を戻すための方法を有する。 クラス特性を記述するクラス記述フレームワーク中のクラスをVPropDa taと呼ぶ。VPropDataクラスは、それが記述する特性について、特性 をセットするための方法並びに特性を獲得するための方法(共にVFuncti onDataとして)を戻すための方法を有する。 同様に、機能引数を記述するクラス記述フレームワーク中のクラスであるVA rgDataは、それが記述する引数について名前、タイプ及び利用コードを戻 すための方法を有する。インスタンスを参照するクラスであるVInstanc eDataは、その値(すなわち、実際のインスタンス)を獲得し、且つセット するための方法を有する。例外を記述するクラスに関しては、以下の誤り・例外 処理の章で説明する。 上記の情報は、通常、ネームスペースが列挙されるときにOSAにより構築さ れるが、システムのユーザによって直接に構築されても良い。OSAがその内容 を列挙するときにどの能力もオーバライドしない場合、通常、OSAは、情報を 検索する方法を有するのに加えて情報をセットするための相応する方法を有する 上記のクラスの各々のサブクラスを使用するであろう。そのため、オブジェクト システムの内容を確定するとき、OSAは上記のクラスの必要なインスタンスを 構築し、それらを「連結」するための方法を呼び出すであろう。たとえば、OS Aはそれらの方法を支援するVClassDataのサブクラスを構築し、次に 、そのクラスの特性に対応するVPropDataを構築し、更に、VClas sDataの中の特性のリストをセットするための方法を呼び出すであろう。図 4は、OSAが1つの方法12と、1つの特性13とを伴うDSOMクラス11 の記述を構築した結果を示す。この方法は1つの引数14及びショート(short) 15を取り出し、ロング(long)16を戻す。特性13はショートのタイプ17で あり、ショート引数19及び20をとる値18をセットする機能を有し、ボイド Void)21を戻す。特性は、ショート23を戻す値22を獲得する機能をも有す る。図4に示すように、情報をツリーとして編成する必要がないことは当業者に は明白であろう。 3)タイプ記述フレームワーク(Type Description Framework): 意味タイプと言語タイプの双方を記述するためのタイプ管理フレームワーク クラス記述フレームワークと同様に、タイプ記述フレームワークは、意味タイ プと言語タイプの双方を含むタイプを記述するためのものである。タイプ記述フ レームワークは、VTypeDataと呼ばれるタイプを記述するためのベース クラスと、整数、フロート、ダブル、バイト、符号なしロングなどの基本タイプ を表わすVcrFundamentalと呼ばれるVTypeDataの1つの サブクラスとを提供する。更に、構造(VcrStruct),ユニオン(Vc rUnion),ポインタ(VcrPointer)及びファンクションポイン タ(VcrFunctionPointer),オブジェクト参照(VcrOb jectRef),アレイ(VcrArray)及びストリング(VcrStr ing)を含むシーケンス(VcrSequence)、エニュムス(enum s)(VcrEnum)などの複合タイプをVTypeDataのこれらのサブ クラスを使用して記述することができる。また、任意に複合タイプを生成するた めに、タイプを入れ子型にすることも可能である。図5は、2つの項目26及び 27を含む構造25に対するポインタ24であるタイプの記述を示す。第1の項 目はショート28であり、第2の項目はロング29である。 4)フォワーディング・エンジン・フレームワーク(Forwarding Engine Framewo rk): これらの記述は、プロクシオブジェクトの操作をを実外部オブジェクトへ送り 出すことをどのようにして可能にするのであろうか? クラス記述及びタイプ記述という上記の要素を組み合わせて、1つのクラスを 完全に記述する。この方法の鍵となる2つの面は、意味論的にそれらの要素が有 意味である否かに関して要素にタグを付すことと、記述の中に意味情報と、非意 味情報の双方を含めることである。その結果、この記述方法は基本呼び出しメカ ニズムと、言語呼び出しコンベンションとを完全に記述することができる。たと えば、図6aは、CORBA呼び出しコンベンションに従った単純な方法呼び出 しに関する宣言を示す。方法35は、オブジェクト30と、環境ポインタ31( 全てのCORBA方法呼び出しの特性、環境ポインタは誤りを戻すためのメカニ ズムとして最も一般的に使用される)と、X32及びY33と名づけられた引数 という4つの引数をとる。この方法はボイド34を戻す。図6bは、この方法の 対応する記述を示す。 図7aは、異なる呼び出しコンベンションを使用する別のオブジェクトシステ ムにおける同じ方法を示す。この宣言においては、ダイナミック・インボケーシ ョン・インタフェース(DII)を使用して、方法を呼び出す。第1の引数36 はオブジェクトである。第2の引数は方法37の識別子である。次は引数38の 数のカウントである。最後に、これら引数はアレイ39にパックされる。DII は誤りポインタ40を戻す。図7bは、この呼び出しの対応する記述を示す。尚 、いずれの場合にも、オブジェクトX及びYのみが意味論的に有意味(SM)の ものとしてタグを付される。記述される他の面はその方法呼び出しをいかにして 実行すべきかのアーティファクトであるにすぎない。 要するに、1つのオブジェクトから別のオブジェクトへ方法呼び出しを送り出 すために、フォワーディングエンジンは実行された方法呼び出しの記述をウォー クダウン(walk down)し、呼び出しスタックから意味論的に有意味の全ての情報 を引き出す。次に、フォワーディングエンジンはそれが実行しようとしている方 法呼び出しの記述をウォークダウンし、記述された全ての情報を「コールスタッ ク(call stack)」に挿入し(コンピュータシステムの各プロセッサは機能呼び出 しを実行する前に引数をどの場所に挿入すべきかに関して特定の規則を有する、 そのような場所を一般には「コールスタック」と呼ぶ)、意味論的に有意味の情 報を正しい位置に転送する(また、必要に応じて、タイプを変換する)。次に、 実際に方法を呼び出すための正しい機能を呼び出す。方法が戻ったならば、同様 にその結果を元の方法コールスタックへ転送して、戻す。 図7cには、以下では外部オブジェクトシステムと呼ばれる図7のオブジェク トシステムで実行されるオブジェクトが、以下ではネイティブオブジェクトシス テムと呼ばれる図6のオブジェクトシステムに書き込まれたソフトウェアにより 使用されている場合に、図6の方法35を呼び出したときに実行されると思われ るステップが示されている。 まず、OSAがプロクシを構築した方式に基づいて、OSAはそのプロクシを 操作したソフトウェアから制御の流れ701を受け取る。次に、OSAが構築し たプロクシのレイアウトに基づいて、ネイティブオブジェクトシステムのOSA は実オブジェクトと、実オブジェクト及びプロクシオブジェクトの双方に関する VFunctionDataとを検索する(702)。これらはフォワーディン グエンジンフレームワークに渡される。代表的なプロクシオブジェクトのレイア ウトを図10に示すと共に、以下の7章で説明する。 フォワーディングエンジンフレームワークの第1の主要ステップはプロクシの VFunctionDataをトラバースし、VFunctionDataを使 用して、発生したばかりの方法呼び出しから意味論的に有意味の全ての情報を検 索する(703)。フォワーディングエンジンフレームワークはその引数のリス ト(すなわち、VcrArgumentのリスト)を尋ねる。引数ごとに、その 引数が意味論的に有意味であるか否かを判定する。引数自体が意味論的に有意味 でなく、その引数が複合タイプである場合、引数はそれ自体の中に意味論的に有 意味の情報をまだ含んでいると考えられる。従って、エンジンは引数の中に意味 論的に有意味の情報が存在しないことを確認するために、引数の内容を繰り返し トラバースしなければならない。 意味論的に有意味でない情報は放棄され、意味論的に有意味の情報は記憶され る。この例では、第1の引数30は方法が呼び出されたオブジェクトである。こ れは意味論的に有意味であるので、記憶される(ただし、プロクシオブジェクト に対するこの識別子はネイティブOSAにより既に検索されているので、最適化 という意味では記憶する必要はない)。 次の引数31は意味論的に有意味ではないので、無視される。第3及び第4の 引数32及び33は、それぞれ、意味論的に有意味であるので、検索、記憶され る。たとえば、インテル486マイクロプロセッサで実行される機能呼び出しか ら情報を検索するための方法の詳細な説明については、本明細書に参考として取 り入れられているIntell486 Microprocessor Family Programmer's Reference M anual(1992年)を参照。 元の方法呼び出しから意味論的に有意味の全ての情報を検索したならば、フォ ーワーディングエンジンが実行する次の主要ステップは、「コールスタック」に 適切な引数を配置することにより、実オブジェクトに関して方法呼び出しを構築 し始める(704)。この例では、フォワーディングエンジンは外部オブジェク ト(すなわち、実オブジェクト)の方法をいかにして呼び出すかを表わす、図7 に示すVFunctionDataをトラバースし、引数のリストを検索するで あろう。 第1の引数36は意味論的に有意味であるので、これをコールスタックに挿入 しなければならない。フォワーディングエンジンは、整合する情報を見出すため に、元の方法呼び出しから検索した情報のリストをトラバースする。この場合に はオブジェクト。元の呼び出しからのオブジェクトを外部呼び出しより要求され るタイプに変換し、スタックに挿入しなければならない。フォワーディングエン ジンは要求されるオブジェクトが実オブジェクトであるか否かを確認する(この 場合には実オブジェクトである)という最適化を含み、従って、その実オブジェ クトをコールスタックに挿入する。第2の引数37は、フォワーディングエンジ ンがコールスタックに挿入するストリング定数「MethodName」(すなわち、実方 法の名前)である。同様に、第3の引数38は値が2である定数ショートである ので、コールスタックには2が挿入される。 第4の引数39は複合タイプであるので、フォワーディングエンジンはその要 素をトラバースする。フォワーディングエンジンは2つのロング整数を含むこと ができるアレイを生成する。次に、フォワーディングエンジンは第1のエントリ を元の呼び出しから検索された情報と整合し、第1の位置にXを挿入する(ロン グ整数として、タイプ変換は不要)。第2の引数Yについても同じことを実行す る。これが完了したならば、フォワーディングエンジンはアレイをコールスタッ クに挿入する。 フォワーディングエンジンフレームワークにより実行される第3の主要ステッ プは、実際の方法を呼び出す(705)。フォワーディングエンジンは呼び出す べき機能のアドレスをVFunctionData41に要求する。この例では 、フォワーディングエンジンはDII機能のアドレスを戻す。次に、フォワーデ ィングエンジンは実際に機能を呼び出すためにポインタをデリファレンスする。 フォワーディングエンジンにより次に実行されるステップは、戻り値を処理す る(706)。フォワーディングエンジンはコールスタックから戻り値を検索す る。その戻りタイプが、元の方法呼び出しのVFunctionDataに要求 される。元の方法呼び出しはボイドを戻すので、「戻りスタック」に情報を挿入 する必要はない(「戻りスタック」という用語は、一般に、機能呼び出しの結果 が記憶されるコンピュータプロセッサ特有の1つ又は複数の記憶場所を表わす) 。 元の方法呼び出しから戻る前の最終ステップは誤り及び例外の処理である。こ の例では、外部方法は誤り情報に対するポインタを戻す(707)。VFunc tionDataの元来のトラバースは、環境ポインタを誤り情報を含むものと して識別していた(環境ポインタは誤り情報を転送するためのネイティブオブジ ェクトシステムの標準メカニズムである)。誤り及び例外処理フレームワークは 、例外が起こったか否かを判定し、情報を外部オブジェクトシステムにおいて実 オブジェクトに対する方法呼び出しにより提供された形態からネイティブオブジ ェクトシステムに適する形態に変換するタスクを委託される。この例では、必要 な変換が起こり、制御はフォワーディングエンジンに戻され、最終的には、元々 、方法35を呼び出したプロセスに戻される。 尚、フォワーディングエンジンが実行する一連のステップをソースコードとし て自動的に生成し、希望に応じて、実行のためにコンパイルすることが可能であ る。同様に、以上の説明は方法呼び出しに関連してなされていたが、あらゆる操 作に適用されることに注意する。更に、特に説明のない限り、操作中であるオブ ジェクトがオブジェクトシステムから出たものである必要はない。たとえば、変 更なしのC言語ソフトウェアがどのようなオブジェクトシステムでも実行される ように見せることができる。 OSAは、システムのフォワーディングエンジンフレームワークコードに方法 の送り出しを自動的に処理させるか否か、あるいはカスタムフォワーディング方 式を提供するためにフレームワークをサブクラス化するか否かについて選択でき る。場合によっては、OSAは実行しようとしている方法呼び出し(実行された ばかりの、送り出さなければならない方法呼び出しではない)の記述を見て、コ ールスタックからどの意味情報を除去しなければならないかを判定することがで きる。OSAは呼び出しがちようど実行されたオブジェクトシステムに対応する ため、OSAライタはコールスタックから情報をどのようにして除去すべきかを OSAにコード化することができる。すなわち、OSAはそれ独自の方法の一般 記述をウォークダウンする必要がない。 同様に、実方法(すなわち、外部オブジェクトシステムの方法)に関してVF unctionDataを構築したOSAは、実呼び出しを実行するために必要 であるとわかったどのような手段でも利用するように構築することができる。た とえば、OSAは、更にカスタム処理を実行するためにOSAへ「コールバック 」するようにVFunctionDataを構成することができる。 上記のクラスの記述は、ある特定のオブジェクトシステムに特有のものではな い。クラスを記述するためにどのオブジェクトシステムによっても生成可能であ り、いずれかのオブジェクトシステムによるオブジェクトの操作をいずれかのオ ブジェクトシステムへ送り出すために、どのようなOSAによってもトラバース でき、「実行」できる。そのため、オブジェクト操作を送り出す方法は(Nの2 乗−N)方式ではない。 オブジェクト自体の記述のためにオブジェクトが問い合わせられる場合にも類 似の方法が使用される。ネイティブオブジェクトの記述は、プロクシによりトリ ガされて、フォワーディングエンジン又はOSAのいずれかによってトラバース され、意味情報はその要求を発したオブジェクトシステムが要求するフォーマッ トに変換される。そのような情報のフォーマッティングはOSAの責務の1つで ある。 前述のように、何らかのタイプを含むストリング及び変数などの意味タイプ並 びに言語タイプを含むタイプは、多くの場合、オブジェクトシステム相互間で変 換されなければならない。システムは、2つのオブジェクトシステムの間で意味 タイプ及び言語タイプを非(Nの2乗−N)方式で変換することができるオブジ ェクト指向タイプシステムであるタイプ記述フレームワークを提供する。フォワ ーディングエンジンは、呼び出されたばかりの方法の記述の中のタイプ情報を利 用することにより、コールスタックから情報を引き出す。呼び出されようとして いる方法の記述をウォークするとき、フォワーディングエンジンは同様に予期さ れるタイプをも知る。元来のタイプと予期されるタイプの双方を知った後、タイ プ記述フレームワークは変換を実行する。 この特定の実施例においては、タイプ変換に際して、オブジェクト指向タイプ キャスティング及び中性タイプ表現という2つのメカニズムが提供される。オブ ジェクト指向タイプキャスティングでは、タイプ記述フレームワークは全てが同 一のタイプのサブクラスであるタイプの間で変換を実行することができる。これ は、それぞれのサブクラスがインプリメントする一組の方法を提供するスーパー クラスVTypeDataによって実行される。これらの方法はインスタンスを 構築するために必要な情報を戻す。この情報はサブクラスタイプのいずれをも十 分に生成できる。従って、変換時には、スタックからちょうど引き出されたタイ プのインスタンスについてこれらの方法を呼び出す。その結果は、スタックに挿 入されようとしているタイプのインスタンスを生成するために必要な情報を提供 する。 中性タイプ表現では、タイプはそれら自体を1つ又は複数の中性タイプに変換 する方式、並びに中性タイプからそれら自体に変換する方式を知る。たとえば、 ストリングのサブクラスとしてのCOM Bstrのようなストリングタイプは それ自体をASCIIストリング又はUnicodeストリングに変換する方法 並びにASCIIストリング又はUnicodeストリングからBstrに変換 する方法を有していると考えられる。従って、いずれかのストリングタイプから 他の何らかのストリングタイプに変換するときには、第1のタイプはそれ自体を ASCII又はUnicodeに変換し、第2のタイプはASCII又はUni codeからそれ自体に変換する。尚、タイプはどちらの変換が最も効率が良い かを承認することができ、変換は必要なときにのみ実行される。更に、以上の説 明は、タイプ変換の最適化が望まれる特定のオブジェクトシステム(及びタイプ )相互間での直接タイプ変換メカニズムの追加を排除するものではないことが当 業者には認められるであろう。 タイプ記述フレームワークは自動プロクシ構築をトリガする目的でも使用され る。すなわち、オブジェクトタイプを渡すとき、オブジェクトを呼び出されるべ きオブジェクトシステムのオブジェクトに「変換」しなければならない。そのた め、プロクシを構築する必要がある。プロクシ構築に関わる詳細なステップにつ いては、6)章及び7)章で説明する。 5)誤り及び例外処理フレームワーク(Error and Exception Handling Framewor k): 誤り及び例外を処理するためのフレームワーク 誤り及び例外処理フレームワークは,タイプ変換システムに大きく依存してい る。どのVFunctionDataについても、その一部としてVExcep tionDataを生成する。何らかの例外が起こったときには、タイプ変換シ ステムはその例外を1つのオブジェクトシステムにおけるタイプから別のオブジ ェクトシステムの対応するタイプに変換する。加えて、タイプ変換メカニズム はVExceptionDataの方法を介して、外部オブジェクトシステムの 例外処理システムをトリガする働きをする。 6)ライフサイクル管理フレームワーク(Llfecycle Management Framework): オブジェクトのライフサイクルを生成し、コピーし、破壊し、管理するための フレームワーク。 7)オブジェクト・エクスポーティング・フレームワーク(Object Exporting Fr amework): オブジェクト定義をエクスポートするためのフレームワーク。 オブジェクトのライフサイクルはオブジェクトシステムごとに異なるが、代表 的なオブジェクトシステムにおける1つのオブジェクトのライフサイクルを図8 に示す。プロセスは、ユーザがオブジェクトのインスタンスを生成しようとした ときに始まる(42)。まず、オブジェクトシステムは、オブジェクトを生成す るためのファクトリが利用可能であるか否かを判定する(43)。ファクトリが 利用可能でないならば、オブジェクトを生成するための呼び出しの中で指定され る通りに、オブジェクトシステムはサーバをスタートさせようとする(44)。 オブジェクトシステムはサーバアプリケーションをスタートし(又は適切な動的 連係ライブラリをロードし)、サーバアプリケーションへ実行を移行する(45 )。サーバは初期設定を実行し、それが支援する全てのクラスに対してファクト リを生成する(46)。次に、場合によっては「ファクトリ露出」と呼ばれるプ ロセスの中で、サーバはそのファクトリをオブジェクトシステムと共に登録する (47)。そのプロセスが完了すると、サーバは制御をオブジェクトシステムに 戻す(48)。そこで、オブジェクトシステムは所望のクラスのインスタンスを 生成するために適切なファクトリの方法を呼び出す(49)。ファクトリはオブ ジェクトのインスタンスを生成し(50)、最後に、そのインスタンスがユーザ に戻される(51)。オブジェクトが利用される間に、オブジェクトに対する追 加参照が生じる場合もある(52)。オブジェクトは、それ自身に対する参照を 有するいずれかの相手により破壊される場合もある(53)。オブジェクトを破 壊するためにオブジェクトへの参照を使用するたびに、サーバはオブジェクトク リーンアップが必要であるか否か(たとえば、オブジェクトが使用しているメモ リを割り当て解除すべきか否か)を判定する(54)。典型的には、これは最終 参照を破壊するときに起こる。 システムは、インタオペラビリテイをトランスペアレントに提供する。その結 果、システムは、オブジェクトシステムに対して、オブジェクトシステムに合わ せて特別に設計されたどのサーバも従うと考えられる標準ライフサイクルプロト コルに従う標準オブジェクトサーバとして現れなければならない。従って、シス テム、更に特定すれば、要求が起こったオブジェクトシステムのOSAは、項目 5及び6、項目8.5を含む項目3について責務を負い、10及び12の間に、 オブジェクトの利用/操作が適正に且つトランスペアレントに実オブジェクトへ 送り出されるように保証している。ところが、8.5の間には、OSAは別のO SA、すなわち、実オブジェクトが生成されたオブジェクトシステムのOSAと 共に機能して、実オブジェクトのプロクシを生成する。 システムは上記のステップを実行するためのフレームワーク、すなわち、オブ ジェクト・エクスポーティング・フレームワーク(Object Exporting Framework) を提供する。このシステムを含むどのアプリケーション/サーバも44になりう るであろう。図9に示すように、ステップ46を実行するときに、アプリケーシ ョンはそれ自体を初期設定し(55)、次にシステムを初期設定する(56)。 別のオブジェクトシステムからのクラスごとに、アプリケーション/サーバはこ のオブジェクトシステムにおいて利用可能にすることを望み、要求側のオブジェ クトシステムのOSAでExposeFactory方法を呼び出す(57)。 そのようなクラスのリストは、持続ストア又はファイルから確定されるか、ある いは動的に確定されて、アプリケーション/サーバでハードコード化されてもよ い。ExposeFactory方法は露出させるべきクラスのVClassD ataと共に呼び出され、ネイティブオブジェクトシステムから実ファクトリオ ブジェクトを戻す。これは必要に応じて新たなファクトリを構築するか(58) 、又は先に生成されていたファクトリを戻す(59)。また、その方法はそのフ ァクトリをネイティブオブジェクトシステムと共に登録する(60)。 クラスを露出させることのもう1つの面は、それらをネイティブオブジェクト システムの「レポジトリ(repository)」に登録することである。これは外部オブ ジェクトシステムに適する「言語」(CORBAシステムにおけるインタフェー ス定義言語、すなわち、IDL,COMのタイプライブラリ、又はC++ヘッダフ ァイル)でインタフェース記述を生成することを含んでいても良い。これには、 OSAがオブジェクトシステムのレポジトリと共にクラスを登録するためにAP Iを使用することも要求されるであろう。 オブジェクトインスタンスを生成するためにオブジェクトシステムがファクト リの方法を呼び出すとき、外部オブジェクトシステムにおいて実インスタンスを 生成し、次にネイティブオブジェクトシステム(すなわち、ファクトリの設計の 元になったオブジェクトシステム)に戻されるべきプロクシを生成するのは、フ ァクトリのジョブである。ファクトリを構築するとき、OSAはそのオブジェク トシステムのオブジェクトに関わるVClassDataを構築する。このVC lassDataと、実オブジェクト(ExposeFactory方法呼び出 しでOSAが提供されたオブジェクト)とはファクトリオブジェクトと共に記憶 される。オブジェクトを生成するためのファクトリオブジェクトの方法がオブジ ェクトシステムによって呼び出されると、ファクトリオブジェクトはフォワーデ ィングエンジンを使用して、作成呼び出しをそのオブジェクトシステムから(生 成したVClassDataを使用して)ネイティブオブジェクトシステムへ送 り出す。実オブジェクトが戻されると、ファクトリオブジェクトは外部オブジェ クトシステムに関わるOSA(更に厳密にいえば、OSAで提供されるオブジェ クト・エクスポーティング・フレームワークのサブクラス)においてAcqui reProxy方法を呼び出すことによりプロクシオブジェクトを構築する。 AcquireProxy方法は実オブジェクトのVClassDataと、 オブジェクトのインスタンスとを渡される。方法はネイティブオブジェクトシス テムでプロクシオブジェクトを構築し、そのオブジェクトと、そのOSAにより 要求される全ての情報に対するポインタを関連づける。プロクシオブジェクトの レイアウトはOSAまでであるが、代表的なプロクシオブジェクトを図10に示 す。プロクシオブジェクト61は、その方法テーブル62(C++ではvtabl eと呼ばれる)に対するポインタと、メタデータオブジェクト63に対するポイ ンタとから構成されている。メタデータイオブジェクトは、方法テーブル64に 対するポインタと、ネイティブオブジェクト65のVClassDataに対す るポインタと、ネイティブオブジェクト識別子66と、プロクシオブジェクト6 7のVClassDataに対するポインタと、経路短縮情報68とから構成さ れている。 ネイティブオブジェクトシステムでクラスのインスタンスが初めて生成される とき、オブジェクトシステムのAcquireProxy方法は一般的には方法 テーブルを生成しなければならない。方法テーブルを動的に生成する方式と、O SAがどの方法が呼び出されたかを検索するのに十分な情報を各方法と関連させ る方式は当業者には理解されるであろう。方法テーブルを介してオブジェクトシ ステムにより方法が呼び出されたとき、通常は次のステップが実行される:まず 呼び出されたばかりのプロクシオブジェクトの方法に関わるVFunction Dataを検索する。次に、プロクシオブジェクトのメタデータからネイティブ オブジェクトのVClassDataを検索し、今度はネイティブオブジェクト の対応する方法に関わるVFunctionDataを検索する。これらは方法 呼び出しの送り出しのためにフォワーディングエンジンに渡される。 プロクシオブジェクトの構成は42におけるようにユーザにより、又はタイプ 変換システムによりトリガできる。タイプ変換によってトリガされる場合には、 AcquireProxyを呼び出すだけで良い。 AcquireProxy方法を呼び出すとき、新たなプロクシオブジェクト を生成するのに先立って、ネイティブオブジェクトのプロクシオブジェクトがこ のオブジェクトシステムの中に既に存在しているか否かを検査しなければならな い。システムにより提供される能力を利用して、方法はオブジェクトのキャッシ ュを検査する。プロクシオブジェクトが存在しているならば、それを戻し、そう でなければ、システムは経路短縮が要求されるか否かを検査する。オブジェクト システムのインタオペラビリティを提供するために複数のシステムが協働してい るとき、プロクシを構築すべきオブジェクトそれ自体がプロクシオブジェクトで ある可能性がある。経路短縮(path shortening)とは、そのプロクシに関してプ ロクシを生成せず、その代わりに「オブジェクトの経路を短縮し」、実オブジェ クトに関してプロクシを生成する動作を表わす。たとえば、本明細書の中にも参 考として取り入れられている「SSP Chains: Robust,Distributed References S upporting Acyclic Garbage Collection,Shapiro,Dickman及びPlain Fosse著 ,Symposium on Principles of Distributed Computing(1992年8月)」な どの文献に、数多くの経路短縮アルゴリズムが記載されている。 8)ミキシン支援フレームワーク(Mixin Support Framework): オブジェクトクラスの記述に余分の情報を追加するためのフレームワークであ り、1つのオブジェクトシステムでのみ見出された特徴を全てのオブジェクトシ ステムで支援できるようにする。 多くの場合、1つのオブジェクトシステムは、別のオブジェクトシステムでは 利用できない特徴を提供する。更に、オブジェクトシステムはそのオブジェクト がいくつかの特徴を提供することを期待する場合が多い。システムは、ミキシン と呼ばれるそのようなインタオペラチリティの問題を処理するための汎用メカニ ズムを提供する。ミキシンは、単に、システム中の他の何らかのオブジェクトが 提供できる機能性を拡張するためにそのオブジェクトと関連づけることができる オブジェクトであるにすぎない。ミキシンはネイティブオブジェクトが提供しな いか、あるいはネイティブオブジェクトの方法のいずれか又は全てをオーバライ ドする方法を提供できる。全てのフレームワークはミキシン支援フレームワーク からサブクラス化されているので、ミキシンオブジェクトはシステムから提供さ れるどのクラスのどのインスタンスにも追加できる。 フォワーディングエンジンがネイティブオブジェクトの方法を求めてVFun ctionDataを検索するためにVClassDataをウォークダウンす るとき、まず、フォワーディングエンジンは方法を提供するオブジェクトと関連 するミキシンオブジェクトが存在するか否かを判定する。存在するのであれば、 エンジンは(ネイティブオブジェクトについて方法が存在するとしても)ネイテ ィブオブジェクトの方法ではなく、ミキシンの方法を呼び出す。ミキシンオブジ ェクトの方法をトリガして、ネイティブ方法呼び出しの前又は後に、ネイティブ オブジェクトの能力を増補することも可能である。システムにクラスレベル又は インスタンスレベルで知られているオブジェクトとミキシンオブジェクトを関連 づけても良い。更に、ミキシンオブジェクトはオブジェクトのサブクラスが列挙 されるにつれて継承される。ミキシン支援メカニズムを介して、ネイティブオブ ジェクトはその能力が増補されたことを認識する必要はない。 9)OSAレジストリフレームワーク(OSA Registry Framework): オブジェクトシステムアダプタをロードし、アンロードし、管理するためのフ レームワーク。 先に説明したように、オブジェクトシステムアダプタは、上記のフレームワー クのシステムのデフォルトインプリメンテーションの拡張を共にパッケージする ライブラリである。OSAはそれが対応するオブジェクトシステムと、OSAを 伴う他の全てのオブジェクトシステムとの間の両方向インタオペラビリティを完 全に支援するために必要なあらゆるものをパッケージしている。システムはOS Aレジストリフレームワークと名づけられたフレームワークを使用して、OSA を動的にロード、アンロードすることができる。OSAレジストリフレームワー クはAdapterNamespacesをロード、アンロードするための方法 を提供すると共に、システムのその他の部分に、どのオブジェクトシステムが支 援されるかを確定するためのオブジェクトシステムとは無関係の方式を提供する 。OSAはシステムの実行中にロード、アンロードされることができ、支援され るオブジェクトシステムの範囲を動的に拡張する。 本発明のその他の実施例 その他の実施例の範囲にある発明。別の実施例においては、たとえば、次のよ うなシステム及び方法が提供される。 (A)「汎用オブジェクト(universal object)」、すなわち、複数のオブジェク トシステムで同時に実行されるように見え、且つどのオブジェクトシステムを支 援するかを動的に変更することができる単一のオブジェクトの生成を可能にする システム及び方法である。このようなシステムは「汎用オブジェクト」の生成を 個別構成、アプリケーション構成及びサーバ構成で可能にする。更に、そのよう なオブジェクトは、解釈済言語技法又はコンパイル済言語技法に基づいていれば 良い。 異種オブジェクトシステムがインタオペレイトすることを可能にするのに加え て、このようなシステムは、わずかに変形した構成で使用された場合、オブジェ クトがいくつかのオブジェクトシステムで同時にインプリメントされるように見 せることができる。図11は、そのような構成で使用されているシステムの一例 を示す。図中、独立したCOMオブジェクト69は、DSOMベースアプリケー ション71においてDSOMオブジェクト70として現われているばかりでなく 、ORBIXベースアプリケーション73においてもORBIXオブジェクト7 2として現われている。 代表的なオブジェクトシステムがそのオブジェクトを使用できるようにする構 成には、「インプロセス(in process)」と「アウトオブプロセス(out of proces s)」の2つがある。たとえば、OLE2.0 Programmers Reference及びIBM SOMobjec ts Developer Toolkit Programmers Reference Manualを参照。オブジェクトを 「インプロセス」で使用する場合、オブジェクトは共用ライブラリと呼ばれるこ とも多い「ダイナミックリンクライブラリ(DLL)」として使用され、それら のオブジェクトを使用しているソフトウェアと同じプロセススペースにおいて実 行する。オブジェクトを「アウトオブプロセス」で使用する場合には、オブジェ クトは、それらを使用しているソフトウェアのプロセススペースの中ではなく、 オブジェクトが入っている別のアプリケーション又はサーバのプロセススペース において実行する。 図11は全てのオブジェクトが別個のプロセスで実行している場合を示すが、 インプロセスのオブジェクトと、アウトオブプロセスのオブジェクトの双方を支 援するオブジェクトシステムについては、システムをいずれの構成で使用しても 良いことは当業者には自明であろう。すなわち、システムがアプリケーションに より「インプロセス」で使用される場合、様々なフレームワークと、アプリケー ションによって使用されているオブジェクトシステムのOSAと、アプリケーシ ョンによって使用されているプロクシオブジェクトとを含めたシステムはDLL としてアプリケーションのプロセススペースの中で実行する。尚、プロクシは「 インプロセス」であるが、ネイティブオブジェクト(すなわち、プロクシに対応 する実オブジェクト)は「インプロセス」でなくとも良い。それらは、ネイティ ブオブジェクトシステムにおいて生成された方式に従って、インプロセス又は別 プロセスのいずれかになるであろう。 逆に、オブジェクトを使用しているアプリケーションがオブジェクトを「アウ トオブプロセス」で生成しうる場合には、システムが別プロセスで実行している としても、効率の観点から、ネイティブオブジェクトを「インプロセス」で生成 するであろう。この場合、インプロセスとはオブジェクトがそれらのオブジェク トを使用しているアプリケーションのプロセスではなく、システムのプロセスで 生成されることを表わしている。 図12aは、汎用オブジェクトを個別構成でイネーブルするシステムの一例を 示し、図12b及び図12cは、それぞれ、アプリケーション構成と、サーバ構 成を示す。図12aにおいて、74は3つのオブジェクトを含むCOM DLL である。オブジェクト75は、システムを介して複数のオブジェクトシステムか ら同時に出たように見える単独のオブジェクト(すなわち、アプリケーション又 はサーバの中にはないオブジェクト)である。対応するOSAを追加することに より、追加のオブジェクトシステムを簡単に支援できる。DLL75が1つ又は 複数の個別オブジェクトを含むことは当業者には自明であろう。 図12bは、アプリケーション構成で使用されているシステムの一例を示す。 システムは、複数のアプリケーションオブジェクトを含むアプリケーション76 に連係されている。この例では、アプリケーションはそのオブジェクトをシステ ムに(OSAと同じように)直接に記述しているので、OSAは不要である。ア プリケーションのオブジェクトは、システムを介して、複数のオブジェクトシス テムから同時に出たように見えるであろう。あるいは、適切なOSAを提供する ことにより、異なるプラットフォームで異なるオブジェクトシステムを使用して 同一のオブジェクトが実行されるように見せても良い。アプリケーションがオブ ジェクトシステムを利用するならば、OSAも利用されうるであろうということ は当業者には自明であろう。 図12cは、サーバ構成で使用されているシステムの一例を示す。サーバ構成 の特徴は、オブジェクトサーバ、すなわち、使用されているオブジェクトを含む 1つ又は複数のプロセスがそれらのオブジェクトを使用しているアプリケーショ ンとは別個のプロセスにあることである。図12cでは、サーバ78の中のオブ ジェクト77は、システムを介して、複数のオブジェクトシステムから同時に出 たように見えるであろう。 図11から図12cにおいては、オブジェクトをコンパイル済オブジェクトと して示したが、そうである必要はない。オブジェクトは解釈済言語で書き込まれ たオブジェクトであっても良く、完全に解釈されているか、又は中間表現を介し て実行されても良い。必要なのは、インタプリタがオブジェクトをアクセスし、 操作しうる何らかの基本メカニズムを提供し、OSAが書き込まれるか、又はイ ンタプリタがオブジェクトをシステムに直接に記述することだけである。このよ うな方式によって得られるユーティリティは、オブジェクトをインタプリタの言 語で書き込むことができ、それらのオブジェクトがシステムを介して対応するO SAを有する何らかのオブジェクトシステムから出たように見えることであり、 従って、対話型言語環境の急速開発という特徴を利用できる。 別の実施例においては、(B)前記の「汎用オブジェクト」を含めて、1つ又 は複数のオブジェクトシステムからのオブジェクトクラスの構築を可能にし、そ れらのオブジェクトクラスを生成するときに、複数のオブジェクトシステムから のオブジェクトのサブクラス化、取り込み、又はオブジェクトのインスタンスの 組込みが可能であるようなライブラリ利用又は対話型の装置が提供される。 従来、オブジェクトからのアプリケーションの構成を可能にし且つ/又はオブ ジェクトの構成を可能にしたライブラリベース又は対話型のソフトウェアは、そ のようなオブジェクトがツールによって支援される単一のオブジェクトモデルに 従うことを要求していた。たとえば、Micrsoft Visual Basic V3.0 Professiona l Features Book 1,Control Development Guide(1993年)を参照。場合に よっては、1つのオブジェクトシステムからのオブジェクトを別のオブジェクト システムの中で使用できるようにするダイナミックコンバータが開発されたが、 それら全てに制約が伴っていたうえに、外部オブジェクトの構成を可能にするも のはなかった。たとえば、Borland C++ V4.0のUser's Guide(1993年)を参 照。 この装置の場合、システムはアプリケーション構成で使用され、アプリケーシ ョンソフトウェアは、オブジェクトからアプリケーションを構成するため又はオ ブジェクトクラスを構築するためのコードとして当業者には良く知られている、 以下では構築ソフトウェアと呼ばれるコードである。アプリケーション又はオブ ジェクトクラスを構築するときには、構築ソフトウェアはいずれかのオブジェク トシステムからのオブジェクトクラスをOSAと共に(構築ソフトウェアの独自 の内部オブジェクトモデルに従うOSAがあれば、そのOSAに加えて)ロード する。構築ソフトウェアは外部オブジェクトクラスをシステムフレームワークを 使用して直接に操作するか、或はそのオブジェクトモデルからのメカニズムを使 用して操作する。システムにより提供される複数のオブジェクトシステムからの オブジェクトを操作する手段が一様であるため、装置がイネーブルされる。 別の実施例においては、(C)アプリケーション及びサーバの実行中に、オブ ジェクトクラス及びオブジェクトを利用しているソフトウェアも実行中である場 合でも、そのソフトウェアを崩壊させずに、1つ又は複数のオブジェクトシステ ムの中でアプリケーション及びサーバの間でそれらのオブジェクトクラス及びオ ブジェクトの場所を再指定することを可能にするシステム及び方法が提供されて いる。 「インプロセス」オブジェクトと共に使用する場合、あるいは個別構成、アプ リケーション構成又はサーバ構成で解釈言語環境と共に使用する場合に、1つ又 は複数のオブジェクトシステムにおけるアプリケション間及びサーバ間でのオブ ジェクトクラス及びオブジェクトの場所の再指定はイネーブルされる。オブジェ クトクラスを移動させるときには、まず、新たな場所/オブジェクトシステムに おいてそのクラスの1つのバージョンが利用可能でなければならない。これは、 ネイティブイオブジェクト定義を移動させること。インプロセスオブジェクトの 場合、それらが入っているDLLをコピーするか、又は他の手段によって移動さ せなければならない。解釈環境の場合には、ソース又は中間表現をコピーするか 又は他の手段によって新たな場所へ移動させ、適切なアプリケーション又はサー バにロードしなければならない。 システムを使用して、新たな場所及び/又はオブジェクトシステムのクラスを 露出させること。 新たな場所及び新たであると思われるオブジェクトシステムを反映させるため に、VClassData及びその他の記述要素を含めて、システム中のオブジ ェクトクラスの記述を更新すること。 クラスのインスタンスが既に存在しており、移動させるべきでない場合には( すなわち、新たなインスタンスのみを新たな場所/オブジェクトシステムに位置 させるべき場合)、そのクラスのバージョン番号を増分しなければならない。に よって実行される。 新たなインスタンスが生成、操作されるとき、それらは新たな記述を利用して 生成、操作されるので、新たな場所及びおそらくは新たなオブジェクトシステム について生成及び操作は適正に行われる。ネイティブオブジェクトに関して、シ ステムがオブジェクトの生成及び操作を実行するために利用されるのであればこ の方法は外部オブジェクトと、ネイティブオブジェクトの双方に適用される。 オブジェクトインスタンスも同様のメカニズムを使用して移動される。インス タンスに関わる既存のあらゆるプロクシ(すなわち、オブジェクトシステムごと 及びユーザごとのプロクシ)は、インスタンスの新たな場所及び/又はオブジェ クトシステムを反映するために、ネイティブオブジェクトのソフトウェア記述を 単純に更新させなければならない。 ここでは実例を示すために本発明の特定の実施例を説明したが、本発明の趣旨 から逸脱せずに様々な変形を実施しうることは理解されるであろう。従って、以 下の発明の範囲は添付の請求の範囲及びその等価物によってのみ限定される。 概説 透過(transparent)オブジェクトシステムサポート 「今日出現しつつある大域経済に参入するには..」Business Week 多重プラットホーム上を移動する製品における種々のオブジェクトシステムを サポートすることは伝統的に問題が多かった。同一オブジェクトシステムが全て のプラットホーム上において常に利用可能であるとは限らない。1つのプラット フォームにおいて選択されたオブジェクトモデルが他のプラットフォームにおい ても共通して選定されるとはとは限らない。この多様性は現存し、そして、予測 可能な将来においても継続するものと仮定すれば、アプリケーション・デベロッ パにとっては、多重(multiple)オブジェクトシステムをサポートすることが当面 する問題である。 多重オブジェクトモデルをサポートすることは、それ自体の問題を導入する。 例えば、OLE及びDSOMのような、オブジェクトシステム用のコードを書く ことは一般に複雑かつ時間のかかる作業である。更に、各個別オブジェクトシス テムの複雑な事情を学習するために必要な投資はかなりな額に達する。更に、オ ブジェクトモデルに対するコード化は、もとのコードの広範囲に亙る構成し直し に関係しかねない。決定的な「厄介事」は、或るアプリケーションを或る1つの オブジェクトモデルに対してコード化することが、同時に、別のオブジェクトモ デルに対するコード化の妨げとなることである。別のオブジェクトシステムに対 してコード化し直すことは、ここでも、多額の投資を必要とする。 「得策がある....」RonCo Industries PLC Visual Edgeクラスレジストリは、これらの問題を排除し、そして 、多重オブジェクトモデルをサポートするためにデベロッパが強要される投資額 を大幅に軽減する。クラスレジストリは、クラス、方法、特性、及び、データタ イプを記述するために、共通APIの背後の各オブジェクトシステムを抽象する 。APIは、ユーザー既存のクラス階層に容易にインタフェースするように設計 される。ユーザーのクラス階層がクラスレジストリに一旦記入されると、何等修 正の必要なしに、新規なオブジェクトシステムのサポートが行われる。個別オブ ジェクトシステムのサポートはランタイムにおいてインストール及び除去さえ可 能である。 クラスレジストリは、オブジェクトシステムアダプタを介してオブジェクトシ ステムにインタフェースする。オブジェクトシステムアダプタは、当該アダプタ がサポートするオブジェクトシステムの詳細を管理する責任がある。このオブジ ェクトシステムの詳細は、アダプタを越えて露出(expose)される必要は一切無い 。一旦、オブジェクトシステムアダプタがクラスレジストリにインストールされ ると、当該オブジェクトにとって既知であるあらゆるクラスは、必要に応じて、 クラスレジストリ内に透過的に導入可能であり、また、その逆も可能である。オ ブジェクトシステムアダプタは、クラスレジストリ内に記入された任意のオブジ ェクト例を当該アダプタが表すオブジェクトシステムに対して露出する全 ての詳細を処理する。更に、アダプタは、そのオブジェクトシステムから任意の オブジェクト例をクラスレジストリに戻す露出の詳細を管理する。 「しかし待て...更に ....」Ginsu Knives Inc. クラスレジストリユーザーが任意のオブジェクトシステムからオブジェクトを 透過的に操作することを可能にする同じファンクション性が、当該ユーザーがオ ブジェクトシステム「ブリッジ」として作用することを可能にする。クラスレジ ストリは、1つのオブジェクトシステムから他のオブジェクトシステムへの通路 を提供する。これは、例えば、クラスレジストリをブリッジとして使用すること により、OLE自動化アプリケーションがDOSMを制御すること、及び、その 逆を可能にする。或いは、他の例として、このファンクション性は、両端におけ る分散計算およびクラスレジストリをOLE〈─〉DSOMブリッジとして使用 することにより、OLE自動化アプリケーションが、「別の」マシンのOLE自 動化オブジェクトを制御することを可能にするはずである。 オブジェクトシステムアダプタを介してクラスレジスタによってサポートされ たオブジェクトシステムは、「オブジェクトシステム」の従来の定義に制限され ない。オブジェクトアダプタは、データベースをクラスレジストリにインタフェ ースするように作成可能である。従って、このデータベースは、任意の標準オブ ジェクトシステムから容易にアクセス可能である。更に、クラスレジストリは、 所有権オブジェクトシステム用のオブジェクトシステムアダプタを付加すること により標準オブジェクトシステムを所有権オブジェクトシステムにインタフェー スするために使用できる。他のオブジェクトシステムにおけるオブジェクトにア クセスしながら、同時に、それらのオブジェクトシステムを継続して使用するこ とを可能にするので、こにより、所有権オブジェクトシステムのユーザーに有力 なレバレッジを提供することとなる。 クラスレジストリは、インストールされた全てのオブジェクトシステムを、1 つの簡単な単一化された環境として、表すことが可能である。ただし、オブジェ クトシステムの別のユーザーは別の必要性を持つ。一方、幾らかのユーザーは、 全てのクラス及びタイプに関してフラットなネームスペースを欲しがり、他方、 別のユーザー達は、クラス及びタイプネームの厳密な階層的グループ分けを希望 することがあり得る。更に、別のユーザーは、彼らの現行タスクに更に密接に関 係するネームグループ分けの彼ら自身の階層を定義することを選定することもあ り得る。クラスレジストリは、ビューを用いることによりこれをサポートする。 ビューは、オブジェクトシステムアダプタによって定義された実際の階層かた独 立したネームスペース階層を定義する。異なったタスクに対して、ユーザーが彼 のクラスを、異なった方法において、組織化出来るように、アダプタに基づく階 層に関して異なる多重ビューを作成することが出来る。ビューは、それらの中の クラス及びタイプを参照するコードに影響を及ぼすことなしに、組織化し直すこ とも可能である。最後に、デベロッパは、彼らのユーザーに対して持続性のある ネームスペース階層を提供するために、 ビューをサブクラスすることが出来る。 「私にとって一体何の意味があるのか?」KTel Marketing L td. クラスレジストリは、あらゆるオブジェクトシステムにインタフェースするベ ースファンクション性を提供する。これは、デベロッパに対して彼らの資源を特 定の強度に自由に集中することを可能にする。クラスレジストリの単一ポータブ ルAPIの結果として、新規なオブジェクトシステムが現れ、そして、他のシス テムがすたれた場合に、アプリケーションのライフサイクルに亙って開発および メンテナンスコストを低減させる。これは、市販するための全投資額および時間 の大幅節減を意味する。 クラス階層 クラスレジストリは、クラス、ファンクション、及び、タイプのIDLまたは C++ヘッダファイルと同じ目的のために、これらよりも遥かに役立つ。即ち、 クラスレジストリは、C++クラスを通じてクラス及びタイプ階層を表す。クラ ス及びタイプは、静的、動的、および、データベース様資源からクラスレジスト リ内に入ることが出来る。クラス及びタイプ定義の静的資源は、一般に、手動で コード化され、そして、「コードアダプタ」に記億されたクラスレジストリエン トリである。例えばOLE及びDSOMのような動的資源は、それらの固有レポ シトリを介してクラスレジストリにクラス定義を提供する。例えばタイプライブ ラリのようなデータベースソースは、ロードクラスをクラスレジストリ内にデマ ンドするメカニズムを提供する。 クラス階層の定義と同様に、クラスレジストリは、クラスインタフェースを言 語インタプリタ、ビルダ、オブジェクトブローザ、及び、特性エディタにアドバ ータイズする柔軟な動的方法を提供する。クラスレジストリ内のクラスは、全体 としてブローズ可能であるか、又は、ネーム、バージョン番号、オブジェクトシ ステムアダプタ、等々別に要求可能である。クラスレジストリのユーザ(インタ プリタ、ビルダ、等々)は、当該クラスのソースに接続される必要はない。クラ スは、クラスレジストリ内にインストールされた任意のオブジェクトシステムか ら入来可能である。 クラスレジストリは、オーバーヘッド層の下の外部オブジェクトシステムにお いて定義されたオブジェクトを隠さない。クラスレジストリは、そのクラスイン スタンスを、当該インスタンスへの実際のポインタによってマニピュレートする 。この場合、変換またはキャスティングは一切不要である。これにより、クラス レジストリは、それらの固有オブジェクトシステムがオブジェクトにアクセスす る速さと同じ速さによってオブジェクトにアクセスすることが可能である。 クラスレジストリにおけるクラス記述は、クラスネーム、そのベースクラス( 単数または複数)、及び、その方法、ユーザーがアクセス可能な特性、ネストさ れたタイプ、例外、及び、名前付き定数、又は、例のリストを有する。 各方法および特性は、生きたオブジェクトのメンバーに実際にアクセスするた めのフックを伴った幾らかの情報(名前、データタイプ、及び、それらのタイプ のアーギュメントのリスト)を有する。各方法記述は、当該クラスレジストリを 使用するソフトウェアが方法を呼び出すためにコール出来るファンクションポイ ンタを有する。各特性記述は、2つのアクセッサ方法記述を含むことが出来る。 そのうちの一方は値を得るための記述であり、いま一方は値を設定するための記 述である。読み取り専用または書き込み専用特性は、アクセッサ方法の一方を省 略しても差し支えない。 Cコール可能ファンクションは一般的に用いられる。コンパイルされた殆どの 言語は、外部ファンクションコールのためのCをサポートする。C++法および データメンバーへの直接アクセスを与えることは便利ではあるが、当該言語によ って課せられる制限条件があるために、クラスレジストリから独立して開発され たクラスにとっては実用的でなくなる。C++法の実現が属性として断定可能で ある(例えば、マイクロソフトオブジェクトマッピングを使用するプラットフォ ーム)状況の下においては、仮想的方法の直接レジストレーションがサポートさ れる。これと同じ理由により、データメンバーは、直接オフセット又はメンバー ポインタでなくて1対のアクセッサファンクションによって表される。 次のダイアグラムは、クラスレジストリのクラス階層を示す。太い線で囲まれ たクラスは、クラスレジストリのユーザーによってサブクラスされることが可能 であるべきものとして指定される。 クラスレジストリは、クラスを定義するために広範囲に亙る例階層を提供する 。この階層の理解を容易にするために、見本としてのインスタンス階層を次の図 に示す。この図は、クラスレジストリ及びその構成部分のインスタンスレイアウ トの見本を示すに過ぎない。この図は、完全であることを意図するものでなく、 インスタンスレイアウトの概観を示すに過ぎない。実線矢印はオブジェクトへの 直接ポインタを表す。この階層は、インストールされた2つのオブジェクトシス テムアダプタを持つクラスレジスタを表す。クラスレジスタは、1つの方法と1 つの特性を持つ1つのクラスを有する。 静的エントリ(Static Entries) クラスレジストリは、方法および特性、タイプ、ファンクション、例外、及び 、名前付きインスタンスを伴った静的に定義されるクラスの作成をサポートする 。静的インスタンスは、クラス(VcrCodedClass、VcrCode dFunction、VcrCodedProP、VInstanceData 、VExeptionDataのインスタンス)を例にとることによって定義さ れる。これらのクラスは、インストールの方法およびクラスにおける特性をセッ トする、アーギュメントを加える、等々のためにAPTを提供する。クラスは、 VCodeClassオブジェクトを作成することにより定義される。方法およ び特性(VCodeFunction及びVCodePropインスタンス)は 、方法(AddMethodおよびAddProperty)を用いて当該クラ スに加えられる。 これらの方法は、AddArgumentを用いて当該方法に加えられる1組 のアギュメント(VcrArgumentのインスタンス)によって定義される 。方法を定義する場合には、Cコール可能なファンクションが提供されなければ ならない。 クラス方法用ラッパーファンクションを使用すると、特にスクリプトに際して 、プログラム可能なオブジェクトの統合を一層容易にすることが出来る。ラッパ ーアギュメントは、下位クラスのアギュメント用に用いられたタイプと厳密に同 じである必要はなく、ラッパーは、より簡単なタイプ(例えば「int.」のよ うな)から、例えばBasicのような言語において表現することが困難な列挙 法のような特殊なタイプに変換することが出来る。読み取り専用特性は、NUL Lセットファンクションを供給するか、又は、特性使用フラグを「読み取り専用 」にセットすることによりレジスタすることが出来る。 各Cラッパーファンクションのタイプは、当該タイプがその第1アギュメント (明示の「これ」)としてのインスタンスポインタを伴ったファイルスコープフ ァンクション(又は、静的メンバー)である場合を除き、当該タイプが表すメン バーファンクションにマッチする。マクロは、C++クラスメンバー用ラッパー 及びクラスレジストリアイテム構成コードの両方を生成する物として定義できる 。 動的エントリ 静的エントリの取り扱いに加えて、クラスレジストリは、高度に動的なエント リを取り扱うことが出来る。例えば、対話的オブジェクト開発またはオブジェク トシステムブリッジングにおいて、ユーザーが外部クラスに関してブローズおよ び要求する場合、又は、ユーザーが自身のクラスを加えるか、又は、変更する場 合に、クラスレジストリの内容は変化可能である。クラスレジストリが、動的で あるオブジェクトシステムに接続されている場合には、クラスレジストリ自体が 動的である。 例えば言語のインタプリタのような開発環境は、コンパイルタイム、ランタイ ム、又は、両者における全ての外部タイプ及び名前結合情報に関して、クラスレ ジストリに相談することができる。パーズタイムにおける質問の結果は、単に、 回答がランタイムまで延期されることを指示するに過ぎないこともあり得る。ク ラスが静的に定義される場合には、これらクラスの定義は、コンパイルタイムに おいて入手可能である。例えばDSOM又はOLEのようなオブジェクトシステ ムからクラスがインポートされる場合には、これらのクラスはコンパイルタイム において入手可能であるが、全てのこれらの方法および特性は、クラスがアクセ スされる時まで入手出来ないことも有り得る。更に、クラスは、データベースア ダプタから検索することも出来る。当該クラスがローカルキャッシュ内において 見付からない場合には、データベースアダプタは、クラスの定義を見付けるため に、データベースへの質問を行うことも出来る。 クラスレジストリの質問インタフェースは、抽象クラスVViewNameS paceによって定義される。名前結合サービスは、その仮想的方法を介して提 供される。一方において、クライアントプロセスは、一般に、1つのVClas sRegistryインスタンスによってされ、他方において、サーバープロセ スは、クライアント1人当たり1つのクラスレジストリインスタンスを持つこと が出来る。一般に、1つのプロセスによって維持されるクラスレジストリは、特 殊化された1組のアダプタを管理する。この場合、各アダプタは、クラス及びタ イプ情報の異なるソースに質問することができる。内部クラスレジストリデータ は、これら他のソース(例えばインタフェースレポジトリ)から出て来る情報に 関して、僅かにキャッシュ以上のサービスを提供する。 各オブジェクトシステムの特殊必要条件には、クラスレジストリアイテムクラ スのサブクラスを定義することによって適合可能である。レジストリアイテムク ラスは、クラスレジストリの構造およびそれを検査するためのAPIを定義する 。レジストリは、必ずアイテムクラスの仮想メンバーファンクションを介して相 談を受ける抽象APIである。 mixin(ミキシン)拡張性(extensibility) クラスレジストリは、当該クラスレジストリ自体のクラスに関するmixin フレームワークを定義する。クラスレジストリ内の各アイテムは、mixinに よって拡張可能である。クラスレジストリエントリに関するmixinは、或る オブジェクトシステムにおいては利用可能であるが、全てのオブジェクトシステ ムによってサポートされるとは限らないファンクション性に対するサポートを提 供する。更に、mixinは、クラスレジストリの基本的実現性を越えてそのフ ァンクション性を強化するためにも使用することが出来る。例えば、クラスレジ ストリからそれらのオブジェクトシステムへのクラス露出は、全てのオブジェク トシステムによってサポート可能というわけではない。従って、露出をサポート するオブジェクトシステムは露出mixinを提供することが可能であり、他方 、露出をサポートしないオブジェクトシステムは露出mixinの実現を提供し ない。mixinメカニズムは、ベースシステムモジュールをコンパイルし直す ことなしにクラスレジストリを完全に拡張可能にする。 Visual Edgeは、mixinの規格適合性(Apple Event Suiteに 類似的)を定義するために、そのパートナーと共に作用する。これにより、アプ リケーションのインターオペラビリティを強化し、アドオンツール用の強力市場 の促進を支援する。 mixinは、mixinが必要でない場合にはDLLをロードする必要がな いように、外部DLLにおいて提供可能である。これは、更に、システムがそれ 自体の「アドオンパッケージ」を定義することを可能にする。アドオンパッケー ジは、mixinの実現を含むDLLであっても差し支えない。DLLが見付か らない場合には、mixinは提供されず、システムは、そのデフォルト動作を 継続する。 更に、mixin拡張性メカニズムは、メモリ消費の節約も提供することが出 来る。mixinは、最初に要請された場合に、動的に作成される。mixin は、必要である場合に限って作成される。 クラスレジストリは、アプリケーション及びその中においてmixinが実現 されるオブジェクトシステムとは独立したmixinフレームワークを提供する 能力を提供する。即ち、アプリは、それ自体のオブジェクトシステムにおける抽 象クラス及びmixinのフレームワークを定義する。アプリが「クラスレジス トリアウェア」である場合には、第三者は、彼らが選定したオブジェクトシステ ムにおけるフレームワーククラス又はmixinの彼らによる実現を開発するこ とが可能である。ビルダーは、例えばフォント及びカラーのようなオブジェクト を特殊化して編集するためにmixinを定義することが出来る。本規格のmi xinの定義を採用したとすれば、第三者は、ビルダーがDSOM上においてさ どうする場合であっても、規格mixin定義を用いて、OLEにおいて特殊化 されたエディタの実現が可能である。これにより、ユーザーは、自由に選択が可 能であり、ユーザーのアプリのインターオペラビリティが増大する。 本仕様がいかに構成されているか この仕様の残りの部分は、クラスレジストリによって用いられるクラス及びタ イプを定義する。 * 第1セクションは、クラスレジストリ全体を通じて使用される列挙表および typedefsについて記述する。これらは、複数の場所において、そして、 複数の目的のために使用される一般的なタイプである。個別クラスに特有のty pedefsは、クラス自体と共にリスト表示される。 * 第2セグションは、ヘルプサポート、データリファレンス、及び、ファンク ションコールエラーリターンのための一般的クラスを定義する。これらのクラス は、例えば、記述およびヘルプサポート、エラー報告、及び、データリファレン スカウンティングのような、特殊ヘルパーファンクション用として用いられる。 * 第3セクションは、クラスレジストリのクラス用の基礎として用いられるベ ースクラスについて概説する。これらのクラスは、例えば、各要素に関する使用 コード及びヘルプ情報に関する普及情報のためにPAIサポートを提供する。 * 第4セクションは、クラスレジストリのユーザーに露出されるクラスを定義 する。これらのクラスは外界に対するAPIであるが、実現は実際にサブクラス しても差し支えない。 * 第5セクションは、露出された抽象クラスの実現であるクラスについて記述 する。これらのクラスは、直接例挙またはサブクラス化によって使用するために 使用可能である。 * 第6セクションは、クラスレジストリ用タイプ管理階層を定義する。これら のクラスは、タイプのキャスティング及びオブジェクトシステム間の比較のため にサポートを提供する。 * 最後のセクションは、現在定義済みのエキステンションにについて概説する 。これらのエキステンションは、ファンクション性をサポートする特定のクラス レジストリエントリにおけるmixinとして利用可能である。 クラスレジストリは、次に示すVisual Edgeユーティリティクラス を使用する。これらのクラスは、本ドキュメントにおいては定義されない。クラ スレジストリを使用するソフトウェアはこれらのクラスを定義するライブラリへ のアクセスを必要とする。 VArray 拡張可能なタイプされたアレイ。 VAtomDictionary 原子をキーとするハッシュテーブル。 VClass ランタイムタイプの識別用サポート。 VValue カプセル入りユニオンオーバー整数タイプ。 VString カプセル入りヌル終結Cストリング。 VAtomRef 高速ハッシング及び比較のために使用されるストリング アイデンティファイア。 VPrimary mixinサポート用ベースクラス。 VrPrimary 基準カウンティング及びmixin用ベースクラス。 VMixin mixin実行用ベースクラス。 VrReference 当該オブジェクトの基準カウントを追跡するオブジ ェクトに対するスマートポインタテンプレート。これは 、適切な多重スレッドサポート用として必要である。 VrRefList 当該オブジェクトの基準カウントを追跡するオブジェク トに対するポインタのアレイのテンプレート。これは、 適切な多重スレッドサポート用として必要である。これ は、VeReferenceオブジェクトのアレイでは ないことに注意されたい。 Type、及び、Enumeration(列挙) 使用コード レジストリは、殆どのアイテムにコードを関連付ける。使用コードはVTUs ageCodeタイプであり、そして、例えば、インタプリタは操作できるが、 ユーザーにとって直接アクセス可能にしてはならない特性に関する「隠し」のよ うなアイテムをどのようにして使用できるかについて記述するビットフラグの組 み合わせである。 使用コードは注釈および具体化の詳細を供給する。例えば、リファレンスによ るコール対値によるコールアーギュメントを指定するためには、個別タイプは使 用しない。使用ビットは、リファレンスによるコールとしてファンクションアー ギュメントをマークする。 使用ビットは、文脈特有であることをフラグし、そして、クラスの異なるアイ テムに関して異なる意味を付与することがあり得る(同じビットが、特性に関し ては一方の物を意味し、クラスに関してはもう一方の物を意味することもあり得 る)。どの使用コードがどのクラスに供給し、そして、更に、どのユーザーが当 該使用コードを最も参照しそうであるかを要約して次の表に示す。 使用するコードの意味は以下の通りである。 KVUsageReadOnly 特性がユーザーがアクセス可能なセット方 法を持たない。 KVUsageWriteOnly 特性がユーザーがアクセス可能なゲット 方法を持たない。 KVUsageDefaultProperty オブジェクト自体が値式に 現れた場合に、オブジェクトの1つの特性を、割り当て られるか、或いは、読取られるべき特性(アサインメン トの受取人として)として区別する。 KVUsageProtected クラスのこのエレメントが保護されたメ ンバーであることを指定する。 KVUsageThreadSafe この使用フラグは、このファンクショ ンまたは方法が同時に多重スレッドによってコールされ 得ることを指定する。 KVUsageStrict 正常な言語ルールによって強制されてはならな い特性、アーギュメント(引数)、ファンクションリタ ーン、または、方法戻し。 KVUageVarArg ファンクションまたは方法に関して、一切のアー ギュメント記述がそのために利用可能ではないことを示 示す。ファンクションまたは方法は、スクリプトされた ソースにおいて発見された際に、コールアーギュメント トを用いてコールされなければならない。可変個数のア ーギュメントを持つものとして記述されたファンクショ ンまたは方法は他のオブジェクトシステムに露出可能で あってはならない事に注意されたい。 KVUsageCallerlsOwner この使用フラグは、このファン クションリターン、方法リターン、アーギュメントにお いて戻される値がコーラーにより解放されるべきである ことを指定する。 KVUsageByRef アドレスによって実際にパスされるべきアーギュ メントを識別する。 KVUsageHidden ファンクション、方法、アーギュメント、また は、特性は、ユーザーでなくて環境によって供給される 。 KVUsageOptional ファンクション、または、方法アーギュメ ントは、コールにおいて省略され得る。 KVUsageHasDefault コールから省略された場合には、Vc rArgumentからのそのためのデフォルト値がコ ールにおいてパスされなければならないアーギュメント 。 KVUsageValue 特性に関して実際の値が保持されるべきアーギュ メントまたは特性の集合に関して指定される。特性の集 合が多重アーギュメントをとる場合に限りこれが必要と される。 KVUsageOut アーギュメントは、実際にファンクションまたは方法 からのリターンである。 KVUsaqeInOut アーギュメントは、ファンクションまたは方法へ の入力であるが、コール期間中に修正されても差し支え ない。 KVUsageDynamic この使用は、このクラス定義が質問の間で変 化するかもしれないことを指定する。即ち、クラスが質 問される場合には、当該クラスは、最初に質問された場 合よりもより多くのエレメントを持つこともあり得る( 特性、方法等)。エレメントは、取り去られることなく 加えられることだけが可能である。 KVUsageDeleteNotify これは、このプロセススペースに おいてこのオブジェクトのインスタンスが破壊されるか 、或いは、十分にデリファレンスされるた場合には、も う一方のアダプタがこれについて通告されることを指定 する。 KVUsageCannotSubclass このクラスは、言語またはビ ルダによってサブクラスされることは不可能である(た だし、その生来のオブジェクトシステムにおいてはサブ クラスされることもあり得る)。 KVUageDoNotCache この使用フラグは、このトップレベルア イテムが任意のビューによって隠されてはならないこと を指定する。 割り当てられていない利用可能な使用コードの集合はかなり小さい。使用コー ドは、他の定義と重複しないように、必要に応じて、Visual Edgeに よって割当てられなければならない。 Enum VTCallType この列挙は、方法またはファンクションを正しく呼ぶために要求される呼出し コンベンションを定義するために使われる。あらゆる所定のアーキテクチャに関 して、後続する呼出しコンベンションの幾つか、又は、全てが重複し、そして、 同じ具体化を提供しても差 し支えない。 KVCallTypeC C呼出しコンベンションによりファンクションをコ ールすること。この呼出しコンベンションは、プロトタ イプANSICなしで宣言されるか、或いは、可変個数 のアーギュメントと共に宣言されたファンクション用に 用いられなければならない。 KVCallTypeAnsic ANSI C、または、C++呼び出しコ ンベンショによりファンクションををコールすること。 この呼出しコンベンションは、ANSI Cプロトタイ プ及び固定数のアーギュメントにより宣言されたファン クション用に使用されなければならない。 KVCallTypePascal パスカル呼び出しコンベンションにより ファンクションをコールすること。この呼出しコンベン ションは、パスカルによって書かれるか、或いは、パス カル呼び出しコンベンション(即ち、_pascal) によって宣言されたファンクション用に使用されなけれ ばならない。 KVCallTypelnternal ANSI C呼び出しコンベンショ ン、及び、内部のコールサインによってファンクション をコールすること。内部のコールサインを次に示す: funcData コールのためのファンクション記述。 paramCount パラメータの個数。 paramTypes パラメータのタイプ。 params パラメータに対するポインタのアレイ。 resultType 要求されたリターンタイプ。 result (戻し)ファンクションのリターン値に対するポインタ。 全てのアーギュメントに関する値が指定されなければならない。隠されたアー ギュメントも含まれなければならない。アーギュメントのうちの1つでも期待し たタイプに変換出来ない場合、或いは、ファンクションの実際のリターンタイプ が所要のリターンタイプに変換出来ない場合には、当該ファンクションは、フェ ールし、そして、例外を返さねばな らない。 Enum VTSearchType この列挙は、クラスレジストリエントリーを探索する方法を指定するために用 いられる。オブジェクトシステムアダプタは、クラスまたはファンクションに関 しておそらく長く複雑な探索を行うべきかどうか、或いは、クラスまたはファン クションに関して簡単に局所的に見るべきであるかどうかを決定するために、こ のアーギュメントを使用しなければならない。タイプとファンクションの遅延し たバインディングをサポートする言語は、現在、定義が存在するかどうかを知る ために、初期においては、局所的な探索を実施しても差し支えない。クラスまた はファンクションが、パーズタイムにおいて、見付からなかった場合には、前記 の言語は、ランタイムにおいて、完全な探索を実施する。 KVSearchAll アイテムを見付けるために、可能な全ての方法によ り探索すること。 KVSearchLocal アイテムに関して、局所的探索のみを実施する こと。アイテムを見付けるために、時間を無駄にする一 切の操作を行わないこと。 Enum VTSearchCase この列挙は、クラスレジストリエントリーに関する名前の探索を実施する方法 を指定するために使用される。クラスレジストリエントリーのオブジェクトシス テムアダプタ及びサブクラスは、名前探索の両モードをサポートすることを試み なくてはならない。ケースインセンシティブな探索が不可能である場合には、全 ての探索は、その代わりに、ケースセンシティブでなければならない。 KVCaseSensitive 名前探索がケースセンシティブである。 KVCaseInsensitive 名前探索がケースインセンシティブで ある。 Enum VTClassTag この列挙は、特定のVcrBaseインスタンスが属するVcrBaseの主 要なサブクラスを決定する。これは、クラスレジストリにおいて総称ルックアッ プから戻されたオブジェクトのタイプを区別するために使用することが出来る。 Enum VTTypeSubclass この列挙は、特定のVTypeDataインスタンスが属するVTypeDa taのサブクラスを決定する。これは、タイプツリーの横断を容易にするために 使用できる。 Enum VTExceptionType この列挙は、例外を呼ぶ全ての総称クラスレジストリファンクションを定義す る。 KVExceptionUnknown 例外のタイプは未知である。 KVExceptionCallFailed 例外のタイプは、コールサポ ートコードに特有である。オブジェクトアダプタは、配 列上のエラー等々が発生した場合に、このタイプの例外 を返さねばならない。 KVExceptionCalleeFailed コールは完成したが、コ ールされたファンクションが例外を生成した。 KVExceptionNoResources コールを完成するには利用 可能な資源が不十分であった。例えば、これは、メモリ を使い果たすことによって生成され得る。 KVExceptionBadparam パラメータの1つは、必要とされ るタイプに変換されてはならない。 KVExceptionParamCount パラメータの個数が誤ってい た。 KVExceptionBadObject コールが試みられたオブジェク トインスタンスは無効であった。 KVExceptionCouldNotExpose コールにパスされた オブジェクトインスタンスが外部オブジェクトシステム からのインスタンスであったので、このインスタンスは 固有オブジェクトシステムからのインスタンスに変換出 来なかった。 Enum VTInternalRefType VTInternalRefTypeは、クラスレジストリエントリーに対す る内部リファレンスのタイプを定義する。 KVDirectRef リファレンスは階層内の他のアイテムに直接向けら れる。 KVLoopRef リファレンスは循環性を形成しても差し支えない。 VTObjectSystem タイプマネージャまたはクラスレジストリエントリと関連したオブジェクトシ ステムアダプタを決定するために用いられる16ビットの符号なし数として定義 される。このIDは、自身のオブジェクト及びクラス対他のオブジェクトシステ ムからのクラス及びオブジェクトに関するあらゆるハンドリング必要条件を決定 するために、オブジェクトシステムアダプタによって使用される。更に、このI Dは、クラスレジストリに質問する際の探索判定基準を決定するためにも使用さ れる。VTObjectSystemのIDは、Visual Edgeによっ て割当てられなければならない。事前定義されたオブジェクトシステムIDはK VAnyObjectSystem及びKVNoObjectシステムである。 VTVersion VTVersionは、名前は同じであるが、具体化の異なるクラスのバージ ョン番号を指定するために用いられる32ビットの符号付き数として定義される 。更に高いバージョン番号は一層新しい定義を意味する。負のバージョン番号は 違法である。一定のKVVersionNotSpecifiedは、最高バー ジョンが発見されるべきであることを指定するために、探索中に用いられる。 Suport(サポート)クラス サポートクラスは、他のクラスレジストリのクラスに対してサポートを提供す る。VcrHelpクラスは、クラスレジストリエントリ、及び、オブジェクト 方法及びエラーをコールする特性に関するヘルプ情報を提供するために用いられ る。VcrCallExceptionは、方法または特性へのコールが失敗す る理由に関する情報を提供する。問題のソースについて利用可能なエンドユーザ が読み取り可能な情報がある場合には、VcrCallExceptionのイ ンスタンスがVcrHelpのインスタンスを含んでも差し支えない。必要に応 じてデータオブジェトが削除されるように、リファレンスカウントされたデータ オブジェクトを容易に維持するためにVcrDataRefが用いられる。 クラスVcrHelp VcrHelpは、クラスレジストリヘルプインタフェースを定義する。Vc rHelpのサブクラスは、各プラットホームの固有ヘルプシステムを利用する ため実行されることを意図したものである。 公共メンバー VcrHelp VcrHelpオブジェクトを構成する。 −VcrHelp VcrHelpオブジェクトを破壊する。 オーバライド可能な公共メンバー Description 所有者オブジェクトの本文記述を戻す。 PutDescrlption このヘルプアイテムのために本文記述をセッ トすること。 HasHelp アイテムが、その所有者オブジェクトに関するヘルプ情報を ディスプレイでこるかどうかを指示する。 DisplayHelp 所有者オブジェクトに関するヘルプ情報をディスプ レイすること。 VcrHelpコンストラクタ description 所有者オブジェクトの記述。 ヘルプサポートオブジェクトを作成すること。記述を、そのアーギュメントを みなす便利なコンストラクタがある。これは、デフォルト記述情報をセットする 。 VcrHelpデストラクタ ヘルプサポートオブジェクトを破壊すること。クラスレジストリまたはタイプ マネージャーオブジェクトにヘルプオブジェクトが加えられる場合には、その所 有者が破壊される時に、当該ヘルプオブジェクトが破壊される。 Description、及び、PutDescription Description特性は、所有者オブジェクトの本文記述を記憶する。 例えば、記述の動的ルックアップを遂行することは、サブクラスにおいて再実行 可能である。記述は、エンドユーザーに対するディスプレイに適するか、或いは 、そうでない場合には””でなくてはならない。 HasHelp HasHelpは、このオブジェクトが固有ヘルプシステムをサポートするか どうかを戻す。リターンが真である場合には、VcrBase::Displa yHelpは、自 身のオブジェクトに関するヘルプを持ち出すことができなければならない。 DisplayHelp DisplayHelpは、所有者オブジェクトに関する情報と共に固有ヘル プシステム情報を持ち出す。オブジェクトがヘルプをサポートしない場合には、 HasHelpは偽を戻さねばならない。 クラスVcrCallException VcrCallExceptionは、失敗したコールに関する情報をファン クションまたは方法に戻すために使われる抽象クラスである。 公共メンバー(Public Members) PutHelp この例外に関するヘルプシステムオブジェクトをセットする 。 オーバライド可能な公共メンバー(Overridable Public Members) Type 例外のタイプを戻す。 Code 例外に関するエラーコードを戻す。これは、例外のソースに特有で ある。 SourceName 例外のソースの名前を戻す。 Help この例外に関するヘルプシステムオブジェクトを戻す。 Index 例外の原因となるパラメータ(有る場合には)のインデックスを 戻す。 UserType これがユーザーによって定義された例外である場合には、 例外タイプを戻す。 UserData これがユーザーによって定義された例外である場合には、 例外データを戻す。 Help、及び、PutHelp help このアイテムに関するヘルプ。 Help特性は、この例外に関するヘルプシステムオブジェクトを記憶する。 ヘルプシステムオブジェクトは、この例外に関する記述情報、並びに、固有ヘル プシステムからのヘルプをディスプレイすることが出来る。Help特性がNU LLである場合には、この例外は一切のヘルプをサポートしない。 Type typeは、例外のタイプを戻す。このタイプは、言語特定エラーメッセージ に翻訳可 能である。 Code Codeは、ソース特定エラーコードを戻す。この値の意味がソースに関して 既知でない限り、この値は解釈不能である。 SourceName SourceNameは、例外のソースの名前を戻す。これは、アプリケーシ ョン、オブジェクトシステム等の名前であっても差し支えなく、或いは、クラス レジストリコード内においてエラーが検出された場合には、””であることもあ り得る。 Index Indexは、例外を引き起こしたアーギュメントのインデックスを戻す。例 外タイプが特定のアーギュメントに適用されない場合、或いは、例外を引き起こ すアーギュメントが未知である場合には、この値は負である。 UserType UserTypeは、ユーザーによる定義済みの例外の発生したタイプを戻す 。例外に関するデータは、UserDataにより検索される。 UserData UserDataは、ユーザーが定義した例外と関連するデータを戻す。この データのタイプは、例外のタイプと同じである。 クラスVcrDataRef VcrDataRefは、オブジェクトまたはデータに関するリファレンスを 管理するために使用されるクラスである。当該クラスは、自己記述であり、そし て、データを引用する全てのVcrDataRefオブジェクトの処理が終った 場合、データを適切に処理する。自動削除作動に関しては、全てのリファレンス は、直接オリジナルデータからではなく、当該データに関する第1リファレンス から構成されなければならない。内部的には、リファレンスは、オブジェクトに 関する所定数のリファレンスを一時的場所に記憶するの で、全てのVcrDataRefオブジェクトがこれにアクセスすることができ る。 公共メンバー VcrDataRef VcrDataRefオブジェクトを作成する。 Address ポインタをデータに戻す Type データのタイプを戻す。 Value 内部VValueを戻す。 PutPointer ポインタをデータにセットする。 PutConstant データの値を定数にセットする。 putcopy 別のデータリファレンスのコピーであるように、これをセッ トする。 PutOwnership リファレンスに関するデータの所有権をセットす る。 IsContained データがリファレンスに含まれるかどうかを戻す。 WillDelete データが削除されるかどうかを戻す。 WillDeref オブジェクトがデリファレンスされるかかどうかを戻す 。 VcrDataRefコンストラクタ dataPntr データに対するポインタ。 data リファレンス値に関する実データ。 copy VcrDataRefのコピー。 type データのタイプ。 doDelete リファレンスがゼロに行く場合にデータを削除すること。 doDeref リファレンスがゼロに行く場合にオブジェクトの引用を解除 すること。 リファレンスオブジェクトを作成する。データがVValueに記憶されて提 供される場合、データは一定でなければならない。VValueが供給され、そ して、タイプがゼロである場合には、タイプは、VValueに記憶されている タイプから初期化される。これは、データのタイプに関するあらゆる別名情報を 失う可能性のあることに注意すること。基本的なタイプ(オブジェクトポインタ 、ポインタ、ストラクト、等々ではない)に 限り、VValueにおいてサポートされる。タイプがオブジェクトポインタで はない場合には、doDerefは無視され、そして、doDeleteがTR UE(真)であり、リファレンスの数がゼロに達する場合には、UxFreeは データに関してコールされる。タイプがオブジェクトポインタである場合、do DeleteがTRUEであるならば、リファレンスカウントがゼロに到達する とき、クラスインスタンスに関するデストラクタがコールされる。そうでない場 合において、doDerefがTRUEであれば、クラスインスタンスの解放方 法がコールされる。アーギュメントなしのコンストラクタは、空のリファレンス を作成する。 Address Addresは、ポインタをデータに戻す。コンストラクタ又はPutPoi nterにパスされたポインタは戻される。リファレンスがVValueからの 定数によって初期化される場合には、データに対するポインタも戻されるが、定 数に対すに関するリファレンスは、それ自体内の記憶場所にポインタを戻す。従 って、リファレンスが消滅した後において、ポインタを使用してはならない。 Type Typeは、データのタイプを戻す。これは、コンストラクタ、又は、Put Pointer、又は、PutValueにパスされた値と同じである。 Value データが定数である場合には、Valueは内部VValue記憶を戻す。デ ータがポインタである場合には、無効VValueが戻される。IsConta inedがTRUEを戻す場合に限り、この方法がコールされなければならない 。 PutPointer dataPntr データに対するポインタ。 type データのタイプ。 doDelete リファレンスがゼロに行く場合に、データを削除すること 。 doDeref リファレンスがゼロに行く場合に、オブジェクトの引用を解 除すること。 リファレンスオブジェクトをリセットする。タイプがオブジェクトポインタで ないならば、doDerefは無視され、そして、doDeleteがTRUE であり、そして、リファレンスの数がゼロに達する場合には、UxFreeはデ ータに関してコールされる。タイプがオブジェクトポインタである場合、doD eleteがTRUEであるならば、リファレンスカウントがゼロに達すると、 クラスインスタンスに関するデストラクタがコールされる。そうでないない場合 には、doDerefがTRUEであるならば、クラスインスタンスの解除方法 がコールされる。以前にリファレンスされたあらゆるデータは、あたかもこのリ ファレンスが破壊されてしまったかのように扱われる。 PutConstant type データのタイプ。 dataPntr データに対するポインタ。 doDelete リファレンスがゼロに行く場合に、データを削除すること 。 doDeref リファレンスがゼロに行く場合に、オブジェクトの引用が解 除される。 リファレンスオブジェクトをリセットする。データは一定でなければならない 。タイプがゼロである場合には、タイプは、VValueに記憶されているタイ プから初期化される。これは、データのタイプに関するあらゆる別名情報を失う 可能性のあることに注意すること。基本的なタイプ(オブジェクトポインタ、ポ インタ、ストラクト、等々ではない)に限り、VValuesにおいてサポート される。以前にリファレンスされたデータは、このリファレンスがあたかも破壊 されてしまったかのように扱われる。 putCopy copy VcrDataRefのコピー。 リファレンスオブジェクトをリセットする。リファレンスの新規な値は、コピ ーの値と同じである。コピーがVValueベースのVcrDataRefでな かった場合に限り、これは、コピーと同じデータをポイントする。この場合、こ のVcrDataRefは、コピーにおける値の複製を含む。以前にリファレン スされたデータは、このリファレンスがあたかも破壊されてしまったかのように 扱われる。 PutOwnership doDelete リファレンスがゼロに行く場合、データを削除すること。 doDeref リファレンスがゼロに行く場合、オブジェクトの引用を解除 すること。 データが引用される場合には、PutOwnershipは所有権情報を変更 する。データがVValueに記憶される場合には、この方法は効果が無い。こ の方法は、一般に、オブジェクトまたはデータの所有権を引き継ぐために用いら れる。コーラーは、データの寿命が、当該データに関する全てのリファレンスの 寿命よりも長いことを確認しなければならない。 IsContained IsContainedは、データが、リファレンス内のVValueに記憶 されている定数であるかどうかを戻す。 WillDelete WillDeleteは、当該データに関する全てのリファレンスが消滅する 場合に、データが削除されるかどうかを戻す。データが、リファレンス内のVV alueに記憶されている定数である場合には、これはTRUEを戻す。 WillDeref WillDerefは、当該オブジェクトに関する全てのリファレンスが消滅 する場合に、オブジェクトが引用解除されるかどうかを戻す。データが、リファ レンス内のVValueに記憶されている定数である場合には、これは、FAL SEを戻す。 Base(ベース)クラス これらのクラスは、全てのクラスレジストリエントリーのためのベースクラス である。それらは、殆どの異なるクラスを通じて必要とされる一般的方法及び特 性を提供する。VcrBaseは、全てのクラスレジストリクラスに関する最小 公分母を定義し、リファレンスカウント、ヘルプ情報、等々をサポートする。そ の方法の多くは、純粋に仮想であり、そして、サブクラスにおいて実行される。 VcrToplevelは、ネームスペースにおいて直接見付けることのできる クラスレジストリアイテムのためのベースクラスであり、クラスレジストリエン トリーのバージョンナンバリング及び視点ビュー情報のメンテナン スのためのサポートを提供する。 クラスVcrBase VrPrimaryの共用サブクラス VcrBaseは、全てのクラスレジストリエレメント及びタイプ記述に関す るベースクラスである。VcrBaseは、アイテムに関する名前、タイプ、使 用、及び、ヘルプ情報に関する方法および記憶装置を提供する。このベースクラ スは、その派生クラスにおける使用のためのリファレンスカウントをサポートす る。VerBaseは、直接的にインスタンス生成可能ではない。 保護されたメンバー(Protected Members) AcquireChild 子に関するリファレンスを獲得するためにベース クラスに尋ねる。 ReleaseChild 子に関するリファレンスを解除するためにベース クラスに尋ねる。 オーバライド可能な保護されたメンバー(Overridable Protected Members) AcquireChildren 子等に関する内部リファレンスを獲得する 。 ReleaseChildren 子等に関する内部リファレンスを解除する 。 共用メンバー Acquirelnternal オブジェクトに関する内部リファレンスを 獲得する。 ReleaseInternal オブジェクトに関する内部リファレンスを 解除する。 putOwner オブジェクトの所有者を変更する。 PutHelp このアイテムのためにヘルプ情報オブジェクトをセットする 。 Tag このアイテムを識別するタグを戻す。 オーバライド可能な共用メンバー Name アイテムの名前を戻す。 Type アイテムのタイプを戻す。 Usage アイテムのための使用フラグを戻す。 Owner 所有者にオブジェクトを戻す。 Help このアイテムに関するヘルプ情報オブジェクトを戻す。 0bjectSystem このアイテムを管理するオブジェクトシステムを 戻す。 保護されたデータメンバー VTAtomp itsName アイテムの名前。 VTUsageCode itsUsage アイテムの使用フラグ。 AcquireChild child 子に関するリファレンスを獲得するためのチャイルド。 refType 子に関するリファレンスを獲得するためのリファレンスのタ イプ。 この方法は、オブジェクトの子に関する内部リファレンスを獲得する。例えば 、クラスは、その方法、特性、タイプ、等々にリファレンスを直接加える。新規 な子がオブジェクトに加えられる時にはいつでも、そして、AcquireCh ildrenがコールされる場合にはこの方法がコールされなければならない。 子に加えるためのリファレンスタイプの選択を次に示す: * 直接内部リファレンスは、子に関してはそれらの所有者別に、そして、それ らのタイプオブジェクトに関してはアイテム別に保持される。AcquireC hild(KVDirectRef)は、内部リファレンス参を直接加える。 * ループ内部リファレンスは、クラス、ファンクションの関するタイプ及び他 のタイプ別に保持される。AcquireChild(KVLoopRef)は 、ループ内部リファレンスを加える。 ReleaseChild child 子からリファレンスを解除するためのチャイルド。 refType 子に関するリファレンスを解除するためのリファレンスのタ イプ。 decRef リファレンスカウントのデクリメント。 deleteSelf リファレンス参カウントがゼロに到達した場合の自己 削除。 ReleaseChildは、オブジェクトの子から内部リファレンスを除去 する。子がオブジェクトから解任されるときはいつでも、そして、Releas eChildrenがコールされた場合に、この方法がコールされなければなら ない。 AcquireChildren この方法は、オブジェクトの全ての子に関する内部リファレンスを獲得する。 この方法は、AcquireInternalに限ってコールされる。例えば、 クラスは、リファレンスをその方法、特性、タイプ、等々に直接加える。子に加 えるためのリファレンスタイプの選択を次に示す: * 子に関する直接的な内部リファレンスは所有者別に、そして、それらのタイ プオブジェクトに関してはアイテム別に保持される。AcquireChild (KVDirectRef)は、直接内部リファレンスを加える。 * ループ内部のリファレンスは、クラス、ファンクションに関するタイプ、及 び、他のタイプに関するタイプ別に保持される。AcquireChild(K VLooRef)は、ループ内部リファレンスを加える。 ReleaseChildren decRef リファレンスカウントのデクリメント。 deleteSelf リファレンスカウントがゼロに到達した場合の自己削 除。 ReleaseChildrenは、その全ての子から内部リファレンスを解 除する。この方法は、ReleaseInternalに限ってコールされる。 ブーリアン・アーギュメントは、子へのReleaseChildコールにパス されなければならない。deleteSelfがTRUEであれは、Relea seChildrenは、その子に対するあらゆるポインタをNULLによって 交換することが出来る。deleteSelfがFALSEであるならば、Re leasechildRefsは、その子供に対するポインタを解除してはなら ない。 AcquireInternal refType オブジェクトに関するリファレンスを獲得するためのリファ レンスのタイプ。 この方法は、オブジェクトに関する内部リファレンスを獲得する。Acqui reInternalは、新規に加えられたリファレンスを含むオブジェクトに 関する外部および内部リファレンスの全数を戻す。内部リファレンスは、クラス レジストリ階層内において制御されるオブジェクトに関するリファレンスである 。外部リファレンスは、クラスレジストリ階層外において制御されるオブジェク トに関するリファレンスである。内部リファレンスはリファレンスカウントにお ける循環性を回避するために使われる。この方法はAcquireChildに 限ってコールされる。リファレンスタイプの選択を次に示す: * 外部リファレンスは、クラスレジストリ外のオブザーバによってのみ保持さ れる。外部リファレンスを加えるために獲得がコールされなければならない。 * 直接内部リファレンスは、それらの子に関しては所有者別に、そして、それ らのタイプオブジェクトに関してはアイテム別に保持される。AcquireI nternal(kVDirectRef)は、直接内部リファレンスを加える 。 * ループ内部リファレンスは、クラス、ファンクションに関するタイプ、及び 、他のタイプ別に保持される。AcquireInternal(kVLoop Ref)は、ループ内部リファレンスを加える。 Releaseinternal refType オブジェクトに関するリファレンスを獲得するためのリファ レンスのタイプ。 decRef リファレンスカウントのデクリメント。 deleteSelf リファレンスカウントがゼロに到達した場合の自己削 除。 ReleaseInternalは、オブジェクトに関する内部リファレンス を解除する。戻り値は、残存するオブジェクトに関する外部および内部リファレ ンスの全数である。ReleaseInternalは、必要に応じて、Rel easeChildRefsをコールする。ReleaseInternalは 、循環リファレンスの解決について配慮する。この方法は、ReleaseCh ildに限ってコールされる。 PutOwner owner このオブジェクトの所有者 PutOwnerは、このオブジェクトの所有者をセットする。所有者特性は 、ルーツタイプ又はクラス定義にまでインスタンスツリーを追跡することを可能 にするために使われる。この方法は、VcrBaseの事前決定されたサブクラ スによって自動的にコールされる。 Help、及び、PutHelp help このアイテムに関するヘルプ。 Help特性は、このアイテムに関するヘルプシステムオブジェクトを記憶す る。ヘルプシステムオブジェクトは、このオブジェクトに関する記述情報、並び に、固有ヘルプシステムからヘルプをディスプレイする能力を提供する。Hel p特性がNULLであるならば、このアイテムは一切のヘルプをサポートしない 。 Name Nameは、オブジェクトの名前を戻す。名前は、VcrBaseのサブクラ スのコンストラクタに対するアーギュメントとして指定された。 Tag Tagは、オブジェクトのタグを戻す。タグは、このオブジェクトがVcrB aseのサブクラスのどのタイプであるかを識別する。各サブクラスは、正しい 具体化を提供するために、この方法を再定義する。 Type Typeは、オブジェクトのタイプを戻す。デフォルト具体化はNULLを戻 す。この方法は、有意義である場合においては、各々のVcrBaseサブクラ スにおいて再定義されなければならない。すなわち、VClassDataは、 クラスに関するオブジェクトリファレンスであるタイプを戻すべきである。VF unctionDataは、ファンクションの戻りタイプを戻すべきである。V PropDataは、特性のタイプを戻すべきである。VcrArgument はアーギュメントのタイプを戻すべきである。VTypeDataは自身を戻す べきである。 Usage Usageはオブジェクトの使用フラグを戻す。使用フラグは、VcrBas eのサブクラスのコンストラクタに対するアーギュメントとして指定された。 Owner Ownerはこのオブジェクトを所有するVcrBaseオブジェクトを戻す 。たとえば、VFurictionDataがVClassData::Add Methodを用いてVClassDataに加えられる場合には、VFunc tionDataの所有者 はVClassDataである。VcrBaseのサブクラスは、VcrBas e::PutOwnerを適当に使用して、所有者をセットする。更に詳細な情 報に関してはPutOwnerを参照すること。 ObjectSystem ObjectSystemは、このアイテムを管理するオブジェクトシステム を戻す。この方法に関するデフォルト具体化はkVNoObjectSyste mを戻す。VcrArgumentは、その所有者のオブジェクトシステムを戻 すために、この方法を再定義する。 クラスVcrToplevel VcrBaseの共用サブクラス VcrToplevelは、ネームスペースにおいて直接見付けることのでき るクラスレジストリアイテムに関するベースクラスである。これは、このアイテ ム、アイテムのバージョン番号、及び、そのフルネームが発見されるビューに関 する特定の情報を記憶する。このクラスは、インスタンスを直接生成可能ではな い。 共用メンバー Views このアイテムを引用するビューを戻す。 InView このクラスが指定済みのビューツリー内に既に所在するかどう かを戻す。 AddView リファレンスのリストにビューを加える。 RemoveView リファレンスのリストからビューを除去する。 UnmapSelf 全てのビューからアイテム及びそのアダプタを除去する 。 オーバライド可能な共用メンバー MajorVersion このアイテムのメジャバージョンを戻す。 MinorVersion このアイテムのマイナバージョンを戻す。 タイプの定義 Views Viewsは、現在このアイテムを引用する全てのビューネームスペースを戻 す。同一ツリーからの2つのビューネームスペースは、同時に、アイテムを引用 することは出来ない。 InView node ビューネームスペースツリーにおけるチェックのためのノード。 InViewは、ノードを所有するビュー内のどこかにおいて指定されたアイテ ムが既に見付けられているかどうかを戻す。この方法は、それがツリー内に既に 所在するかどうかをチェックするために使用出来る。 AddView node 加えるためのビュー内のノード。 AddViewは、このアイテムを引用するビューのリストに1つのビューを 加える。nodeは、当該アイテムを見付けることの出来るビュー内の実場所で ある。 RemoveView node 除去するためのビュー内のノード。 RemoveViewは、このアイテムを引用するビューのリストから1つの ビューを除去する。nodeは、当該アイテムを見付けることの出来るビュー内 の実場所である。 UnmapSelf Unmapselfは、全てのビューから、及び、そのアダプタから、当該ア イテムをアンマップする。これは、このアイテムをキャッシュからフラッシュア ウトする効果を持つ。これは、制御メモリの消費をヘルプするために、アイテム に関してコールすることが出来る。この方法のこの具体化は、取り付けられた全 てのビュー、及び、このアイテムを所有するアダプタに関してUnmapをコー ルする。 MajorVersion MajorVersionは、アイテムのメジャバージョン番号を戻す。デフ ォルト具体化は0を戻す。この方法は、正当なメジャーバージョン番号を戻すた めに、サブクラスにおいてオーバライド可能である。 MinorVersion MinorVersionは、アイテムのマイナバージョン番号を戻す。デフ ォルト具体化は0を戻す。この方法は、正当なマイナバージョン番号を戻すため に、サブクラスにおいてオーバライド可能である。 Exposed(露出)クラス これらは、クラスレジストリのユーザーに露出されているクラスである。これ らのクラスは、クラスレジストリエントリのための構造を定義する。VFunc tionData、VPropData、VClassData、VAdapt erNameSpace、及び、VViewNameSpaceは、各オブジェ クトシステムの特殊サポートを提供することができるようにサブクラス分類する ことを意図した抽象クラスである。VcrArgument、VExcepti onData、及び、VInstanceDataは、直接インスタンス化可能 であるか、又は、特定の目的のためにサブクラス化可能である。VClassR egistryは直接インスタンス化可能であり、サブクラス化されてはならな い。露出されたクラスの集合は、タイプ管理セクションにおいて定義されるVT ypeDataを含む。 クラスVcrArgument VcrBaseの共用サブクラス VcrArgumentインスタンスは、クラスレジストリ記述された方法に 関するアーギュメントを指定する。 共用メンバー VcrArgument VcrArqumentオブジェクトを作成する。 Default アーギュメントのデフォルト値を戻す。 PutDefault アーギュメントのデフォルト値をセットすること。 タイプの定義 VTArgumentList VcrArgumentオブジェクトのVA rray。 VcrArgumentコンストラクタ name アーギュメントの名前。 type アーギュメントのタイプ。 ucodes アーギュメント用使用フラグ(該当する場合)。 アーギュメントオブジェクトを作成する。このオブジェクトは、一般にその作 成の後において、AddArgumentを用いて、VFunctionDat aに加えられる。 デフォルト、及び、PutDDefault デフォルト特性はアーギュメントに関するデフォルト値を記憶する。方法がコ ールされた場合にアーギュメントが指定されない場合には、この値が使用される 。アーギュメントタイプが基本タイプである場合に限り、デフォルト値が用いら れる。 クラスVFunctionData VcrToplevelの共用サブクラス VFunctionDataは、宣言されたファンクション(或いは方法)を 示す抽象クラスである。これは、その名前、アーギュメント、戻りタイプ、及び 、コール可能なエントリーポイントを含む。このオブジェクトは、クラスレジス トリ、または、タイプマネージャー記述において使用可能である。又は、サブク ラスは、直接ファンクションコール用の内部サポートを提供しないアプリケーシ ョンにおける支援ファンクションコール明白な目的のために作成可能である。方 法はオブジェクトポインタである隠された第1のアーギュメントを持たねばなら ないという点で、方法とファンクションは異なる。このアーギュメントは、総称 オブジェクトポインタとして宣言される。従って、方法(VcrCallを用い る)を実行する以前に、第1のアーギュメントに関して正しいタイプのチェック を実施することは、コーラーの自由裁量に従う。方法のために隠されたアーギュ メントを加えることは、VFunctionDataのサブクラスの責任である 。 共用メンバー VFunctionData VFunctionDataオブジェクトを作 成する。 Equal このファンクション定義が指定されたフアンクションの定義と同 じであるかどうかを決定する。 オーバライド可能な共用メンバー LockAccess このスレッドがファンクションをコールできるかどう かをチェックする。 UnlockAccess コールファンクションに関するこのスレッドのロ ックを解く。 FunctionType このタイプのファンクションに対するポインタを 表すタイプを戻す。 IsMethod これが方法であるかどうかを戻す。 Arquments ファンクションのためのアーギュメントのリストを戻す 。 Exceptions ファンクションが作ることのできる例外のリストを戻 す EntryPoint ファンクションのためのコール可能なエントリポイン トを戻す。 ValidCall 前のコールが成功したかどうかを戻す。 タイプの定義 VTFunctionList VFunctionDataオブジェクトの VArray。 VTFunctionRefList VFunctionDataオブジェ クトのVrRefList。 VTFunctionRef VFunctionDataオブジェクトに対 するVrReference。 VTFunctionDict VFunctionDataオブジェクトの VAtomDictionary。 VFunctionDataコンストラクタ name ファンクションの名前。 ucodes ファンクションに関する使用フラグ(該当する場合)。 ファンクション記述を作る。ファンクションの定義が完了した後において、ク ラスまたはネームスペースに記憶可能である。 Equal func 比較するためのファンクション。 Equalは、2つのファンクション記述を比較し、それらが等しければ真を 戻す。2つのファンクションが等しいためには、名前、戻しのタイプ、使用コー ド、アーギュメントの個数、及び、ファンクション記述の例外が同じでなければ ならない。更に、全てのアーギュメントの名前、タイプ、及び、使用コードが等 しくなければならない。ヘルプ情報はチェックされない。2つのファンクション ポインタのタイプが同等のタイプであるかどうかを決定する場合には、この方法 がタイプマネージャーによってコールされる。 LockAcccss wait ロックが解除されることを待つ。 他のスレッドがファンクションを同時にコールしないように、LockAcc essはVFunctionDataをロックする。VFunctionDat aに関してKVUageThreadSafeが指定された場合には、Lock Accssは必ずTRUEを戻す。waitがTRUEであり、そして、ファン クションが現在ロックされている場合には、LockAccessはファンクシ ョンが解錠されることを待つ。そうでない場合には、LockAccessはF ALSEを戻す。LockAccessがTRUEを戻した場合には、VFun ctionData::Unlockccallは後でコールされなければなら ない。 UnlockAccess 他のスレッドが当該ファンクションをコールすることができるように、Unl ockaccessはVFunctionDataをアンロックする。VFun ctionDataに関してkVUsageThreadsafeが指定されて いる場合には、UnlockAccessは何もしない。 FunctionType このサインを持ったファンクションに対するポインタを表すタイプを戻す。 IsMethod このオブジェクトがクラスの方法である(すなわち、タイプオブジェクトの隠 された第1アーギュメントを持つ)かどうか、又は、それがファンクションであ るかどうかを戻す。 Arguments このファンクションに関するアーギュメントのリストを戻す。ファンクション が直接または間接的にクラスレジストリに入れられた後で、リストは、追加され るか又は除去されるアイテムを一切所有しない。 Exceptions このファンクションが作ることの出来る例外のリストを戻す。このリストは、 コールコードによって修正されるべきでない。言語は、この情報を使う必要が無 い。ファンクションがCall方法によってコールされる場合には、当該例外に 関する必要な全ての情報が戻される。この方法は、主として情報的な目的のため に使われる。リストは、ファンクションが直接または間接的にクラスレジストリ に入れられた後で、それに追加またはそれから除去されるべきアイテムは一切所 有しない。 EntryPoint objClass これが方法である場合には、オブジェクトのクラス。 object このファンクションが適用されるオブジェクト(EntryP ointが方法に関してコールされた場合に限り正当)。 callobject (戻し)これが方法であり、そして、’object ’が正当である場合には、これは、コールに対する第 1のアーギュメントとして使用するべきオブジェクト を含む。 calltype (戻し)ファンクションを呼ぶためのコールコンベンショ ン。 EntryPointは、このファンクションに関するコール可能なエントリ ポイントを戻す。これが方法である場合には、第1アーギュメントは、所定のオ ブジェクトに関するエントリポイントの動的ルックアップを行うために用いても 差し支えない。これは、エントリポイント及びコールコンベンションが、オブジ ェクトインスタンスに応じて異なることがあり得ることを意味する。第2のアー ギュメントは、方法に対する実コールのために使用可能なオブジェクトを戻すた めに使われる。これが方法である場合には、その所有者はクラスであり、そして 、objClassは0ではない。従って、objClass−>CastTo Baseはオブジェクトに関して自動的にコールされる。そうでない場合には、 オブジェクトは、当該オブジェクトに関するVClassData::Cast ToBaseをコールすることによって、ベースクラスに関するポインタに既に 変換されていなければならない。 ValidCall funcData 当該コールに関するファンクション記述。 paramCount パラメータの数。 paramTypes パラメータのタイプ。 params パラメータに対するポインタのアレイ。 result 当該ファンクションの戻り値に対するポインタ。 ValidCallは、当該ファンクションに対する以前のコールが正当な結 果を生成したかどうかをチェックする。この方法は、戻り値、及び、例外情報に 関する出力またはイン/アウトパラメータをチェックするために、サブクラスに おいて再実行されなければならない。 クラスVPropData VcrBaseの共用サブクラス VPropDataは、クラスの特性を記述する抽象クラスである。特性は、 ゲットアンドセットアクセッサ方式によってアクセスされるクラスの名前付き属 性である。特性は、「ゲット」及び「セット」の2つのアクセッサ方式の少なく とも一方を定義しなければならない。アクセッサ方式は、多重アーギュメントを 持つことができる。例えば、特性が実際に収集内の特定の場所へアクセスするた めにインデックスを必要とする他のオブジェクトの収集である場合に、これは、 有用である。 共用メンバー VPropData VPropDataオブジェクトを作成する。 オーバライド可能な共用メンバー LockAccess このスレッドがファンクションをコールすることがで きるかどうかをチェックする。 UnlockAccess コールファンクションに関するこのスレッドのロ ックを解錠する。 GetMethod 特性のゲット方式を戻す。 SetMethod 特性のセット方式を戻す。 タイプの定義 VPropDataコンストラクタ name 特性の名前。 ucodes 特性に関する使用フラグ(該当する場合)。 特性記述を作成する。アクセッサ方式の名前は、_get_又は_set_の いずれかによって先行される特性の名前でなくてはならない。このネーミングコ ンベンション(CORBA C言語により義務付けられる)は、多重クラスレジ ストリによって作動可能にされるプログラミング言語を堅実に横断して特性にア クセスすることを可能にする。 LockAccess wait 解錠されることを待つこと。 他のスレッドが特性に同時にアクセス出来ないようにするために、LockA ccessはVPropDataをロックする。KVUsageThreadS afeがVPropDataに関して指定されている場合には、LockAcc essは常にTRUEを戻す。waitがTRUEであり、そして、ファンクシ ョンが現在ロックされている場合には、LockAccessは、ファンクショ ンが解除されることを待つ。そうでない場合には、LockAccessはFA LSEを戻す。LockAccessがTRUEを戻す場合には、VPropD ata::UnlockCallは後でコールされなければならない。デフォル トとしての実行は、戻す以前に、ゲットアクセッサ及びセットアクセッサの両方 をロックする。 UnlockAccess 他のスレッドが特性にアクセス可能であるように、UnlockAccess はVPropDataを解錠する。VPropDataに関してKVUsage Threadsafeが指定されている場合には、UnlockAccessは 何もしない。 GetMethod GetMethodは、特性に関する検索アクセッサ方式を戻す。この方法は 、コンストラクタの一部としてインストールされた。戻りがNULLである場合 には、特性は読み取り可能でない。これは、最初の呼出しの後において、必ず、 同一値を戻すべきである。 SetMethod SetMethodは、特性に関する記憶アクセッサ方式を戻す。この方法は 、コンス トラクタの一部として特性にインストールされた。戻しがNULLである場合に は、特性は記入可能でない。これは最初の呼出しの後において、必ず、同一値を 戻すべきである。 クラスVInstanceData VcrToplevelの共用サブクラス VInstanceDataは、定数、変数、または、クラスの名前付きイン スタンスを記述する。名前付きインスタンスは、一般的に利用可能なインスタン スであるか、又は、或るクラスに特有であるように、クラスレジストリにインス トール可能である。VInstanceDataは、必要に応じて、サブクラス に分類されても差し支えない。使用フラグは、インスタンスが読み専用、又は、 読み書き、又は、書き専用のいずれであるかを指定する。定数は、読み専用イン スタンスとして記述される。 共用メンバー VInstanceData VInstanceDataオブジェクトを作 成する。 オーバライド可能な共用メンバー Value インスタンスの値を戻す。 保護されたメンバー PutValue インスタンスの値をセットする。 タイプの定義 VinstanceDataコンストラクタ name インスタンスの名前。 value インスタンスの値。 ucodes インスタンスのための使用フラグ(該当する場合)。 名前付きインスタンスの記述を作成する。 PutValue value インスタンスの値。 名前付きインスタンスの値をセットする。これは、ベースクラスの初期化の後 において定数の値をセットすることが必要なVInstanceDataのサブ クラスからコールされることを意図したものである。 Value 名前付きインスタンスの値を戻す。 クラスVExceptionData VcrToplevelの共用サブクラス VExceptionDataは、ユーザー定義の例外を記述する。例外は、 一般的に利用可能な例外であるか、又は、クラスに対して指定されるようにクラ スレジストリにインストールされても差し支えない。例外は、それらの名前によ って区別される。VExceptionDataは、必要に応じて、サブクラス に分類されても差し支えない。 共用メンバー VExceptionData VExceptionDataオブジェクト を作成する。 保護されたメンバー PutType 例外のタイプをセットする。 タイプの定義 VExceptionDataコンストラクタ name 例外の名前。 type 例外のタイプ。 ucodes 例外のための使用フラグ(該当する場合)。 ユーザー定義例外の記述を作成する。 PutType type 例外のタイプ。 ユーザー定義例外のタイプをセットする。これは、ベースクラスの初期化の後 において例外のタイプをセットすることが必要なVExceptionData のサブクラスからコールされることを意図したものである。例外のタイプは、そ れが最初に検索された後においては変更されてはならない。 クラスVClassData VcrToplevelの共用サブクラス VClassDataは、クラスレジストリに対するオブジェクトのクラスを 記述する抽象クラスである。その定義は、クラスによって所有される特性、方法 、タイプ等の集合について質問するためのサポートを提供する。方法は、コンス トラクタ方法、デストラクタ方法、及び、リファレンスカウント方法を含む。ク ラスに関して記述する場合には、これら全ての方法は定義されない状態にしてお いても差し支えない。このクラスは直接サブクラス化しても差し支えなく、或い は、VcrCodedClassは、オブジェクトシステムアダプタの代りにサ ブシステム化しても差し支えない。 共用メンバー VClassData VClassDataオブジェクトを作成する。 Notifyviews クラスが変化したことをビューに通告する。 オーバライド可能な共用メンバー BaseClass 記述されたクラスの第1ベースクラスを戻す。 BaseClasses 全てのベースクラスのリストを戻す。 Constructor クラスのコンストラクタ記述を戻す。 Duplicator クラスのコピーコンストラクタ記述を戻す。 Destructor クラスのデストラクタ記述を戻す。 AcquireMethod クラスの「獲得」方法の記述を戻す。 ReleaseMethod クラスの「解放」方法の記述を戻す。 Methods クラスの全ての方法のリスト、或いは、指定された名前を持 つ全ての方法のリストを戻す。 Properties クラスの全ての特性のリストを戻す。 Types クラスの全てのタイプのリストを戻す。 Instances クラスにおいて定義された全てのインスタンスのリスト を戻す。 Exceptions クラスにおける全ての例外のリストを戻す。 Method 指定された名前の方法を戻す。 Property 指定された名前の特性を戻す。 DefaultProperty 記述されたクラスのデフォルト特性を戻す 。 Type 指定された名前のタイプを戻す。 Instance 指定された名前のインスタンスを戻す。 Exception 指定された名前の例外を戻す。 CastToDirectBase オブジェクトインスタンスを直接ベース クラスへキャストする。 CastToBase オブジェクトインスタンスをあらゆるベースクラスイ ンスタンスへキャストする。 CastFromDirectBase 直接ベースクラスからオブジェクト インスタンスをキャストする。 CastFromBase あらゆるベースクラスからこのクラスへオブジェ クトインスタンスをキャストする。 SubclassOfObject 指定されたオブジェクトがこのクラスの サブクラスである場合に、指定されたオブジェクトのク ラスを戻す。 SuoclassOf この方法に対してアーギュメントであるクラスのサブ クラスであるかどうかを決定すること。 SuperclassOf この方法に対してアーギュメントであるクラスの スーパクラスであるかどうかを決定すること。 タイプの定義 VClassDataコンストラクタ name クラスの名前 usage クラスに関する使用フラグ。 クラスの記述を作成する。クラスは、単独で継承されるか、または、複合継承 されたベースクラスであっても差し支えない。 クラスのユーザーは、その有効範囲に紹介されたオブジェクトの破壊のために 次の規則に従うべきである: * オブジェクトがコンストラクタによって作成された場合には、ユーザーは、 適宜、デストラクタ(定義されている場合)をコールしなければならない。 * オブジェクトが方法またはファンクションコールによって導入され、次に、 オブジェクトを導入したアーギュメント/方法に関する使用フラグがフラグKV UsageCallerIsOwnerを含む場合には、ユーザーは、適宜、デ ストラクタをコールしなければならない。 * そうでない場合には、オブジェクトが導入された場合、AcquireMe thodがコールされなければならず、そして、オブジェクトが処理されなけれ ばならない場合には、定義済みであれば、ReleaseMethodがコール されなければならない。 これらの方法(コンストラクタ、デストラクタ、AcquireMethod ReleaseMethod)は、必ずしもオブジェクト自身によって実行され ることが必要であるとは限らず、クラスレジストリへの統合を容易にするよに設 計された利便なファンクションを用いても差し支えないことに注意されたい。コ ンストラクタは、任意のアーギュメントを所持しても差し支えないが、デストラ クタ、AcquireMethod、及び、ReleaseMethodはアー ギュメントを所持してはならず、或いは、全てのアーギュメントはデフォルト値 を持たなければならない。 NotifyViews nummeths クラスにおける新規な方法の数。 numprops クラスにおける新規な特性の数。 numtypes クラスにおける新規なタイプの数。 numinsts クラスにおける新規なインスタンスの数。 numexcepts クラスにおける新規な例外の数。 NotifyViesは、クラスの全てのビューに、その定義が変わったこと を通告する。クラスが変わった場合にはいつでも、これがコールされなければな らず、そして、それに関するビューは既に存在する。更に詳細には、ビューには 、方法、特性、タイプ、インスタンス、または、例外の完全なリストの検索が終 了した後で修正が発生したかどうかだけを通告する必要がある。質問することを 目的として、方法、特性、等々に関する何等かの特定の情報をビューが記憶しつ つある場合に、ビューに通告する必要がある。 BaseClass BaseClassは、クラスがベースクラスであるならばNULLを戻し、 このクラスが単独で継承される場合にはベースクラスを戻し、又は、このクラス が多重的に継承される場合には、コンストラクタに供給された第1ベースクラス を戻す。 BaseClasses BaseClassesは、クラスがベースクラスであるならば空のVArr ayを戻し、このクラスが単独で継承される場合にはベースクラスを含むVAr rayを戻し、又は、このクラスが多重的に継承される場合にはコンストラクタ に供給されたベースクラスのアレイを戻す。このアレイは、コーラーによって修 正されてはならない。 Constructor Constructorは、記述されたクラスに関するコンストラクタを戻す 。コンストラクタによって戻されたファンクションは、オブジェクトに関するC ++コンストラクタと同じではない。クラスレジストリによって定義されたコン ストラクタは、オブジェクトの割当てに責任があり、そして、新規なオブジェク トを戻さねばならない。コンストラクタに関するクラスレジストリ記述は総称オ ブジェクト戻しタイプを持つ(タイプコードKVTypeObjectPoin ter)。指定されたコンストラクタが無い場合もあり得る。この場合には、コ ンストラクタはNULLを戻す。この方法によって戻されたVFunction Dataは、オブジェクトインスタンスに関する隠された第1アーギュメントを 持たない。従って、このVFunctionDataは、方法であるとみなして はならない。 Duplicator Duplicatorは、記述されたクラスに関するコピーコンストラクタを 戻す。Duplicatorによって戻されたファンクションは、オブジェクト に関するC++コピーコンストラクタと同じではない。クラスレジストリによっ て定義されたコピーコンストラクタは、オブジェクトの割当てに関して責任を負 い、そして、新規なオブジェクトを戻さなければならない。コピーコンストラク タに関するクラスレジストリ記述は、総称オブジェクトリターンタイプを持つ( タイプコードKVTypeObjectPointer)。指定されたコピーコ ンストラクタが無い場合もあり得る。この場合、CopyはN ULLを戻す。この方法によって戻されたVFunctionDataは、コピ ーに対するオブジェクトインスタンスに関する隠された第1アーギュメントを持 つ。従って、このVFunctionDataは方法であり、そして、コンスト ラクタと同様ではない。 Destructor Destructorは、記述されたクラスに関するデストラクタを戻す。こ の方法は、アーギュメントを持ってはならないか、或いは、全てのアーギュメン トに対してデフォルト値を持たなければならない。デストラクタによって戻され た方法は、オブジェクトインスタンスに割当てられたメモリーの実自由を実施す ることが方法に責任があると言う点において、C++デストラクタと同じではな い。指定されたデストラクタが存在しないこともあり得る。この場合、デストラ クタはNULLを戻す。デストラクタからの戻しは方法でなければならない。 AcquireMethod AcquireMethodは、クラスのインスタンスにリファレンスを加え るために用いられる方法を戻す。この方法はアーギュメントを持ってはならず、 又は、全てのアーギュメントはデフォルト値を持たなければならない。Acqu ireMethodの戻しは同様にNULLであっても差し支えない。Acqu ireMethodからの戻しは方法でなければならない。オブジェクトシステ ムがリファレンスカウントを継承的にサポートしない場合には、クラスレジスト リは、ユーティリティクラスを用いて、インスタンスに基づいたリファレンスカ ウントに対してサポートを提供することが出来る。 ReleaseMethod ReleaseMethodは、クラスのインスタンスからリファレンスを除 去するために使われる方法を戻す。この方法はアーギュメントを持ってはならず 、又は、全てのアーギュメントはデフォルト値を持たなければならない。Rel easeMethodの戻しは同様にNULLであっても差し支えない。Rel easeMethodからの戻しは方法でなければならない。 Methods name 探索するための方法の名前。 searchas 探索はケース依存またはケース非依存のいずれかである。 object 動的探索に使用するオブジェクト Methodsは、2つのオーバロードされた定義を持つ。アーギュメントな しのバージョンがコールされた場合には、当該クラスにおける事前に定義済みの 全ての方法のリストが戻される。戻されたリストは修正してはならない。このリ ストは動的に利用可能な方法は一切含まない。ただし、VClassDataの サブクラスによって方法の内部リストにこの種の方法が加えられていた場合には この限りでない。この方法の第2バージョンは、所定の名前をもつオーバロード された全ての方法を含む。オブジェクトが指定されている場合には、VClas sDataのサブクラスは、方法の動的ルックアップを遂行するためにこれを使 用しても差し支えない。 Properties Propertiesは、クラス記述において定義された全ての特性のリスト を戻す。このリストはコーラーによって修正されてはならない。このリストは、 動的に利用可能な特性は一切含まない。ただし、VClassDataのサブク ラスによって、特性の内部リストにこの種の特性が加えられていた場合はこの限 りでない。 Types Typesは、事前に定義済みのタイプによって定義された全てのクラス記述 のリストを戻す。このリストは、コーラーによって修正されてはならない。この リストは、動的に利用可能なタイプは一切含まない。ただし、VClassDa taのサブクラスによって、特性の内部リストにこの種のタイプが加えられてい た場合はこの限りでない。 Instances Instancesは、クラス記述において定義された全ての名前付きインス タンスのリストを戻す。これらは、クラスのインスタンスではあり得ず、クラス によって使われる名前付き定数であることに注意されたい。このリストは、コー ラーによって修正されてはならない。このリストは、動的に利用可能なインスタ ンスは一切含まない。ただし、VClassDataのサブクラスによって特性 の内部リストに加えられていた場合にはこの限り出ない。 Exceptions Exceptionsは、クラス記述において定義された事前に定義済みの全 ての例外のリストを戻す。このリストは、コーラーによって修正されてはならな い。このリストは、動的に利用可能な一切の例外を含まない。ただし、この種の 例外が、VClassDataのサブクラスによって特性の内部リストに加えら れていた場合にはこの限りでない。 Method name 探索するための方法の名前 searchas 探索は、ケース依存またはケース非依存のどちらかである 。 object 動的探索のために使用するオブジェクト Methodは、所定の名前の利用可能な第1の方法を発見する。オブジェク トが指定されている場合には、VClassDataのサブクラスは、方法の動 的ルックアップを遂行するためにこれを使用しても差し支えない。 Property name 探索するための特性の名前 searchas 探索は、ケース依存またはケース非依存のどちらかである 。 object 動的探索のために使用するオブジェクト Propertyは、クラス記述における所定の名前の特性を発見する。オブ ジェクトが指定されている場合には、VClassDataのサブクラスは、特 性の動的ルックアップを遂行するためにこれを使用しても差し支えない。方法と は異り、オーバーロードされた特性の概念はない。 DefaultprOperty object 動的探索のために使用するオブジェクト DefaultPropertyは、クラス記述においてデフォルト特性を発 見する。これは、KVUsageDefaultProperty使用フラグに よって指定された特性である。デフォルト特性のコンセプトは、例えばBasi cのような言語においてサ ポートされる。オブジェクトが指定されている場合には、VClassData のサブクラスは、特性の動的ルックアップを遂行するためにこれを使用しても差 し支えない。 Type name 探索するためのタイプの名前。 searchas 探索は、ケース依存またはケース非依存のどちらかである 。 object 動的探索のために使用するオブジェクト。 Typeは、クラス記述において所定の名前のタイプを発見する。オブジェク トが指定されている場合には、VClassDataのサブクラスは、タイプの 動的ルックアップを遂行するためにこれを使用しても差し支えない。 Instance name 他なくするためのインスタンスの名前 searchas 探索は、ケース依存またはケース非依存のどちらかである 。 object 動的探索のために使用するオブジェクト。 Instanceは、クラス記述において所定の名前のインスタンスオブジェ クトを発見する。オブジェクトが指定されている場合には、VClassDat aのサブクラスは、インスタンスの動的ルックアップを遂行するためにこれを使 用しても差し支えない。これはクラスのインスタンスであり得ないが、クラスに よって使用される名前付き定数であることに注意されたい。 Exception name 探索するための例外の名前 searchas 探索は、ケース依存またはケース非依存のどちらかである 。 object 動的探索のために使用するオブジェクト。 Exceptionは、クラス記述において所定の名前の例外を発見する。オ ブジェクトが指定されている場合には、VClassDataのサブクラスは、 例外の動的ルック アップを遂行するためにこれを使用しても差し支えない。 CastToDirectBase base キャストするためのベースクラス。 object キャストするためのオブジェクトインスタンスへのポインタ。 CastToDirectBaseは、指定されたベースクラスに対してコー ルする方法において直接使用できる新規なオブジェクトポインタを戻す。ベース が直接的なベースクラスでない限り、デフォルト実施はリターンオブジェクトを 戻す。デフォルト実施は、大抵のオブジェクトシステムにとって充分である。た だし、多重ベースクラスを有するC++の場合には、各ベースクラスに対して異 なるオブジェクトポインタを戻さねばならない。ベースクラスのリストにベース クラスが発見されない場合には、この方法はNULLを戻さねばならない。 CastToBase base キャストするためのベースクラス。 object キャストするためのオブジェクトインスタンスに対するポイン タ。 CastToBaseは、指定されたベースクラスに対してコールする方法に おいて直接使用することの出来る新規なオブジェクトポインタを戻す。指定され たベースクラスは、階層のどこに所在しても差し支えない。デフォルト実施は、 ベースクラスへの通路を発見し、そして、階層の各レベルに対してCastTo DirectBaseをコールする。デフォルト実施は、更に効率的であるため にアダプタによって定義されたサブクラスによって置き換えることができる。ベ ースクラスの階層においてベースクラスが発見されない場合には、この方法はN ULLを戻さねばならない。この方法は、指定されたベースクラスへの通路を発 見するために、ツリーの前順走査を遂行する。 CastFromDirectBase base そこからキャストするためのベースクラス。 object キャストするためのオブジェクトインスタンスに対するポイン タ。 safe タイプセーフキャストを実施する。 CastFromDirectBaseは、このクラスに対してコールする方 法において直接使用することの出来る新規なオブジェクトポインタを戻す。ベー スが直接ベースクラスでない限り、デフォルト実施はオブジェクトを戻す。デフ ォルト実施は、大抵のオブジェクトシステムに対して充分である。ただし、多重 ベースクラスに関するC++の場合には、異なるオブジェクトポインタが各ベー スクラスインスタンスを表す。ベースクラスのリストにおいて当該ベースクラス が発見されない場合には、この方法はNULLを戻さねばならない。セーフがT RUEである場合には、タイプセーフキャストとしてキャストが実施できる場合 に限り、この方法は非NULLを戻さねばならない。セーフがTRUEである場 合には、デフォルト実施はNULLを戻す。 CastFromBase base そこからキャストするためのベースクラス。 object キャストするためのオブジェクトインスタンスに対するポイン タ。 safe タイプセーフキャストを実施する。 CastFromBaseは、このクラスに対してコールする方法において直 接使用できる新規なオブジェクトポインタを戻す。指定されたベースクラスは、 階層のどこに所在しても差し支えない。デフォルトとしての実施は、ベースクラ スへの通路を発見し、そして、階層の各レベルに対してCastFromDir ectBaseをコールする。デフォルトとしての実施は、更に効率的であるた めに、アダプタによって定義されたサブクラスによって置き換えられても差し支 えない。ベースクラスがベースクラスの階層において発見されない場合には、こ の方法はNULLを戻さねばならない。セーフがTRUEである場合には、タイ プセーフキャストとしてキャストが実施出来る場合に限り、この方法は、非NU LLを戻差寝場ならない。セーフがTRUEである場合には、デフォルトとして の実施はNULLを戻す。この方法は、指定されたベースクラスへの通路を発見 するために、ツリーの前順走査を実施する。 SubclassOfObject object (入力および戻し)狭くするためのオブジェクトに対するポイ ンタ オブジェクトが記述されたクラスのインスタンスであるか、或いは、記述され たクラスのサブクラスのインスタンスであると仮定した場合、Subclass OfObjectは、オブジェクトが所属するサブクラス記述を戻すことによっ てオブジェクトを狭くする。 サブクラスが決定出来ない場合には、戻しは、現行クラス記述ポインタでなくて はならない。場合によっては、他のポインタによって当該オブジェクトを更に能 率的に表わすことが可能であることが、VClassDataの実施によって決 定されることもあり得る。この場合、インプットオブジェクトポインタは修正さ れても差し支えない。SubclassOfObjectのコーラーは、クラス レジストリの方法およびオブジェクト自体の方法に対する後続する全てのコール において、修正されたオブジェクトポインタを使用しなければならない。 SubclassOf other 階層チェックにおいて用いられるクラス。 SubclassOfは、この記述されたクラスが他のオブジェクトによって 記述されたクラスのサブクラスであるかどうかを戻す。 SuperciassOf other 階層チェックにおいて用いられるクラス。 SuperclassOfは、この記述されたクラスが他のオブジェクトによ って記述されたクラスのスーパクラスであるかどうかを戻す。 クラスVAdapterNameSpace VcrToplevelの共用サブクラス VAdapterNameSpaceは、各オブジェクトシステムアダプタに よってサブクラス化されるべき抽象クラスである。このクラスは、オブジェクト システムとクラスレジストリとの間のインタフェースを提供する。オブジェクト システムアダプタは、クラスレジストリオブジェクトをサブクラス化することに より、アイテム記述に関する固有フォーマットと、例えばクラス及び方法のよう なアイテムのクラスレジストリ記述との間のインタフェースを提供しなければな らない。アダプタは、ネームスペース階層を、その固有階層にできる限り近いク ラスレジストリに提供しなければならない。 共用メンバー VAdapterNameSpace アダプタネームスペースオブジェクト を作成する。 オーバライド可能な共用メンバー Subspace 指定された名前のネームスペースを戻す。 Class 指定された名前のクラスを戻す。 Function 指定された名前のファンクションを戻す。 Type 指定された名前のタイプを戻す。 Instance 指定されたインスタンスを戻す。 Exception 指定された名前の例外を戻す。 Classes 指定された名前のクラスを戻す。 Functions 指定された名前のファンクションを戻す。 Types 指定された名前のタイプを戻す。 Instances 指定された名前のインスタンスを戻す。 Exceptions 指定された名前の例外を戻す。 All 指定された名前の全てのアイテムを戻す。 Enumerate ネームスペース内におけるアイテムを列挙すること。 Unmap このアダプタから1つのアイテムをアンマップする。 UnmapAllFromTree キャッシュから全てのアイテムをアンマ ップする。 removed アダプタがクラスレジストリから除去されたことを当該アダ プタに通告する。 タイプの定義 VAdapterNameSpaceコンストラクタ name ネームスペースの名前。 usage ネームスペースのための使用フラグ。 アダプタネームスペースを作成する。このクラスは、クラスレジストリ用のオ ブジェクトシステムアダプタを実行するためにベースクラスとして用いられる。 SubSpace name 発見するべきネームスペースの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 SubSpaceは、指定された名前のネストされたネームスペースを発見す る。深さパラメータが1であるならば、トップレベルのネームスペースだけが探 索される。 Class name 発見するべきclassの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべきメジャバージョン番号。 minor 発見するべきマイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 last 最後に発見された最高バージョン番号。 classは、指定された名前のクラスを発見する。どちらのバージョン番号 も指定されない場合には、最高バージョン番号を持つアイテムが選定される。深 さパラメータが1であるならば、トップレベルのネームスペースだけが探索され る。当該アイテムのバージョンが既に発見された場合には、当該バージョンは、 バージョン番号の内部比較において最後に用いられるパラメータとしてのこの方 法にパスされねばならない。 function name 発見するべきfunctionの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべきメジャバージョン番号。 minor 発見するべきマイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 last 最後に発見された最高バージョン番号。 functionは、指定された名前のファンクションを発見する。どちらの バージョン番号も指定されない場合には、最高バージョン番号を持つアイテムが 選定される。深さパラメータが1であるならば、トップレベルのネームスペース だけが探索される。当該アイテムのバージョンが既に発見された場合には、当該 バージョンは、バージョン番号の内部比較において最後に用いられるパラメータ としてのこの方法にパスされねばならない。 Type name 発見するべきtypeの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべきメジャバージョン番号。 minor 発見するべきマイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 last 最後に発見された最高バージョン番号。 typeは、指定された名前のタイプを発見する。どちらのバージョン番号も 指定されない場合には、最高バージョン番号を持つアイテムが選定される。深さ パラメータが1であるならば、トップレベルのネームスペースだけが探索される 。当該アイテムのバージョンが既に発見された場合には、当該バージョンは、バ ージョン番号の内部比較において最後に用いられるパラメータとしてのこの方法 にパスされねばならない。 Instance name 発見するべきinstanceの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべきメジャバージョン番号。 minor 発見するべきマイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 last 最後に発見された最高バージョン番号。 instanceは、指定された名前のインスタンスを発見する。どちらのバ ージョン番号も指定されない場合には、最高バージョン番号を持つアイテムが選 定される。深さパラメータが1であるならば、トップレベルのネームスペースだ けが探索される。当該アイテムのバージョンが既に発見された場合には、当該バ ージョンは、バージョン番号の内部比較において最後に用いられるパラメータと してのこの方法にパスされねばならない。 Exception(例外) name 発見するべき例外の名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべきメジャバージョン番号。 minor 発見するべきマイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 last 最後に発見された最高バージョン番号。 exceptionは、指定された名前の例外を発見する。どちらのバージョ ン番号も指定されない場合には、最高バージョン番号を持つアイテムが選定され る。深さパラメータが1であるならば、トップレベルのネームスペースだけが探 索される。当該アイテムのバージョンが既に発見された場合には、当該バージョ ンは、バージョン番号の内部比較において最後に用いられるパラメータとしての この方法にパスされねばならない。 Classes name 発見するべき複数クラスの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 classesは、指定された名前の全バージョンを発見する。どちらのバー ジョン番号も指定されている場合には、指定された番号以上のバージョン番号を 持つ全アイテムが戻される。深さパラメータが1であるならば、トップレベルの ネームスペースだけが探索される。 Functions name 発見するべきfunctionsの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 functionsは、指定された名前の全オーバロード及びバージョンを発 見する。どちらのバージョン番号も指定されている場合には、指定された番号以 上のバージョン番号を持つ全アイテムが戻される。深さパラメータが1であるな らば、トップレベルのネームスペースだけが探索される。 Types name 発見するべきtypesの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 typesは、指定された名前の全バージョンを発見する。どちらのバージョ ン番号も指定されている場合には、指定された番号以上のバージョン番号を持つ 全アイテムが戻される。深さパラメータが1であるならば、トップレベルのネー ムスペースだけが探索される。 Instances name 発見するべきinstancesの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 instancesは、指定された名前のインスタンスの全バージョンを発見 する。どちらのバージョン番号も指定されている場合には、指定された番号以上 のバージョン番号を持つ全アイテムが戻される。深さパラメータが1であるなら ば、トップレベルのネームスペースだけが探索される。 Exceptions name 発見するべき複数例の名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 exceptionsは、指定された名前のユーザー定義例の全バージョンを 発見する。どちらのバージョン番号も指定されている場合には、指定された番号 以上のバージョン番号を持つ全アイテムが戻される。深さパラメータが1である ならば、トップレベルのネームスペースだけが探索される。 All name 発見するべき複数アイテムの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 major 発見するべき最小メジャバージョン番号。 minor 発見するべき最小マイナバージョン番号。 search 実施するべき探索のタイプ。 depth 探索するべきネームスペースの層数。 allは、指定された名前の異なる全アイテム(クラス、ファンクション、タ イプ、等々)バージョンを発見する。どちらのバージョン番号も指定されている 場合には、指定された番号以上のバージョン番号を持つ全アイテムが戻される。 深さパラメータが1であるならば、トップレベルのネームスペースだけが探索さ れる。 Enumerate func アイテムをコールするためのファンクション。 context 列挙ファンクションへパスするための文脈情報。 search 実施するべき探索のタイプ。 enumerateは、指定されたタイプの全てのアイテムを列挙する。タイ プがkVcrAllである場合には、全てのアイテムが列挙される。列挙するネ ストされたアイテムにおける一切のアイテムを列挙しない。発見された各アイテ ムに対しては、アーギュメント文脈およびアイテム自体によって列挙ファンクシ ョンがコールされる。 Unmap item ビューからアンマップするアイテム。 unmapは、このアダプタのキャシュから特定のアイテムをアンマップする 。アダプタは、当該アイテムに関する全てのリファレンスを取り去り、そして、 そのキャッシュから除去しなければならない。この方法は、アダプタネームスペ ース及び他のアイテムに適 用可能である。 UnmapAllFromTree UnmapAllFromTreeは、このネームスペースにおいて再帰的に 発見される全てのアイテムをこのアダプタのキャッシュからアンマップする。ア ダプタは、当該アイテムに関する全てのリファレンスを取り去り、そして、その キャッシュから除去しなければならない。この方法はアダプタネームスペース及 び他のアイテムに適用可能である。 Removed removedは、アダプタが既に除去されていることを当該アダプタに通知 するために、トップレベルアダプタネームスペースにおけるクラスレジストリに よってコールされる。アダプタは、アイテム及びネームスペースをビューからア ンマップしてはならない。これは、ビューが行う。removedをコールした 後において、クラスレジストリは、アダプタに関するそのリファレンスを解放し 、続いて当該アダプタを削除する。 クラスVviewNameSpace VcrToplevelの共用サブクラス VViewNameSpaceは、クラスレジストリアイテムのユーザによっ て定義されたビューを表す抽象クラスである。VAdapterNameSpa cesは、名前の実階層を定義する。この場合、各オブジェクトシステムは、そ れ自体、他のオブジェクトシステムから分離した個別のネームスペースである。 各オブジェクトシステムは、サブネームスペースを順々に含んでも差し支えない 。この事前決定された名前の階層は、物理的に異なるネームスペースを見るため にエンドユーザが選定した方法を反映しないこともあり得る。例えば、ユーザー は、全てのトップレベルの名前が同一ネームスペース内に所在することを望むか 、または、例えばBasicのような言語にとっては、一緒に作動するためには 、平らなネームスペースを持つことが好ましいこともあり得る。これらの目標は 、VViewNameSpaceを用いて達成できる。VViewNameSp aceは、名前の物理的階層と名前の階層に関するユーザーのビューとの間にユ ーザによって定義されるマッピングを提供する。多重VViewNameSpa ce階層は、物理的階層に関して存在可能である。更に、VViewNameS paceは、アダプタネームスペースから検索されたアイテムに対して、キャッ シュとして作用する。一旦、アイテムがアダプタネームスペースから検索される と、これらのアイテムは、これらのアイテムを使用するコードに影響を及ぼすこ となしに、ビュー階層において動きまわることが可能である。ビューは、持続的 記憶装置内に実現可能である。ビューにおいて各個別アイテムの出生場所 をセーブするために、ビューは、VcrBase::Ownerを用いて、アダ プタネームスペース階層まで追跡することによりアイテムの完全に修飾された名 前を発見することができる。ビューは、自身の復元に際して、完全に修飾された 名前の各レベルにおいて、名前におけるその次のアイテムに関して質問すること により、オブジェクトを作成し直すことが出来る。 共用メンバー VViewNameSpace ビューネームスペースを作成する。 DistanceTo ツリーにおける他のビューまでの距離を戻す。 DirectlyInView アイテムが直接このビュー内に所在するかど うかを戻す。 ViewOfObject 当該オブジェクトを含むビューを戻す。 オーバライド可能な共用メンバー Toplevel この階層におけるトップレベルビューを戻す。 SubSpace 指定された名前のネームスペースを戻す。 Class 指定された名前のクラスを戻す。 Function 指定された名前のファンクションを戻す。 Type 指定された名前のタイプを戻す。 Instance 指定された名前のインスタンスを戻す。 Exception 指定された名前の例外を戻す。 Clases 指定された名前のクラスを戻す。 Functions 指定された名前のファンクションを戻す。 Types 指定された名前のタイプを戻す。 Instances 指定された名前のインスタンスを戻す。 Exceptions 指定された名前の例外を戻す。 All 指定された名前の全てのアイテムを戻す。 Enumerate ネームスペースにおいてアイテムを列挙する。 MappedAdapters このビュー上にマップされたアダプタのリス トを戻す。 Map アイテムをこのビューにマップする。 Unmap このビューからアイテムをアンマップする。 UnmapAll このビューから全てのアダプタ特定アイテムをアンマップ する。 UnmapAllFromTree このビュー及び含まれている全てのビュ ーから全てのアダプタ特定アイテムをアンマップする。 ClassChanged 当該ビュー内のクラスが変化したことをビューに 通告する。 AdapterAdded 新規なアダプタがクラスレジストリにインストー ルされたことをビューに通告する。 AdapterRemoved クラスレジストリからアダプタが除去された ことをビューに通告する。 Removed クラスレジストリからビューが除去されたことを当該ビュー に通告する。 タイプの定義 VViewNameSpaceコンストラクタ name ネームスペースの名前 usage ネームスペースに関する使用フラグ ビューネームスペースを作成する。このクラスは、クラスレジストリ階層のカ ストマイズ可能なビューを実行するために、ベースクラスとして用いられる。 DistanceTo other ツリーにおける他のネームスペース。 distance (戻し)もう一方のネームスペースまでの距離。 DistanceToは、同一ツリーにおける他のビューまでの距離を戻す。 このビューと他のビューが同一のツリーに所在しないか、又は、このビューと他 のビューが同胞である場合には、戻しはFALSEである。他のビューがこのビ ューの先祖であるか、又は、このビューが他のビューの先祖である場合には、T RUEが戻される。このビューが他のビューの先祖であるならば、distan ceは正である(すなわち、他のビューはツリーの更に下方に位置する)。他の ビューがこのビューの先祖であるならば、distanceは負である。このビ ューが他のビューに等しい場合には、戻しは0である。 DirectlyInView item チェックするためのオブジェクト DirectlyInViewは、アイテムがこのビュー内に直接含まれるか どうかを戻す。アイテムがこのビュー内に直接含まれない限り、方法はFALS Eを戻す。 ViewOfObject item チェックするためのオブジェクト。 ViewOfObjectは、アイテムを含むこのビュー階層におけるビュー ネームスペースを戻す。 Toplevel Toplevelは、ビューネームスペースのこの階層におけるトップレベル ビューを戻す。これは、しばしばコールされるので、ネストされた各ビューネー ムスペース内に隠されなければならない。この方法は、アイテムが特定のビュー 階層内に既にマップされていたかどうかを決定するためにVcrTopleve l::InViewによってコールされる。 SubSpace name 発見するためのネームスペースの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索されるべきオブジェクトシステム。 search 遂行する探索のタイプ。 depth 探索されるべきネームスペースの層数。 SubSpaceは、指定された名前のネストされたネームスペースを発見す る。アイテムがキャッシュ内に発見されない場合には、ビューは、システムにマ ッチする各アダプタに、アイテムに関して質問しなければならない。深さのパラ メータが1である場合には、トップレベルのネームスペースのみが探索される。 アダプタからのアイテムが、ビュー内 において、複数の場所に現れることが可能であるかどうかを決定することはビュ ーの責任である方法VcrTopLevel::InViewは、このビュー階 層内に既に所在しているかどうかをチェックするために、当該アイテムに関して コールされることが可能である。 Class name 発見するためのクラスの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するためのメジャバージョン番号。 minor 発見するためのマイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 last 最後に発見された最高バージョン番号。 classは、指定された名前のクラスを発見する。どちらのバージョン番号 も指定されない場合には、最高バージョン番号を持つアイテムが選定される。ア イテムがキャッシュ内において発見される場合には、それよりも高いバージョン 番号を持つ後続する全てのアイテムは、同一アダプタ及びアダプタネームスペー スから来たかどうかだけについてチェックされる。一旦、キャッシュチェックが 完了し、そして、更に高いバージョンの発見が依然として必要であるか、或いは 、正確なバージョンが発見されない場合には、対応する(或いは全ての)アダプ タネームスペースがチェックされなければならない。深さのパラメータが1であ る場合には、トップレベルネームスペースのみが検索される。アイテムのバージ ョンが既に発見されている場合には、そにバージョンは、バージョン番号の内部 比較に使用する最後のパラメータとして、この方法にパスされなければならない 。アダプタからのアイテムが、ビュー内における複数の場所に現れることが可能 であるかどうかについて決定することは、ビューの責任である。方法VcrTo pLevel::InViewは、それが既にこのビュー階層内に所在するかど うかをチェックするために、アイテ ムに関してコールされることが可能である。 Function name 発見するためのファンクションの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するためのメジャバージョン番号。 minor 発見するためのマイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 last 最後に発見された最高バージョン番号。 functionは、指定された名前のファンクションを発見する。どちらの バージョン番号も指定されない場合には、最高バージョン番号を持つアイテムが 選定される。アイテムがキャッシュ内において発見される場合には、それよりも 高いバージョン番号を持つ後続する全てのアイテムは、同一アダプタ及びアダプ タネームスペースから来たかどうかだけについてチェックされる。一旦、キャッ シュチェックが完了し、そして、更に高いバージョンの発見が依然として必要で あるか、或いは、正確なバージョンが発見されない場合には、対応する(或いは 全ての)アダプタネームスペースがチェックされなければならない。深さのパラ メータが1である場合には、トップレベルネームスペースのみが検索される。ア イテムのバージョンが既に発見されている場合には、そにバージョンは、バージ ョン番号の内部比較に使用する最後のパラメータとして、この方法にパスされな ければならない。アダプタからのアイテムが、ビュー内における複数の場所に現 れることが可能であるかどうかについて決定することは、ビューの責任である。 方法VcrTopLevel::InViewは、それが既にこのビュー階層内 に所在するかどうかをチェックするために、アイテムに関してコールされること が可能である。 Type name 発見するためのタイプの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するためのメジャバージョン番号。 minor 発見するためのマイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 last 最後に発見された最高バージョン番号。 typeは、指定された名前のタイプを発見する。どちらのバージョン番号も 指定されない場合には、最高バージョン番号を持つアイテムが選定される。アイ テムがキャッシュ内において発見される場合には、それよりも高いバージョン番 号を持つ後続する全てのアイテムは、同一アダプタ及びアダプタネームスペース から来たかどうかだけについてチェックされる。一旦、キャッシュチェックが完 了し、そして、更に高いバージョンの発見が依然として必要であるか、或いは、 正確なバージョンが発見されない場合には、対応する(或いは全ての)アダプタ ネームスペースがチェックされなければならない。深さのパラメータが1である 場合には、トップレベルネームスペースのみが検索される。アイテムのバージョ ンが既に発見されている場合には、そにバージョンは、バージョン番号の内部比 較に使用する最後のパラメータとして、この方法にパスされなければならない。 アダプタからのアイテムが、ビュー内における複数の場所に現れることが可能で あるかどうかについて決定することは、ビューの責任である。方法VcrTop Level::InViewは、それが既にこのビュー階層内に所在するかどう かをチェックするために、アイテムに関してコールされることが可能である。 Instance(インスタンス) name 発見するためのインスタンスの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するためのメジャバージョン番号。 minor 発見するためのマイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 last 最後に発見された最高バージョン番号。 instanceは、指定された名前のインスタンスを発見する。どちらのバ ージョン番号も指定されない場合には、最高バージョン番号を持つアイテムが選 定される。アイテムがキャッシュ内において発見される場合には、それよりも高 いバージョン番号を持つ後続する全てのアイテムは、同一アダプタ及びアダプタ ネームスペースから来たかどうかだけについてチェックされる。一旦、キャッシ ュチェックが完了し、そして、更に高いバージョンの発見が依然として必要であ るか、或いは、正確なバージョンが発見されない場合には、対応する(或いは全 ての)アダプタネームスペースがチェックされなければならない。深さのパラメ ータが1である場合には、トップレベルネームスペースのみが検索される。アイ テムのバージョンが既に発見されている場合には、そのバージョンは、バージョ ン番号の内部比較に使用する最後のパラメータとして、この方法にパスされなけ ればならない。アダプタからのアイテムが、ビュー内における複数の場所に現れ ることが可能であるかどうかについて決定することは、ビューの責任である。方 法VcrTopLevel::InViewは、それが既にこのビュー階層内に 所在するかどうかをチェックするために、アイテムに関してコールされることが 可能である。 Exception name 発見しようとする例外の名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するためのメジャバージョン番号。 minor 発見するためのマイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 last 最後に発見された最高バージョン番号。 exceptionは、指定された名前の例外を発見する。どちらのバージョ ン番号も指定されない場合には、最高バージョン番号を持つアイテムが選定され る。アイテムがキャッシュ内において発見される場合には、それよりも高いバー ジョン番号を持つ後続する全てのアイテムは、同一アダプタ及びアダプタネーム スペースから来たかどうかだけについてチェックされる。一旦、キャッシュチェ ックが完了し、そして、更に高いバージョンの発見が依然として必要であるか、 或いは、正確なバージョンが発見されない場合には、対応する(或いは全ての) アダプタネームスペースがチェックされなければならない。深さのパラメータが 1である場合には、トップレベルネームスペースのみが検索される。アイテムの バージョンが既に発見されている場合には、そのバージョンは、バージョン番号 の内部比較に使用する最後のパラメータとして、この方法にパスされなければな らない。アダプタからのアイテムが、ビュー内における複数の場所に現れること が可能であるかどうかについて決定することは、ビューの責任である。方法Vc rTopLevel::InViewは、それが既にこのビュー階層内に所在す るかどうかをチェックするために、アイテムに関してコールされることが可能で ある。 Classes name 発見しようとするclassesの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Classesは、指定された名前のクラスの全てのバージョンを発見する。 両方のバージョン番号が指定されている場合には、指定された番号よりも大きい バージョン番号を持つ全てのアイテムが戻される。一旦、ローカルビューチェッ クが完了すると、マップされたそれぞれのアダプタ整合システムをチェックしな ければならない。深さのパラメータが1である場合には、トップレベルのネーム スペースのみが探索される。アダプタからのアイテムがビュー内の複数の場所に 現れることができるかどうかを決定する責任はビューにある。アイテムがこのビ ュー階層内に既に存在するかどうかをチェックするために、当該アイテムに関す る方法VcrTopLevel::InViewをコールすることが可能である 。 Functions name 発見しようとするfunctionsの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Functionsは、指定された名前のファンクションの全てのオーバロー ド及びバージョンを発見する。両方のバージョン番号が指定されている場合には 、指定された番号よりも大きいバージョン番号を持つ全てのアイテムが戻される 。一旦、ローカルビューチェックが完了すると、マップされたそれぞれのアダプ タ整合システムをチェックしなけれ ばならない。深さのパラメータが1である場合には、トップレベルのネームスペ ースのみが探索される。アダプタからのアイテムがビュー内の複数の場所に現れ ることができるかどうかを決定する責任はビューにある。アイテムがこのビュー 階層内に既に存在するかどうかをチェックするために、当該アイテムに関する方 法VcrTopLevel::InViewをコールすることが可能である。 Types name 発見しようとするtypesの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Typesは、指定された名前の全てのバージョンを発見する。両方のバージ ョン番号が指定されている場合には、指定された番号よりも大きいバージョン番 号を持つ全てのアイテムが戻される。一旦、ローカルビューチェックが完了する と、マップされたそれぞれのアダプタ整合システムをチェックしなければならな い。深さのパラメータが1である場合には、トップレベルのネームスペースのみ が探索される。アダプタからのアイテムがビュー内の複数の場所に現れることが できるかどうかを決定する責任はビューにある。アイテムがこのビュー階層内に 既に存在するかどうかをチェックするために、当該アイテムに関する方法Vcr TopLevel::InViewをコールすることが可能である。 Instances name 発見しようとするinstancesの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Instancesは、指定された名前のインスタンスの全てのバージョンを 発見する。両方のバージョン番号が指定されている場合には、指定された番号よ りも大きいバージョン番号を持つ全てのアイテムが戻される。一旦、ローカルビ ューチェックが完了すると、マップされたそれぞれのアダプタ整合システムをチ ェックしなければならない。深さのパラメータが1である場合には、トップレベ ルのネームスペースのみが探索される。アダプタからのアイテムがビュー内の複 数の場所に現れることができるかどうかを決定する責任はビューにある。アイテ ムがこのビュー階層内に既に存在するかどうかをチェックするために、当該アイ テムに関する方法VcrTopLevel::InViewをコールすることが 可能である。 Exceptions name 発見しようとするexceptionsの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Exceptionsは、指定された名前のユーザーによって定義された例外 の全てのバージョンを発見する。両方のバージョン番号が指定されている場合に は、指定された番号よりも大きいバージョン番号を持つ全てのアイテムが戻され る。一旦、ローカルビューチェックが完了すると、マップされたそれぞれのアダ プタ整合システムをチェックしなければならない。深さのパラメータが1である 場合には、トップレベルのネームスペースのみが探索される。アダプタからのア イテムがビュー内の複数の場所に現れることができるかどうかを決定する責任は ビューにある。アイテムがこのビュー階層内に既に存在するかどうかをチェック するために、当該アイテムに関する方法VcrTopLevel::InVie wをコールすることが可能である。 All name 発見しようとするアイテムの名前。 scase 探索はケース依存またはケース非依存のいずれかである。 system 探索するためのオブジェクトシステム。 major 発見するための最小メジャバージョン番号。 minor 発見するための最小マイナバージョン番号。 search 遂行するための探索のタイプ depth 探索するためのネームスペース層数。 Allは、指定された名前の全ての異なるアイテム(クラス、ファンクション 、タイプ、等々)を発見する。両方のバージョン番号が指定されている場合には 、指定された番号よりも大きいバージョン番号を持つ全てのアイテムが戻される 。一旦、ローカルビューチェックが完了すると、マップされたそれぞれのアダプ タ整合システムをチェックしなければならない。深さのパラメータが1である場 合には、トップレベルのネームスペースのみが探索される。アダプタからのアイ テムがビュー内の複数の場所に現れることができるかどうかを決定する責任はビ ューにある。アイテムがこのビュー階層内に既に存在するかどうかをチェックす るために、当該アイテムに関する方法VcrTopLevel::InView をコールすることが可能である。 Enumerate func 各アイテムに関してコールするためのファンクション。 context 列挙ファンクションへパスするための文脈情報。 type 探索するためのアイテムのタイプ。 system 探索をするためのオブジェクトシステム。 search 遂行するための探索のタイプ。 Enumerateは、指定されたタイプの全てのアイテムを列挙する。タイ プがKVcrAllである場合には、全てのアイテムが列挙される。一旦、ロー カルビューチェックが完了すれば、それぞれのマップされたアダプタ整合システ ムをチェックしなければならない。深さのパラメータが1である場合には、トッ プレベルのネームスペースのみが探索される。発見された各アイテムに関して、 アーギュメント文脈およびアイテム自身と共に列挙ファンクションがコールされ る。これは、ネストされた一切のネームスペースにアイテムを列挙してはならな い。アダプタからのアイテムがビュー内の複数の場所に現れることが可能である かどうかを決定するのはビューの責任である。アイテムがビュー階層内に既に存 在しているかどうかをチェックするために、当該アイテムに関して、VcrTo pLevel::InViewをコールすることが出来る。 MappedAdapters MappedAdaptersは、このビューにマップされている全てのアダ プタネームスペースのリストを戻す。 Map item ビューへマップするためのアイテム。 Mapは、特定のアイテムを現行ビューにマップする。探索および列挙に際し てアイテムをルックアップできるように、ビューはアイテムを隠さねばならない 。Mapは、クラス、ファンクション、タイプ、インスタンス、例外、及び、ネ ームスペースに適用される。リターンまたはTRUEは、マッピングオペレーシ ョンが成功したことを示す。リターン が成功しても、オブジェクトは、このネームスペースにおいて直接マップ可能で ないこともあり得ることに注意されたい。オブジェクトは、このビューツリー内 の他の場所にマップされていることもあり得る。 Unmap item ビューからアンマップするためのアイテム。 Unmapは、現在のビューから特定のアイテムをアンマップする。アイテム がこのビューにマップされる場合には、そのアイテムは除去されなければならな い。Unmapは、クラス、ファンクション、タイプ、インスタンス、例外、及 び、ネームスペースに適用される。 UnmapAll system そのためにアイテムをアンマップするためのオブジェクトシス テム。 UnmapAllは、システムによって所有される全てのアイテムを現在のビ ューからアンマップする。システムによって所有されるビュー内にマップされて いるあらゆるアイテムは除去されなければならない。UnmappAllは、ク ラス、ファンクション、タイプ、インスタンス、及び、例外に関するネームスペ ースのみに適用されない。 UnmapAllFromTree system そのためにアイテムをアンマップするためのオブジェクトシス テム。 UnmappedAllは、現在のビュー及び含まれる全てのビューから、シ ステムによって所有される全てのアイテムを再帰的にアンマップする。ビュー内 にマップされているシステム所有のあらゆるアイテムは除去されなければならな い。UnmappAllFromTreeは、クラス、ファンクション、タイプ 、インスタンス、及び、例外に関するネームスペースのみに適用されない。 ClassChanged cls 変化したクラス。 nummeths クラスにおける新規なmethodsの数。 numprops クラスにおける新規なpropertiesの数。 numtypes クラスにおける新規なtypesの数。 numinsts クラスにおける新規なinstancesの数。 numexcepts クラスにおける新規なexceptionsの数。 ClassChangedは、クラスを含むビューが変化したことを当該ビュ ーに通告する。ClassChangedは、クラスに加えられた新規アイテム の数をビューに提供する。これは、専用表の内容全体に亙って複雑な探索の実施 を可能にするために、ビューが専用表を管理することを可能にする。 AdapterAdded nspace 加えられたアダプタ。 アダプタが新規にインストールされた場合には、クラスレジストリコールは、 各トップレベルビューに対するAdapterAddedをコールする。ビュー は、どのような選択方法であっても、そのスペース内にアダプタをマップするこ とが可能である。 AdapterRemoved nspace 除去されたアダプタ。 アダプタが除去された場合、クラスレジストリは、各トップレベルビューに関 するAdapterRemovedをコールする。ビューは、この時点において 、アダプタのアイテムが、その階層構造内のどの位置に所在するかに関する情報 を持続的に記憶することが可能である。この後において、ビューは、全てのアダ プタネームスペース及び当該アダプタに属するアイテムをアンマップしなければ ならない。 Removed 利用可能なビューのリストからビューが除去されたことを当該ビューに通告す るために、トップレベルビューに関するクラスレジストリによって、Remov edがコールされる。ビューは、この時点におけるその階層に関する情報を持続 的に記憶することが出来る。従って、ビューは、全てのアイテムとアダプタ、及 び、全てのサブビューをアンマップしなければならない。クラスレジストリは、 Removedをコールした後において、ビューを削除する原因となるべき当該 ビューに関するリファレンスを解除する。 クラスVClassRegistry VPrimaryの共用サブクラス VClassRegistryは、ビュー及びアダプタを管理するクラスであ る。アダプタは、異なるオブジェクトシステムとビューとの間のインタフェース を提供する。ビューは、ユーザーに呈示可能なネームスペースの階層を提供する 。ビューは、アイテムをユーザー定義のカテゴリにグルーピングするために、ユ ーザーによって定義することが出来る。任意の所定クラスは、ビュー内にただ1 度だけ現れることが可能であるが、同時に、多重ビューの存在が可能である。あ らゆるビューは、あらゆるネームのレイアウトを持つことができる。名前(ネー ムスペース内のクラス、等々)の物理的階層構造は同じ状態に留どまり、そして 、ビューのみが、それら自身の必要性に適するように、それらの階層構造を順序 付けし直す。ビューは、ネームスペース及びアイテムの「仮想」階層を記憶する 持続的記憶オブジェクトとして実行可能であり、そして、後で階層を作り直した 場合に、ロードし直す。アダプタビューは、名前の物理的階層構造を提供する。 共用メンバー 共用メンバー TypeManager このレジストリによって使用されるタイプマネージ ャを戻す。 オーバライド可能な共用メンバー AddView 新規なトップレベルビューを加える。 RemoveView レジストリからビューを除去する。 Views レジストリにおける全てのビューを戻す。 AddAdapter オブジェクトシステムアダプタをレジストリに加える 。 RemoveAdapter レジストリからオブジェクトシステムアダプタ を除去する。 Adapters インストールされたオブジェクトシステムアダプタのリス トを戻す。 VClassRegistryコンストラクタ manager タイプ比較のために使用するためのタイプマネージャ。 VClassRegistryコンストラクタは内部データ構造である。アー ギュメン トは、タイプに関する質問のためにどのタイプマネージャをの使用するかを指定 する。クラスレジストリ自体は、タイプマネージャーを直接使用しない。VCl assRegistryコンストラクタは、クラス、ファンクション、インスタ ンス、例外、及び、タイプ記述に含まれるタイプに関する比較情報を、クラスレ ジストリのユーザーが決定可能にする。 VClassRegistrvデストラクタ VClassRegistryデストラクタは、全てのビューを除去し、そし て、全てのアダプタを除去する。全てのクラスレジストリオブジェクトは、依然 としてリファレンスされていない限り、このデストラクタによって破壊される。 TypeManager TypeManagerは、このクラスレジストリと関連しているタイプマネ ージャを戻す。タイプマネージャは、データタイプの両立性を管理するために用 いられる。 AddView view リストに加えるためのビュー。 AddViewは、トップレベルビューのリストに新規なビューを加える。レ ジストリは、ビューにリファレンスを加え、その後において、レジストリに添付 された全てのアダプタに、それを通告する。 RemoveView view リストから除去するためのビュー RemoveViewは、トップレベルビューのリストからビューを除去する 。レジストリは、ビューに関するRemovedをコールし、その後において、 当該ビューに対するそのリファレンスを解放する。 Views Viewsは、クラスレジストリに添付された全ての作成されたトップレベル ビューのリストを戻す。このリストは修正されてはならない。 AddAdapter adapter リストに加えるためのアダプタ。 AddAdapterは、サポートされているアダプタのリストにオブジェク トシステムアダプタを加える。各アダプタが加えられる場合には、アダプタはア ダプタリストの末尾に置かれる。アダプタは同じ順序で質問されるので、アダプ タがクラスレジストリに加えられる順序は重要である。これは、新規にアダプタ が加えられたことを、既存の各ビューに通告する。 RemoveAdapter adapter リストから除去するためのアダプタ。 RemoveAdapterは、サポートされたアダプタのリストからオブジ ェクトシステムアダプタを除去する。アダプタは、任意の順序において除去する ことが出来る。これは、アダプタが除去されたことを既存の各ビューに通告する 。次に、レジストリは、当該アダプタに関するRemovedをコールし、そし て、当該アダプタに関するそのリファレンスをに解除する。 Adapters Adaptersは、インストールされた全てのオブジェクトシステムのリス トを戻す。このリストは修正されてはならない。 Implementation(具体化)クラス これらのクラスは、露出されたクラスのセクションにおいて定義された抽象ク ラスのインプリメンテーションである。これらは、直接インスタンス化可能であ り、そして、コードにおけるクラスレジストリエントリを作り上げるために用い ることが出来る。これらのクラスは、オブジェクトシステムアダプタに対して特 殊なサポートを提供するために、サブクラス化することも可能である。これらの クラスをサブクラス化するかどうか、又は、露出されたクラスのセクションにお いて定義されたクラスをサブクラス化するかどうかを決定することは、オブジェ クトシステムアダプタのデザイナの裁量による。 クラスVcrCodedFunction VFunctionDataの共用サブクラス VFunctionDataが、アーギュメント及び例外を順々に加えること によってオブジェクトを簡潔なC++コードに作り上げることを可能にする場合 には、VcrcodedFunctionはインプリメンテーションである。こ のインプリメンテーション は、アーギュメント及び例外に関する情報を記憶する。このクラスは、他のオブ ジェクトシステムによってサブクラス化可能である。 共用メンバー VcrcodedFunction VcrcodedFunctionオブ ジェクトを作成する。 AddArgument アーギュメントをファンクションに加える。 RemoveArqument ファンクションからアーギュメントを除去す る。 AddException ファンクションが投げることのできる例外を加え る。 RemoveException ファンクションが投げることのできる例外 を除去する。 保護されたメンバー PutType ファンクションのタイプをセットする。 保護されたデータメンバー bool_t itIsMethod これが方法であるかどうかを指定する 。 void*itsEntryPoint このファンクションのエントリーポ イントを記憶する。 VTCallType itsCallType このファンクションのため の呼出しコンベンションを記憶する。 VcrCodedFunctionコンストラクタ name 方法の名前。 resultType 方法のタイプを戻す。 isMethod このオブジェクトは方法を表す。 ucodes 方法に関する使用フラグ(該当する場合)。 EntryPoirit 方法のコール可能なエントリーポイント。 calltype 方法をコールする場合に使用するための呼び出しコンベン ション。 ファンクション記述オブジェクトを作成する。isMethodが真であるな らば、コ ンストラクタは、タイプkVTypeObjectPointerの隠された第 1のアーギュメントを自動的に加える。作成した後において、AddArgum entを用いて記述にアーギュメントを加えることができる。ファンクションの 定義が完了した後において、その定義をクラス又はネームスペースに記憶するこ とが出来る。 AddArgument arg ファンクション記述に加えるためのアーギュメント。 AddArgumentは、ファンクション記述にアーギュメントを加える。 各アーギュメントが加えられるにつれて、アーギュメントは、アーギュメントリ ストの末端に配置される。クラスレジストリに直接または間接にファンクション がインストールされた後において、アーギュメントをファンクションに決して加 えてはならない。 RemoveArgument arg ファンクション記述から除去するためのアーギュメント。 RemoveArgumentは、ファンクション記述からアーギュメントを 除去する。アーギュメントは、任意の順序で除去することが出来る。クラスレジ ストリに直接または間接にファンクションがインストールされた後において、ア ーギュメントをファンクションから決して除去し加えてはならない。 AddException except ファンクション記述に加えるための例外。 AddExceptionは、ファンクションが投げることのできる例外のリ ストに例外を加える。名前によって言語が例外にアクセスすることを可能にする ためには、クラスまたはネームスペースのいずれかにも例外を加えなければなら ない。 RemoveException except ファンクション記述から除去するための例外。 RemoveExceptionは、ファンクションが投げることのできる例 外のリストから例外を除去する。例外は、任意の順序において除去することがで きる。ファンクションがクラスレジストリに直接または間接にインストールされ た後においては、ファンクションから例外を決して除去してはならない。 PutType type ファンクションのタイプ。 ファンクションの戻しのタイプをセットする。これは、ベースクラスの初期化 の後においてファンクションのタイプをセットする必要があるVcrCoded Functionのサブクラスからコールされることを意図したものである。フ ァンクションのタイプは、それが最初に検索された後においては、変更されては ならない。 クラスVcrCodedProp VPropDataの共用サブクラス VcrCodedpropは、直接C++から使用できるVPropData のインプレメンテーションであり、従って、VPropDataのサブクラスは 定義する必要がない。VcrcodedPropは、それ自身の中にアクセッサ 方法を格納する。このクラスは、サブクラス化可能であるように設計される。 共用メンバー VcrCodedProp VpropDataオブジェクトの生成 保護されたメンバー PutType ファンクションのタイプをセットする。 保護されたメンバー PutGetMethod 特性の「ゲット」方法をセットする。 PutSetMethod 特性の「セット」方法をセットする。 VcrCodedPropコンストラクタ name 特性の名前。 resultType 特性のタイプ。 ucodes 特性に関する使用フラグ(該当する場合)。 getMthod 「ゲット」方法の記述。 setMethod 「セット」方法の記述。 特性記述を作成する。アクセッサ方法の名前は、「ゲット」または「セット」 いずれか によって先行される特性の名前でなければならない。このネーミングコンベンシ ョンは、多重クラスレジストリによって作動化可能にされたプログラム言語を堅 実に横断して特性にアクセスすることを可能にする。 PutType type 特性のタイプ。 特性のタイプをセットする。これは、ベースクラスの初期化の後において特性 のタイプをセットする必要のあるVcrCodedPropのサブクラスからコ ールされることを意図したものである。特性のタイプは、最初に検索された後で 、変更されてはならない。 PutGetMethod getMethod 「ゲット」方法の記述。 特性の「ゲット」方法を変える。通常これは、作成した後でデータをセットす る必要があるサブクラスからのみコールされなければならない。 PutSetMethod setMethod 「セット」方法の記述。 特性の「セット」方法を変える。通常これは、作成した後でデータをセットす る必要があるサブクラスからのみコールされなければならない。 クラスVcrCodedClass VClassDataの共用サブクラス VcrCodedClassは、VClassDataをサブクラス化する必 要なしにC++コードから直接クラスを定義するために使われるVClassD ataのインプリメンテーションである。インスタンスは、方法、特性、タイプ 、インスタンス、及び、例外のリストが加えられるにつれて、これらを記憶する 。このクラスは、必要に応じて、サブクラス化されるように、設計される。 共用メンバー 共用メンバー AddMethod 方法をクラス記述に加える。 RemoveMethod クラス記述から方法を除去する。 AddProperty 特性をクラス記述に加える。 RemoveProperty クラス記述から特性を除去する。 AddType タイプをクラス記述に加える。 RemoveType クラス記述からタイプを除去する。 AddInstance インスタンスをクラス記述に加える。 RemoveInstance クラス記述からインスタンスを除去する。 AddException 例外をクラス記述に加える。 RemoveException クラス記述から例外を除去する。 保護されたメンバー PutBaseClass このクラスのベースクラスをセットする。 PutBaseClasses このクラスのベースクラスのリストをセット する。 PutConstructor コンストラクタファンクションをセットする 。 PutDuplicator コピーコンストラクタファンクションをセット する。 PutDestructor デストラクタ方法をセットする。 PutAcquireMethod 獲得方法をセットする。 PutReleaseMethod リリース方法をセットする。 MyMethods このクラスにおいて定義される方法のリストを戻す。 MyProperties このクラスにおいて定義される特性のリストを戻 す。 MyTypes このクラスにおいて定義されるタイプのリストを戻す。 MyInstances このクラスにおいて定義されたインスタンスのリス トを戻す。 MyExceptions このクラスにおいて定義される例外のリストを戻 す。 保護されたデータメンバー VTVersion itsMajor クラスのメジャバージョン番号。 VTVersion itsMinor クラスのマイナバージョン番号。 VTCastList itsCastToBasesList 所定のベー スクラスにキャストされるファンクションのリスト。 VTSafeCastList itsCastFromBasesList 所定のベースクラスからキャストされたファンクションのリスト。 VcrCodedClassコンストラクタ name クラスの名前。 baseClass 単独継承されたこのクラスに関するベースクラス(或い は、NULL)。 baseClasses 多重継承されたこのクラスに関するベースクラスの リスト。 castToBases 各ベースクラスにキャストするために用いられるフ ァンクションのリスト。 castFromBases 各ベースクラスからキャストするために使われ るファンクションリスト。 constructor クラスコンストラクタの記述。 duplicator クラスコピーコンストラクタの記述。 destructor クラスデストラクタ(方法でなければならない)の記 述。 acquire インスタンス(方法でなければならない)にリファレンスを 加えるために用いられる方法の記述 release クラス(方法でなければならない)のインスタンスに対する リファレンスを除去するために用いられる方法の記述。 usage クラスに関する使用コード。 major クラスのメジャバージョン番号。 minor クラスのマイナバージョン番号。 クラスの記述を作成する。クラスは、単独継承されるか、又は、多重継承され たベースクラスであっても差し支えない。ベースクラスを作成するためには、コ ンストラクタの第1オーバロードは、ベースクラスとしてのNULLと共に使用 しなければならない。 constructor(コンストラクタ)は、クラスのための第1のコンス トラクタである。constructor(コンストラクタ)は、例えば、オブ ジェクトのインスタンスを作成するためにアプリケーションビルダによって使用 されても差し支えない。言語インタプリタに関して、コンストラクタが指定され ない場合には、インスタンスは作成されることは出来ないが、何らかの他の方法 によって導入されなければならない。例えば、インスタンスは、ファンクション によって戻されても差し支えない。 これらの方法(コンストラクタ、コピー、デストラクタ、アクアイア、リリー ス)は、オブジェクト自体によって、必ずしも実行される必要がないが、クラス レジストリに容易に統合できるように設計された利便なファンクションであって も差し支えないことに注意されたい。constructor(コンストラクタ )、及び、copy(コピー)は任意のアーギュメントを持っても差し支えない が、デストラクタ、アクアイア、及び、リリーズは一切のアーギュメントを持っ てはならず、或いは、全てのアーギュメントはデフォルト値を持たねばならない 。 castToBases及びcastFromBasesは、ゼロ長さである か、或いは、ベースクラスと同数のエントリ数を持たなければならない。これは 、ファンクションポインタのリストである。castToBasesにおける各 ファンクションは、アーギュメントとしてオブジェクトインスタンスをとり、そ して、当該ベースクラスにキャストされる場合に、インスタンスに対して、対応 するポインタを戻す。castFromBasesにおける各ファンクションは 、アーギュメントとしてオブジェクトインスタンス及びブーリアンをとり(キャ ストがタイプセーフキャストであるかどうかを指定する)、そして、当該ベース クラスからこのクラスへキャストされた場合に、インスタンスに関して、対応す るポインタを戻す。任意のエントリが0であれば、ベースクラスに対してキャス トされた場合に、オブジェクトが同じポインタを保持するものと仮定される。こ のリストは、CastToDirectBase及びCastFromDire ctBaseによって使用される。C++多重継承クラスが使用される場合には 、このリストが特に必要とされる。VcrCodedClassが、これらのキ ャストをする必要がないオブジェクトシステムによってサブクラス化された場合 には、空のリストがコンストラクタにパスされることもあり得る。 AddMethod method クラス記述に加える方法。 AddMethodは方法をクラス記述に加える。methodsは通常の方 法に関して加えることが可能であり、他のVFunctionDataオブジェ クトは、クラスの静的な方法の概念をサポートするために加えることが可能であ る。methodsは、クラスレジストリにおいてクラスがインストールされる か、或いは、引用された後において加えても差し支えない。 RemoveMethod method クラス記述から除去する方法。 RemoveMethodはクラス記述から方法を除去する。Methods は、クラス記述がクラスレジストリに直接または間接にインストールされた後に おいて、決してクラス記述から除去してはならない。このクラス記述のスーパク ラスにインストールされた方法を除去しようと試みることによっては、所要の効 果が得られないことに注意されたい。方法は、それが定義されたクラスから除去 されなければならない。サブクラスから方法を除去することの効果は、使用フラ グKVUsaageHiddenを用いて、同じ方法記述をサブクラスのクラス 記述に加えることによって生成することが出来る。 AddProperty prop クラス記述に加えるための特性。 AddPropertyは特性をクラス記述に加える。特性は、クラスがクラ スレジストリにインストールされるか、又は、引用された後において、加えても 差し支えない。 RemoveProperty prop クラス記述から除去するための特性。 RemovePropertyはクラス記述から特性を除去する。特性は、コ ラス記述がクラスレジストリに直接又は間接にインストールされた後において、 決してクラス記述から除去されてはならない。このクラス記述スーパクラスにイ ンストールされた特性を除去しようと試みることは所要の効果を生成しないこと に注意されたい。特性は、それが定義されたクラスから除去されなければならな い。サブクラスから特性を除去することの効果は、使用フラグKVUsageH iddenを用いて同じ特性記述をサブクラスのクラス記述に加えることによっ て生成される。 AddType type クラス記述に加えるためのタイプ。 AddTypeはクラス記述にタイプを加える。Typesは、クラスがクラ スレジストリにインストールされるか、或いは、引用された後において、加えら れても差し支えない。言語においては、このタイプは、この特定クラスのオブジ ェクトの文脈においてのみ適用可能であることに注意されたい。その代りに、一 般的な使用に関してタイプを定義するためには、当該タイプをネームスペースに 加えること。 RemoveType type クラス記述から除去するためのタイプ。 RemoveTypeはクラス記述からタイプを除去する。Typesは、ク ラス記述がクラスレジストリに直接または間接にインストールされた後において 、決してクラス記述から除去されてはならない。 AddInstance inst クラス記述に加えるためのインスタンス。 AddInstamceは、名前付きインスタンスをクラス記述に加える。こ れは、一般に、名前付き定数に関してのみ使用されることに注意されたい。イン スタンスは、クラスがクラスレジストリにおいてインストールされるか、或いは 、引用された後において加えられても差し支えない。言語において、このインス タンスは、この特定のクラスのオブジェクトの文脈においてのみ適用可能である ことに注意されたい。一般的な使用に関してインスタンスを定義するためには、 ネームスペースに当該インスタンスを加えること。 RemoveInstauce inst クラス記述から除去するためのインスタンス。 RemoveInstanceはクラス記述から名前付きインスタンスを除去 する。インスタンスは、クラス記述がクラスレジストリに直接または間接にイン ストールされた後において、決してクラス記述から除去されてはならない。 AddException except クラス記述に加えるための例外。 AddExceptionは例外をクラス記述に加える。例外は、クラスレジ ストリに おいてクラスがインストールされるか又は引用された後において、加えられても 差し支えない。言語において、この例外は、この特定のクラスのオブジェクトの 文脈においてのみ適用可能であることに注意されたい。一般的な使用に関して例 外を定義するためには、その代わりに、当該例外をネームスペースに加えること 。 RemoveException except クラス記述から除去するための例外。 RemoveExceptionはクラス記述から例外を除去する。例外は、 クラスレジストリクラスにおいてクラス記述が直接または間接にインストールさ れた後において、決してクラス記述から除去されてはならない。 PutBaseClass base このクラスのベースクラス。 PutBaseClassは、記述されたクラスに関してベースクラスをセッ トする。クラスが多重的に継承された場合には、その代りに、PutBaseC lassesを使用しなければならない。この方法は、動的に生成されたベース クラスを記憶するために、サブクラスによって使用することが出来る。 PutBaseClasses bases このクラスのベースクラス。 PutBaseClassesは記述されたクラスに関するベースクラスのリ ストをセットする。この方法は、動的に生成されたベースクラスを記憶するため に、サブクラスによって使用することが出来る。 PutConstructor constructor クラスに関するコンストラクタ。 PutConstructorは、記述されたクラスに関するコンストラクタ をセットする。このコンストラクタは、オブジェクトに関するC++コンストラ クタと同じでない。クラスレジストリによって定義されたコンストラクタは、オ ブジェクトの割当てに関して責任があり、当該コンストラクタは新規なオブジェ クトを戻さなければならない。コンストラクタに関するクラスレジストリ記述は 総称オブジェクトリターンタイプ(タイプコードKVTypeObjectPo inter)を持つ。この方法を用いて格納されたVF unctionDataは、オブジェクトインスタンスに関する隠された第1の アーギュメントを持たない。従って、このVFunctionDataは方法と みなしてはならない。 PutDuplicator duplicator クラスに関するコピーコンストラクタである。 PutDuplicatorは、記述されたクラスに関するコピーコンストラ クタをセットする。このコンストラクタは、オブジェクトに関するC++コピー コンストラクタと同じではない。クラスレジストリによって定義されたコピーコ ンストラクタはオブジェクトの割当てに関して責任があり、そして、新規なコピ ーヂュプリケートオブジェクトを戻さねばならない。コピーコンストラクタに関 するクラスレジストリ記述は総称オブジェクトリターンタイプ(タイプコードK VTypeObjectPointer)を持つ。この方法を用いて格納された VFunctionDataは、コピーされつつあるオブジェクトインスタンス に関する隠された第1のアーギュメントを持つ。従って、このVFunctio nDataは方法であるとみなすことが出来る。 PutDestructor destructor クラスのためのコンストラクタ PutDestructorは記述されたクラスに関するデストラクタをセッ トする。この方法は、一切のアーギュメントを持たないか、或いは、全てのアー ギュメントに関してデフォルト値を持たなければならない。このデストラクタ方 法は、オブジェクトインスタンスに対して割当てられた記憶装置の実自由の実施 に関して責任があると言う点において、C++デストラクタと同じではない。d estructorは方法でなくてはならない。 PutAcquireMethod acquire クラスに関するアクワイア(獲得)方法。 PutAcquireMethodは、クラスのインスタンスにリファレンス を加えるために用いられる方法をセットする。この方法は、一切のアーギュメン トを持ってはならないか、或いは、全てのアーギュメントがデフォルト値を持た なければならない。acquireは方法でなければならない。オブジェクトシ ステムがリファレンスカウントを継承的にサポートしない間合いには、クラスレ ジストリは、classesユーティリティを用いて、インスタンスをベースと するリファレンスカウントに関してサポートを提供す ることができる。 PutReleaseMethod release クラスのための解除(リリース)方法。 PutRejeaseMethodは、クラスのインスタンスに関するリファ レンスを除去するために用いられる方法をセットする。この方法は、一切のアー ギュメントを持ってはならず、或いは、全てのアーギュメントがデフォルト値を 持たなければならない。releaseは方法でなければならない。オブジェク トシステムがリファレンスカウントを継承的にサポートしない場合には、クラス レジストリは、classesユーティリティを用いて、インスタンスをベース とするリファレンスカウントをサポートすることができる。 MyMethods MyMethodsは、記述されたこのクラスにおいて定義された方法のリス トを戻す。これは、AddMethodを用いて加えられた方法のリストのみを 戻す。これは、記述されたクラスのスーパクラスの方法は一切戻さない。これは 、一般に、どの方法記述がこのクラス記述に関して既に動的に生成済みであるか をVcrCodedClassのサブクラスが決定することを支援するために用 いられる。 MyProperties MyPropertiesは、記述されたこのクラスにおいて定義された特性 のリストを戻す。これは、AddPropertyを用いて加えられた特性のリ ストのみを戻す。これは、記述されたこのクラスのスーパクラスの特性は一切戻 さない。これは、一般に、どの特性記述がこのクラス記述に関して既に動的に生 成済みであるかをVcrCodedClassのサブクラスが決定することを支 援するために用いられる。 MyTypes MyTypeは、記述されたこのクラスにおいて定義されたタイプのリストを 戻す。これは、AddTypeを用いて加えられたタイプのリストのみを戻す。 これは、記述されたこのクラスのスーパクラスのタイプは一切戻さない。これは 、一般に、どの方法記述がこのクラス記述に関して既に動的に生成済みであるか をVcrCodedClassのサブクラスが決定することを支援するために用 いられる。 MyInstances MyInstancesは、記述されたこのクラスにおいて定義されたインス タンスのリストを戻す。これは、AddInstanceを用いて加えられたイ ンスタンスのリストのみを戻す。これは、記述されたこのクラスのスーパクラス のインスタンスは一切戻さない。これは、一般に、どのインスタンス記述がこの クラス記述に関して既に動的に生成済みであるかをVcrCodedClass のサブクラスが決定することを支援するために用いられる。 MyExceptions MyExceptionsは、記述されたこのクラスにおいて定義された例外 のリストのみを戻す。これは、AddExceptionを用いて加えられた例 外のリストのみを戻す。これは、記述されたこのクラスのスーパークラスの例外 は一切戻さない。これは、一般に、どのインスタンス記述がこの例外記述に関し て既に動的に生成済みであるかをVcrCodedClassのサブクラスが決 定することを支援するために用いられる。 クラスVcrSimpleAdapter VAdapterNameSpaceの共用サブクラス VcrSimpleAdapterは、オブジェクトシステムアダプタに関す るベースインプリメンテーションとして使用できるVAdapterNameS paceのインプリメンテーションである。これは、VAdapterName Spaceの全ての方法のサポートを提供する。オブジェクトシステムは、これ をサブクラス化し、VcrSimpleAdapterによって提供されたキャ ッシングサポートを用いて、異なる方法における動的ルックアップを提供するこ とができる。異なるオブジェクトシステムに関するネームスペースを作成する際 にVAdapterNameSpace又はVcrsinipleAdapte rのいずれかサブクラス化が可能である。 これは、そのInstall、Remove方法、または、付加的機能を提供 するためにオブジェクトシステムアダプタによってサブクラス化することのでき る方法を介して直接使用することのできる簡単なアダプタ構造を提供する。 オーバライド可能な共用メンバー Install アダプタにアイテムをインストールする。 Remove アダプタからアイテムを除去する。 保護されたオーバライド可能なメンバー SubSpaces この中のサブスペースのリストを戻す。 Install item ネームスペースにインストールするためのアイテム。 Installは、このコードネームスペース内に特定のアイテムをインスト ールする。Installは、クラス、ファンクション、タイプ、インスタンス 、及び、例外のみに適用される。オブジェクトが一旦作成されると、これは、コ ードアダプタにインストール可能であり、従って、このオブジェクトは、異なる ビューにとって可視である。 Remove item ネームスペースから除去するためのアイテム。 Removeは、ネームスペースから特定のアイテムを除去する。アイテムが 任意のビュー内にマップされている場合には、当該アイテムは全てのビューから アンマップされる。Removeは、コードネームスペース、クラス、ファンク ション、タイプ、インスタンス、及び、例外に適用される。 SubSpaces stype 実施される探索のタイプ。 SubSpacesは、このネームスペース内に含まれるアダプタネームスペ ースのリストを検索する。この方法は、再帰的探索(即ち、深さが1以外の探索 )に実施を支援するために他の方法のベースクラスインプレメンテーションによ ってコールされる。サブクラスは、ネストにされたネームスペースの動的ルック アップに関するサポートを提供するかめに、この方法を再実行することが出来る 。 クラスVcrCodcAdapter VcrSimpleAdapterの共用サブクラス VcrCodeAdapterは、それ自身の中のキャッシュテーブルにおけ るC++コードにおいて直接作られたアイテムを格納するVcrSimpleA dapterのインプレメンテーションである。これは、そのInstall、 Remove、及び、CreateSubSpace方法を介して直接使用する ことのできる簡単なアダプタ構造を提供する。VcrSimpleAdapte rによって提供される機能性の最上位において、このクラスは、ネストされたネ ームスペースのエンドユーザーによる作成に関するサポートを提供する。アダプ タのユーザーは、一般に、アダプタ内にネストされたネームス ペースを(露出mixinからのサポートなしに)作ることが許容されないので 、オブジェクトシステムアダプタは、その代りに、VcrSimpleAdap terをサブクラス化しなければならない。 共用メンバー CreateSubSpace その中にネストされたネームスペースを作成 する。 CreateSubSpace name 新規なネームスペースを作るための名前。 CreateSubSpaccは、新規なアダプタネームスペースを作り、そ して、それを、現行ネームスペース内にインストールする。その代りに、指定さ れた名前のネームスペースが既に存在する場合には、それを戻さねばならない。 クラスVcrSimpleView VViewNameSpaceの共用サブクラス VcrSimpleViewは、アイテムをアダプタから隠すために必要な機 能性のベースレベルを提供するVViewNameSpaceのインプレメンテ ーションである。これは、アダプタネームスペースをそれ自身内にマッピングす るための簡単なポリシーを提供する。各アダプタは、トップレベルネームスペー スを共有する。アダプタの中のトップレベルネームスペースが発見されるにつれ て、これらのスペースはトップレベルネームスペース上にマップされる。マップ されたこれらのネームスペース内における階層は、アダプタ自体において定義さ れた階層構造を表す。持続的な組み込みサポートは存在しない。このクラスは、 異なるマッピングポリシーを提供するための持続的なサポートを提供するために サブクラス化しても差し支えない。マッピングポリシーは、AdapterAd ded及びMapAdapterをオーバライドすることによって変更可能であ る。持続的サポートは、Removed及びAdapterRemovedをオ ーバライドすることによって提供可能である。 保護されたメンバー Install ビュー内にアイテムをインストールする。 Remove ビューからアイテムを除去する。 CanMap アダプタアイテムがマップ可能であるかどうかを戻す。 保護されたオーバライド可能なメンバー CreateSubSpace その中にネストされたネームスペースを作る 。 SubSpaces その中におけるサブスペースのリストを戻す。 Install item ネームスペース内にインストールするためのアイテム。 Installは、このビューネームスペース内に特定のアイテムをインスト ールする。Installは、クラス、ファンクション、タイプ、インスタンス 、例外、アダプタ、及び、ビューに適用される。オブジェクトがアダプタから一 旦検索されると、それは、ビュー内にインストール可能であり、従って、クラス レジストリのユーザーにはそれが見える。Installは、アイテムをビュー 内に直接インストールする。この方法は、全ての必要なリファレンスカウントオ ペレーションを行う。 Remove Item ネームスペースから除去するためのアイテム Removeは、特定のアイテムをネームスペースから除去する。Remov eは、ビュー、アダプタ、クラス、ファンクション、インスタンス、及び、例外 に適用される。この方法は、全ての必要なリファレンスカウントオペレーション を行う。 CanMap item チェッタするためのアイテム。 CanMapは、アイテムがこのビューにマップ可能であるかどうかを戻す。 この方法のリターンがFALSEである場合には、他の一切のビュー方法はアイ テムを戻してはならない。これは、アイテムがビュー方法から戻されることが可 能かどうかをチェックするために、内部的にコールされる。デフォルトインプレ メンテーションは、item―>InView(これ)をコールした結果を戻す 。この方法は、ビュー内の複数の場所へアイテムをマップすることのサポートを 提供するために、サブクラスにおいて再実行可能である。 CreateSubSpace name 新規なネームスペースを作るための名前 CreateSubSpaceは、新規なビューネームスペースを作り、そし て、現在のネームスペース内にそれをインストールする。指定された名前のネー ムスペースが既に存在する場合には、その代わりに、それが戻されなければなら ない。ネストされたネームスペースの正しいクラスを作ることが出来るように、 この方法は、サブクラスにおいてオ ーバライドされるなければならない。 SubSpaces stype 遂行するための探索のタイプ。 SubSpacesは、このネームスペースの中に含まれるビューネームスペ ースのリストを戻す。この方法は、持続的に格納されたビュー情報を検索するた めのサポートを提供するために、サブクラスにおいてオーバライド可能である。 クラスVcrFlatView VcrSimpleViewの共用サブクラス VcrFlatViewは、フラットネームスペースモデルを提供するVVi ewNameSpaceのインプレメンテーションである。各アダプタネームス ペースが発見されるにつれて、これは、ビューのトップレベルネームスペース上 にマップされる。全てのアイテムは、当該ビューのトップレベルネームスペース において発見可能である。このクラスは、多重ネームスペースの概念を処理する 方法を持たない例えばBasicのような言語によって使用可能である。このク ラスは、サブクラス化されてはならない。フラットネームスペースの異なるイン プレメンテーションを提供するために、VcrSimpleViewは、その代 りにサブクラス化されなければならない。 Type Management(タイプ管理)クラス 複合タイプの定義 可能なタイプの集合が基本タイプに制限された場合において、クラスレジスト リは、全ての定義されたクラスの小さい部分集合を記述するためにのみ有用であ る。ただし、可能なタイプの集合は静的ではない。あらゆる複合的なデータタイ プを記述するために新規なタイプを作ることが出来る。 基本タイプ、及び、例えば、構造、結合、及び、enumsのような複合タイ プは、VTypeDataのサブクラスを用いて記述することが出来る。タイプ の定義は、複合的なデータタイプを任意に作るためにネストすることが出来る。 タイプ管理システムは、全ての可能なC++タイプをタイプ記述にマップするこ とを意図したものではない。これは、あらゆる標準オブジェクトシステムタイプ を記述することができることを意図する。タイプ管理システムが記述することの できるタイプの集合は、CORBA IDL、及び、CORBA TypeCo des内に記述することのできる全てのタイプを含む。記述可能なタイプの集合 はオブジェクトを含まない。オブジェクト記述は、他のクラスレジストリVCl assDataインスタンスによって行われる。 タイプは、タイプ記述オブジェクトの階層を組み立てることによって記述され る。タイ プが一旦作られると、クラスレジストリにおいて直接使用することが出来る。タ イプクラスは、1つのタイプのインスタンスを他のタイプのインスタンスにキャ ストすることを容易にする。構造が類似したタイプは相互にキャスト可能である 。C及びC++とは異り、クラスレジストリタイプシステムはフィールドのデー タタイプが異なるとしても、フィールド記述が相互に類似した構造をキャストす る。この相関性は、オブジェクトシステムにブリッジング能力を提供するために 用いられる。 サポートコード(VcrCall、及び、VcrCompleteCall) をコールするクラスレジストリファンクション及び方法は、アーギュメントをキ ャストし、そして、値を該当するタイプに戻すためにタイプ管理システムを用い る。サポートコードをコールするファンクションは、タイプアーギュメント及び リターンタイプが正しくキャストされることを確認するためにタイプチェックを 行うが、これらのファンクションをコールする以前に厳密にタイプチェックする ことはユーザーの責任である。 各タイプオブジェクトは、それ自体をタイプコードと関連付けることが出来る 。これらのタイプコードは、クラスレジストリの実行中のインスタンス内のタイ プを一意的に記述する。タイプコードは、迅速なタイプ比較のために使用できる 。タイプマネージャーは、タイプコードの管理に責任がある。タイプマネージャ ーは、そのデータベースに同じタイプ記述が無い場合には、1つのタイプに対し て一意的なタイプコードを生成する。既に同じタイプが存在する場合には、双方 のタイプに同じタイプコードが与えられる。従って、同一のタイプコードを持つ インスタンスは同じである。これは、タイプコードの異なる2つのインスタンス はレイアウト及び構造が同じでないことを意味しない。異なる複合タイプは、フ ィールド及びサブタイプのレイアウトが同じであっても差し支えないが、フィー ルド名が異なる場合には、2つのタイプには異なるタイプコードが与えられる。 事前定義済みのタイプを除いては、タイプコードは持続的でない。全ての異な るプロセススペースは、記述されたタイプに関して異なるタイプコードを持つ。 ただし、タイプコードはタイプ比較においてのみ使用されるので、これは、通常 、問題にはならない。一組の持続的な利用可能なタイプコードがある。これらは 、必要に応じて、Visual Edgeによって割り当てられる。持続的なタ イプコードは、基本的なタイプ記述に限って割り当てられる。タイプマネージャ ーは、全ての持続的なタイプコードを追跡することに責任がある。持続的なタイ プは、その記述オブジェクトを発見するために、必ず、タイプマネージャーにお いてルックアップ可能である。 タイプがオブジェクトによって記述されるので、これらのオブジェクトはmi xinを持っても差し支えない。タイプに関するmixinは、タイプに関する 付加的情報を開発環境に提供するために用いられる。たとえば、「カラー」と命 名されたタイプは、特殊化されたカラーエディターを展開するためのmixin サポートを持つと言う点を除けば符号無しロングと同じであっても差し支えない 。 事前定義済みタイプ(Predefined Types) 事前定義済みタイプの集合は、C++基本タイプ、並びに、例えばストリング 及び総称オブジェクトポインタのような多数の簡単な合成タイプの全範囲に亙っ てカバーする。 基本タイプ(Fundamental Types) 基本タイプ及び他の事前定義済みタイプの集合は、タイプマネージャーに記憶 された記述を持つ。これらのタイプ記述は、タイプコードを用いて、タイプマネ ージャに質問することによって発見できる。現在定義されているタイプコードの 集合を次に示す: 他の事前定義済みタイプ(Other Predefined Types) 次に示すタイプは、それらのタイプコードが複数のセッションを通じて持続的 であるという点で、他の記述済み複合タイプと異なる。 クラスVTypeData VcrToplevelの共用サブクラス VTypeDataは、全てのタイプ記述クラスに関するベースクラスである 。これは、タイプ比較、キャスティング、作成、及び、破壊に関して仮想方法を 提供する。 保護されたメンバー PutTypeManager このインスタンスを所有するタイプマネージ ャーをセットする。 PutBaseType これがベースとするタイプをセットする。 GetActualInstance タイプのインスタンスに関する実タイ プおよびポインタを入手すること。 共用メンバー(Public Members) BaseType このタイプのベースタイプを戻す。 TypeManagcr このオブジェクトと関連したタイプマネージャーを 戻す。 ItsClass このVTypeDataのサブクラスを戻す。 PutObjectSystem このタイプ記述を作成したオブジェクトシ ステムをセットする。 オーバライド可能な共用メンバー(Overidable Public Members) ConcreteTypc このタイプの物理的インプレメンテーションを戻 す。 TypeCode このタイプのタイプコードを戻す。 Identical 指定されたタイプがこのタイプと同じであるかどうかを 決定する。 SameLayoutAs 指定されたタイプがこのタイプと同じレイアウト であるかどうかを決定する(名前は異なる場合が あり得る)。 CanAlwaysCast 指定されたタイプが常にこのタイプにキャスト 可能であるかかどうかを決定する。 CanSometimesCast 指定されたタイプが時々このタイプにキ ャスト可能であるかどうかを決定する。 Alignment このタイプによって要請されるアラインメントを戻す。 SizeOf このタイプのインスタンスのサイズを戻す。 Construct 指定されたタイプの正しくキャストされたコピーである このタイプの新規なインスタンスを作成する。 Cast 指定されたタイプのインスタンスをこのタイプにキャストすること 。 Empty このタイプのインスタンスを空にすること。 Discard このタイプのインスタンスを廃棄すること。 保護されたデータメンバー VTObjectSystem itsObjectSystem このタイ プ 記述を作成したオブジェクトシステム。 タイプの定義 PutBaseType base これがベースとするタイプ。 PutBaseTypeは、この導出タイプがベースとするタイプをセットす る。例えば、このタイプが符号無しショートに対するポインタである場合には、 BaseTypeは、KVTypeUnsignedShortに関するタイプ オブジェクトを戻さねばならない。このタイプが他のタイプから直接導出されて いない場合には、このタイプはNULLを戻さねばならない。たとえば、これは 、構造に定義に関する場合である。VcrAnyのインスタンスは、記憶装置内 に配置された場合に実際に存在するタイプを戻さねばならない(すなわち、任意 のCORBA及びOEL2.0 VARIANTの両方は、特定のフィールドレ イアウトを持つ構造のインスタンスである)。この方法は、ベースタイプの生成 に関して未知である場合、当該ベースタイプをコールするためにサブクラスによ ってコールされることが可能である。 PutTypeManager manager このタイプを所有するタイプマネージャ PutTypeManagerは、このタイプ記述を管理するVTypeMa nagerインスタンスをセットする。これは、タイプマネージャがその生成後 において未知である場合に、当該タイプマネージャをベースクラスに記憶するた めにサブクラスよって使用される。 GetActualInstance instance 変換するためのインスタンス。 final (戻し)変換後のインスタンス。 GetActualInstanceは、できるだけ多く処理することの出来 るタイプのインスタンスをとる。すなわち、これは、最後の結果を発見するため にVcrAlias及びVcrAnyタイプを処理することを意味する。インス タンスがVcrAnyである場合には、TypeOf及びVcrAnyのVal ueメンバーはfinalに格納される。VcrAliasのインスタンスは、 ちょうど、別名のBaseTypeを用いて処理されたタイプを持つ。この方法 は、全てのエイリアス及びエニーが処理されるまで、これらのオペレーションを 実施する。この方法は、キャスティングの実施を支援するため に用いられる。 BaseType BaseTypeは、この導出タイプがベースとするタイプを戻す。例えば、 このタイプが符号無しショートに対するポインタである場合には、BaseTy peはKVTypeUnsignedShortに関するタイプオブジェクトを 戻さねばならない。このタイプが他のタイプから直接導出されない場合には、N ULLを戻さねばならない。たとえば、これは、構造定義の場合である。 TypeManager TypeManagerは、このタイプ記述を管理するVTypeManag erインスタンスを戻す。 ItsClass ItsClassは、このインスタンスのタイプを戻す。これは、VType Dataサブクラスのランタイム識別を実施するために用いられる。VClas sの方法は、これがTypeDataのどのサブクラスであるかを識別するため に使用することが出来る。ItsClassは、変換中のタイプに関する情報を 収集するためにタイプ変換ルーチンにおいてコールされる。 PutObjectSystem system 当該タイプを所有するオブジェクトシステム。 PutObjectSystemは、このタイプを所有するオブジェクトシス テムをセットする。この方法は、当該タイプ作成の直後においてのみ、オブジェ クトシステムによってコールされなければならない。 ConcreteTypc ConcreteTypcは、このタイプの物理的レイアウトであるタイプを 戻す。例えば、CORBAシーケンスであるタイプは、3つのエレメントを含む 構造である具象タイプを持つ。それら自体が具象であるような全てのタイプは、 この方法からNULLを戻さなければならない。デフォルトインプレメンテーシ ョンはNULLを戻す。 TypeCode TypeCodeは、このタイプに関するタイプコードを戻す。タイプコード は、2つの異なるタイプの同等性を決定するために、これらを比較するために使 用できる。タイプマネージャーは、タイプの両立性を決定するために使用される 。TypeCodeへの初期コールに関して、タイプマネージャーは、このタイ プに対するVTTypeCodeを発見するためにコールされる。初期コールの 後で、結果は当該タイプに記憶される。 Identical type 比較するためのタイプ。 Identicalは、指定されたタイプが現在のタイプと同じであるかどう かを決定する。当該タイプが正確な複製であるならば、これは、真を戻さねばな らない。全てのサブタイプ、サブフィールド、及び、名前はマッチしなければな らない。ヘルプ情報は比較してはならない。タイプマネージャーは、2つのタイ プが同じタイプコードを与えられることが可能であるかどうかを決定するために 、この方法をコールする。ベースクラスインプレメンテーションは、2つのタイ プがTypeDataの同じサブクラスであることをチェックする。システムは 2つのタイプの比較に際して、タイプ定義における循環性が当該システム停止の 原因とならないことを、導出タイプが確認しなければならない。 SameLayoutAs type 比較するためのタイプ。 SameLayoutAsは、指定されたタイプが現在のタイプにレイアウト に関して同じであるかどうかを決定する。全てのサブタイプ、サブフィールド、 及び、オフセットがマッチするならば、これは真を戻さねばならない。名前およ びヘルプ情報は比較してはならない。この方法は、キャスティング可能性を決定 するためにコールされる。 CanAlwaysCast type 比較するためのタイプ。 CanAlwaysCastは、全ての状況において、情報の損失なしに、タ イプがこのタイプにキャストされることが可能であるかどうかを決定する。たと えば、ショートは常にロングに対してキャストされることが可能であるが、ロン グの或るインスタンスに限り、ショートに対してキャストされることが可能であ る。これは、ショートからロングの 場合に限り、真を戻すはずである。 CanSometimesCast type 比較するためのタイプ。 或る種の状況または全ての状況において、情報の損失を生じることなしに、タ イプがこのタイプに対してキャストされることが可能であるかどうかを、Can SometimesCastが決定する。たとえば、ショートは常にロングに対 してキャストされることが可能であるが、ロングの或るインスタンスに限り、シ ョートに対してキャストされることが可能である。これは、ショートからロング へ、又は、ロングからショートへ、いずれの場合にも、真を戻すはずである。 Alignment アラインメントは、このタイプのインスタンスのために必要とされるアライン メントを戻す。アラインメントはバイト数において指定する。例えば、8バイト ダブルは、4バイト境界上にアラインされることが可能であるはずであり、この 場合には、この方法は4を戻すはずである。可能な最低値は1である。 SizeOf instance サイズを決定するためのに使用されるインスタンスに対す るポインタ。 SizeOfは、バイト表現されたタイプの特定インスタンスのサイズを戻す 。インスタンスポインタがNULLである場合に、サイズが固定されているなら ば、SizeOfは、タイプの全てのインスタンスのサイズを戻さねばならない 。インスタンスのサイズが可変である場合には、SizeOfは0または負を戻 さねばならない。 Construct original コピーのもととなるオリジナルオブジェクトに対するタイ プ及びポインタ。 instance (戻し)このタイプの新規なインスタンス。 Constructは、入力オブジェクトをこのタイプにキャストすることに より、新規なインスタンスを作成する。Constructは、戻された新規オ ブジェクトに対してバッファを割当てなければならない。戻し値は、新規なイン スタンスのサイズでなくて はならない。オリジナルインスタンスがこのタイプに対してキャストされないか 、または、メモリの割当が不可能である場合には、Constructは0を戻 さねばならない。 Cast original コピーのもととなオリジナルオブジェクトに対するタイプ 及びポインタ。 instance インスタンスを記憶する場所に関するポインタ。 Castは、このタイプに入力オブジェクトをキャストすることにより、この タイプの新規なインスタンスを作成する。Castは、新規なタイプインスタン スにバッファを割当ててはならないが、その代わりに、当該タイプに適合するだ け充分に大きいことが保証されている供給されたバッファを使用しなければなら ない。戻し値は、新規なインスタンスのサイズでなくてはならない。オリジナル インスタンスがこのタイプに対してキャストされることが出来ないか、又は、メ モリーが割当てられることが出来ない場合には、Castは0を戻さねばならな い。このルーチンにパスされたインスタンスバッファは不要情報を含むことがあ り得るので、完全に重ね書きされなければならない。 Empty instance 空にされるためのタイプのインスタンス。 Emptyは、当該タイプのインスタンスの内容を空にする。これは、当該イ ンスタンス内に割当てられた全てのメモリを解放しなければならないが、インス タンス自体を解放してはならない。 Discard instance 空にされるためのタイプのインスタンス。 Discardは、このタイプのインスタンスの内容を空にする。これは、当 該インスタンス内に割当てられた全てのメモリを解放しなければならないが、イ ンスタンス自体を解放してはならない。 クラスVcrFundamcntal VTypeDataの共用サブクラス VcrFundamentalは基本タイプを定義する。このクラスは、全て の基本タイプのインプレメンテーションを提供するために、内部的にサブクラス 化される。このク ラスが他の基本タイプを提供しない限り、ユーザーは、通常、このクラスをサブ クラス化する必要はない。 共用メンバー VcrFundamental VcrFundamentalオブジェクト を作成する。 VcrFundamentalコンストラクタ manager このオブジェクトによって用いられるタイプマネージャ。 name このポインタタイプの名前。 type この基本タイプのタイプコード。 例えば符号付きインスタンス等のような基本タイプを表すVcrFundam entalオブジェクトを作成する。 クラスVcrAlias VTypeDataの共用サブクラス VcrAliasは他のタイプのエイリアス(別名)を定義する。このクラス のインスタンスは、一般に、クラスレジストリ用として使用する目的で、基本タ イプの特殊バージョンに付加的ミクシン(mixin)を加えるためにのみ作成 される。たとえば、符号無しロングは、特殊化されたカラーエディタを展開する ためのmixinサポートを持つと言う点以外は符号無しロングに同じである「 カラー」と命名されたエイリアスを持つことができる。 共用メンバー VcrAlias VcrAliasオブジェクトを作成する。 VcrAliasコンストラクタ name このエイリアスの名前。 realType これが表すタイプ。 他のタイプのエイリアスを表すVcrAliasオブジェクトを作成する。全 ての方法のインプレメンテーションは、realTypeオブジェクトの方法を 適宜コールする。mixinサポート用の方法は、realType上に直接マ ップされない方法に限られる。 クラスVcrPointer VTypeDataの共用サブクラス VcrPointerは、他のタイプに対するポインタを定義する。 共用メンバー VcrPointer VcrPointerオブジェクトを作成する。 VcrPointerコンストラクタ name このポインタタイプの名前。 baseType これがポインタの対象とするタイプ。 他のタイプに対するポインタを表すVcrPointerオブジェクトを作成 する。これは、オブジェクトに対するポインタ用に使用されてはならず、その代 りに、VcrObjectRefを使用しなければならない。ファンクションに 対するポインタは、VcrFunctionPtrによって実行されなければな らない。 クラスVcrObjectRef VTypeDataの共用サブクラス VcrobjectRefは、特定のオブジェクトタイプのインスタンスに関 するリファレンス(ポインタ)を定義する。 共用メンバー VcrObjectRef VcrObjectRefオブジェクトを作成す る。 Class このタイプのインスタンスが参照するオブジェクトのクラスを戻 す。 VcrObjectRefコンストラクタ manager このオブジェクトによって用いられるタイプマネージャ。 name このリファレンスタイプの名前。 refClass 参照されたオブジェクトのクラス。 指定されたクラスのインスタンスに関するリファレンス(ポインタ)を表すV crObjectRefオブジェクトを作成する。 Class Classは、このタイプのインスタンスが参照するオブジェクトのクラスを 戻す。 クラスVcrFunctionPtr VTypeDataの共用サブクラス VcrFunctionPtrは、指定されたシグネチャを用いて、ファンク ションに対するポインタを定義する。 共用メンバー VcrFunctionPtr VcrFunctionPtrオブジェクト を作成する。 Function ファンクションシグネチャ記述を戻す。 VcrFunctionPtrコンストラクタ manager このオブジェクトによって用いられるタイプマネージャ。 name このファンクションポインタタイプの名前。 funcSig これがポイントするファンクションのシグネチャ記述。 指定されたシグネチャを用いて、ファンクションに対するポインタを表すVc rFunctionPtrオブジェクトを作成する。VFunctionDat aの所有権は、このオブジェクトに譲渡される。このVFunctionDat aは、他の場所において使用されてはならない。 Function Functionは、このタイプのインスタンスがポイントするファンクショ ンの記述を戻す。 クラスVcrStructItem VcrStructItcmは、構造または合併においてフィールドを定義す る。これは、フィールドネーム、タイプ、及び、オフセットを構造内に含む。こ のクラスのインスタンスには、タイプコードを割り当てることが出来ない。 共用メンバー VcrStructItem VcrStructItemオブジェクトを作 成する。 Name このフィールドの名前を戻す。 Type このフィールドのタイプを戻す。 Offset このフィールドの構造内にオフセットを戻す。 VcrStructItemコンストラクタ name この構造フィールドの名前。 theType この構造フィールドのタイプ。 offset 構造内のこのフィールドのオフセット。 構造内のフィールドを表すVcrStructItemオブジェクトを作成す る。 Name Nameは、この構造または合併フィールドの名前を戻す。 Type Typeは、この構造または合併フィールドのタイプを戻す。 Offset Offsetは、構造内のフィールドのオフセットを戻す。 クラスVcrStruct VTypeDataの共用サブクラス VcrStructは構造の定義を定義する。この構造は、当該構造の初めか ら固定した数のオフセットにおいて固定数のフィールドを含む。 共用メンバー VcrStruct VcrStructオブジェクトを作成する。 AddItem 構造にフィールドを加える。 GetItemByNamc 指定されたフィールドのフィールド記述を戻す 。 GetItemByIndex 指定されたフィールドのフィールド記述を戻 す。 GetItemCount 構造におけるフィールド数を戻す。 VcrStructコンストラタタ manager このオブジェクトによって用いられるタイプマネージャ。 name この構造の名前。 item1−item6 構造に加えるためのオプションのアイテム。 構造を表すVcrStructオブジェクトを作成する。フィールドは、その レイアウトを定義するために、作成の後において、構造に加えることが出来る。 item1からitem6までのうちのいずれかが指定されている場合には、こ れらの各々に対してAddItemが順々にコールされたかのように、これらが 構造定義に加えられる。 AddItem Item 構造に加えるためのフィールド。 新規フィールドを構造に加えること。タイプ両立性およびキャスタビリティを 決定するにはフィールドを加える順序が用いられるので、フィールドを加える順 序は重要である。 GetItemByName name 検索するためのフィールドの名前。 所定の名前のフィールドを構造から検索すること。 GetItemByIndex index 検索するためのフィールドのインデックス。 構造における所定のインデックスのフィールドを構造から検索すること。イン デックスは、ゼロから出発してフィールドが構造に加えられた順序に従って定義 される。 GetItemCount この構造におけるフィールド番号を戻す。 クラスVcrEnumItem VcrEnumItemは、列挙タイプの可能な値のうちの1つである列挙定 数を定義 する。このクラスのインスタンスには、タイプコードを割り当てることが出来な い。 共用メンバー VcrEnumItem VcrEnumItemオブジェクトを作成する。 Name 列挙定数の名前を戻す。 Value 列挙定数の値を戻す。 VcrEnumItemコンストラクタ name この列挙定数の名前。 value この列挙定数の値 enum(列挙定数の集合)のうちの1つを表すVcrEnumItemオブ ジェクトを作成する。 Name Nameは、列挙定数の名前を戻す。 Value Valueは、列挙定数の値を戻す。 クラスVcrEnum VTypeDataの共用サブクラス VcrEnumは、列挙タイプを定義する。列挙タイプは多数の列挙定数を含 む。この場合、各定数は関連した名前および値を持つ。 共用メンバー VcrEnum VcrEnumオブジェクトを作成する。 AddItem enumに列挙定数を加える。 GetItemByName 指定された列挙定数の記述を戻す。 GetItemByIndex 指定された列挙定数の記述を戻す。 GetItemCount このenumにおける列挙定数の数を戻す。 VcrEnumコンストラクタ manager このオブジェクトによって用いられるタイプマネージャ。 name この列挙の名前。 enumType 列挙が格納されるタイプ。 item1−item6 列挙に加えるためのオプションとしてのアイテム。 列挙を表すVcrEnumオブジェクトを作成する。定数の可能な値を定義す るために、定数は、作成した後において、列挙に加えることが出来る。列挙のタ イプは、整数基本タイプでなくてはならない。item1からitem6までの うちのいずれかが指定されている場合には、これらの各々に対してAddIte mが順々にコールされたかのように、これらが構造定義に加えられる。 AddItem item 列挙に加えるための定数。 新規な定数を列挙に加えること。タイプ両立性およびキャスタビリティを決定 するにはフィールドを加える順序が用いられるので、フィールドを加える順序は 重要である。 GetItemByName name 検索するための定数の名前。 その名前によって、列挙から列挙定数を検索すること。 GetItemByIndex index 検索するための定数のインデックス。 列挙におけるそのインデックスにより、列挙から定数を検索すること。インデ ックスは、ゼロから開始して定数を列挙に加えた順序に従って定義される。 GetItemCount この列挙における定数の数を戻す。 クラスVcrSequence VTypeDataの共用サブクラス VcrSequenceは抽象クラスである。これは、その長さをインスタン スベースによりインスタンスに関して決定しても差し支えない可変長アレイを定 義する。例えば、ストリングはVcrSequencesとして実行される。同 様に、VcrStructSequenceは、VcrSequenceのトッ プにおいて実行される。更に、固定長さのアレイも、VcrArrayを用いて 、VcrSequenceのサブクラスとして記述される。 共用メンバー VcrSequence VcrSequenceオブジェクトを作成する。 GetLowerBound シーケンスの下限を戻す。 保護されたメンバー PutConcreteType 作成した後において、具象タイプをセット する。 オーバライド可能な共用メンバー GetLength シーケンスのインスタンスの長さを戻す。 GetMaxLength シーケンスの最大長を戻す。 GetElement シーケンスの指定されたエレメントを戻す。 IsLinear シーケンスデータが線型であるかどうかを戻す。 VcrSequenceコンストラクタ name このシーケンスタイプの名前。 concreteType このシーケンスがそれによって作られたタイプ。 baseType これがそのシーケンスであるようなタイプ。 1bound シーケンスインデックスの下限。 他のタイプの他のインスタンスの可変長アレイに対するポインタを表すVcr Sequenceオブジェクトを作成する。 GetLowerBound 許容されたシーケンスインデックスの下限を戻す。 PutConcreteType concreteType 実際のシーケンスタイプ。 PutConcreteTypeは、作成した後において、シーケンスの実際 のタイプをセットする。このタイプは、構造等々の中に格納される実タイプであ る。たとえば、CORBAシーケンスは、3つのエレメントを含む構造である具 象タイプを持つ。 GetLength instance このシーケンスタイプのインスタンス。 GetLengthは、このシーケンスタイプの特定のインスタンスの長さを 戻す。これは、VcrSequenceのサブクラスにおいて実行されなければ ならない。 GetMaxLength instance このシーケンスタイプのインスタンス。 GetMaxLengthは、このシーケンスタイプの特定のインスタンスに 関する最大長を戻す。これは、シーケンスアレイに関するデータ格納の割当てら れた最大長を戻す。これは、VcrSequenceのサブクラスにおいて実行 されなければならない。 GetElement instance このシーケンスタイプのインスタンス。 index 検索するためのエレメントのインデックス。 シーケンスの指定されたエレメントに対するポインタを戻す。インデックスが シーケンスの正当な限度の外側にある場合には、これはNULLを戻す。 IsLinear シーケンスが、指定されたタイプの線型シーケンスであるかどうかを戻す。戻 しがTRUEである場合には、シーケンスの第2エレメントがメモリ内の第1エ レメントに直接従う。IsLinearがFALSEを戻す場合には、シーケン スはスパースであっても差し支えなく、そして、GetElementを介して のみアクセッス可能である。 クラスVcrArray VcrSequenceの共用サブクラス VcrArrayは、固定した長さのアレイを記述する。固定した長さのアレ イは、固定した上限および下限を持たねばならない。下限はゼロに制限されない 。 共用メンバー VcrArrayコンストラクタ name このアレイタイプの名前。 elemType アレイにおけるエレメントのタイプ。 1bound アレイインデックスの下限。 len アレイの長さ。 アレイを表すVcrArrayオブジェクトを作成する。アレイは、ゼロであ ることを必要としない下限を持つ固定した長さである。 クラスVcrStructSequence VcrSequenceの共用サブクラス VcrstructSequenceは、lengh、長さ、最大長さ、及び 、エレメントのアレイに対するポインタを含むメンバーを含む構造として定義さ れるシーケンスを表す。 共用メンバー VcrStructSequence VcrStructSequence オブジェクトを作成する。 VcrStructSequenceコンストラクタ name このアレイタイプの名前。 concreteType シーケンス自体の物理的レイアウトのタイプ。 length シーケンスの長さを表す構造フィールド。 maxLen シーケンスの最大長を表すフィールド。 array シーケンスデータに対するポインタを表す構造フィールド。 1bound シーケンスインデックスの下限度。 長さ、最大長、及び、データに対するポインタのに関するエレメントを含む構 造体として記述されるシーケンスを表すVcrStructSequenceオ ブジェクトを作成する。このシーケンスのベースタイプは、array−>Ty pe()のベースタイプである。array−>Type()はVcrPointe rまたはVcrReferenceでなければならない。 クラスVcrString VcrSequenceの共用サブクラス VcrStringはキャラクタの可変長ストリングを記述する抽象クラスで ある。各サブクラスは、そのデータをあらゆる適当なフォーマットにおいて記憶 することが出来る。例えば、CストリングサブクラスはNULLで終了するキャ ラクタの線型アレイとしてストリングを格納する。Basicストリングは、キ ャラクタの線型アレイによって後続される或る長さにおいて格納される。 共用メンバー VcrString VCrStringオブジェクトを作成する。 VcrStringコンストラクタ name このストリングタイプの名前。 concreteType このストリングがそれから作成されるタイプ。 baseType ストリングのタイプ。これは、符号付き又は符号なしキャ ラクタのいずれかでなくてはならない。 1bound ストリングインデックスの下限。 ストリングを表すために用いられるVcrStringオブジェクトを作成す る。このクラスは、ストリングの異なるインプレメンテーションがこれに基づい て作成される抽象ベースクラスである。 クラスVcrAny VTypeDataの共用サブクラス VcrAnyは、数種のタイプの1つの値を含むことができるデータタイプを 定義する抽象クラスである。このタイプは、例えば0LE2.0のVARIAN T及びCORBA のようなタイプを定義するために用いられる。VcrAnyタイプは、変換され つつある値のタイプが両方のタイプに含まれていることを条件として、相互間に おいて透過的に変換可能である。インスタンスが、事前に定義済みの固定した異 なるタイプの集合に含まれる値を含むと言う制限を受けない点において、Vcr Anyはユニオンと異なる。 共用メンバー VcrAny VcrAnyオブジェクトを作成する。 保護されたメンバー PutConcreteType 作成後において、具象タイプをセットする 。 オーバライド可能な共用メンバー Types サポートされたタイプのリストを戻す。 TypeOf 指定されたインスタンスのタイプを戻す。 Value 指定されたのインスタンスからの実値を戻す。 VcrAnyコンストラクタ name このタイプの名前。 concreteType 任意のタイプの具象タイプ。 ファンクションからのパスおよび戻りをサポートするために用いられる。他の タイプの任意の集合を含むことの出来るタイプを表すVcrAnyオブジェクト を作成する。これは、例えば任意のタイプおよびVARIANTのような総称タ イプを定義するためにサブクラス化されなければならない抽象ベースクラスであ る。 PutConcreteType concreteType 任意の実タイプ。 PutConcreteTypeは、作成後において、任意の実タイプをセッ トする。このタイプは構造体等々の中に格納可能な実タイプである。たとえば、 任意のCORBAは、2つのエレメントを含む構造体である具象タイプを持つ。 Types Typesは、この総称タイプに含まれることが可能なタイプのリストの部分 集合を戻す。当該タイプが他の任意のタイプを含むことができる場合には、これ は、空のリストを 戻さねばならない。サポートされるタイプの集合が完全に動的である場合には、 空のリストが戻されなければならない。このリストは、インスタンスがどのよう なタイプを含んでいる可能性があるかに関するヒントとみなさなければならない 。 TypeOf Instance 質問するためのインスタンス。 TypeOfは、この総称タイプのインスタンスに含まれる値のタイプを戻す 。当該タイプがタイプ管理システムに関して記述されることが出来ない場合には 、TypeOfはNULLを戻さねばならない。 Value instance 質問のためのインスタンス Valueは、この総称タイプに含まれる値に対するポインタを検索する。イ ンスタンスが値を含まない場合には、これは、NULLを戻しても差し支えない 。 クラスVcrUnionItem VcrStructItemの共用サブクラス VcrUnionItemはユニオインにおけるフィールドを定義する。これ は、フィールドネーム、タイプ、スイッチ値、及び、オフセットをユニオン内に 含む。オフセットは、大抵の機械アーキテクチャに関して、一般に、ゼロである 。このクラスのインスタンスにはタイプコードは割り当てられない。 共用メンバー VcrUnionItem VcrUnionItemオブジェクトを作成す る。 Value これが使用中の現行フィールドであることを指定する値を戻す。 VcrUnionItemコンストラクタ name このユニオンフィールドの名前。 theType このユニオンフィールドのタイプ。 value このフィールドのスイッチ値。 oftset ユニオン内におけるこのフィールドのオフセット(0でない場 合)。 ユニオン内におけるフィールドを表すVcrUnionItemオブジェクト を作成する。このフィールドが「デフォルト」フィールドであるべきである場合 に、他のフィールドに関して一切の値マッチが発見されないならば、値はタイプ KVTypeVoidでなくてはならない。 Value Valueは、このフィールドに関するスイッチ値の値を戻す。ユニオンとペ アを構成するスイッチアイテムがこの値である場合には、当該ユニオンは、この フィールドによって表される値を含む。 クラスVcrUnion VcrAnyの共用サブクラス VcrUnionは抽象ユニオンタイプ定義を定義する。これは、ユニオンの 全ての異なるレイアウトに関して共通ベースを可能にすることに役立つ。たとえ ば、VcrStructUnionは、それ自体を構造対として定義するユニオ ンである。この構造は、埋め込まれた構造体およびスイッチフィールドを持つ。 それ自身がスイッチフィールドを持たない他のタイプのユニオンであっても差し 支えない。実スイッチフィールドは、VcrUnionのこのサブクラスに関し て、含まれるタイプにおける当該ユニオンの外側に所在しても差し支えない。 共用メンバー VcrUnion VcrUnionオブジェクトを作成する。 VcrUnionコンストラクタ name このユニオンの名前。 concreteType このユニオンの具象タイプ。 ユニオンを表すVcrUnionオブジェクトを作成する。具象タイプは、ユ ニオン自体の実レイアウトを定義する構造である。 クラスVcrStructUnion VcrUnionの共用サブクラス VcrStructUnionはCORBAスタイルユニオンタイプ定義を定 義する。ユニオンは、スイッチフィールドを含む構造、ユニオンのどのサブフィ ールドを使用するかを決定するフィールド、及び、実ユニオンのフィールドを含 むネストされた構造を定義 することによって作成される。これらのフィールドは、VcrStructIt emの代わりにVcrUnionItemのインスタンスでなければならない。 共用メンバー VcrStructUnion VcrStructUnionオブジェクト を作成する。 VcrStructUnionコンストラクタ name このユニオンの名前。 concreteType このユニオンの具象タイプ。 switchItem 現行ユニオンが、どのフィールドを含むかを決定する 構造におけるアイテム。 unionItem ユニオンエレメントを含むネストされた構造体としての 構造におけるアイテム。 ユニオンを表すVcrStructUnionオブジェクトを作成する。具象 タイプは、ユニオン自体の実レイアウトを定義する構造である。 クラスVcrOpaque VTypeDataの共用サブクラス VcrOpaqueは、未知の定義のタイプを定義する抽象クラスである。こ のクラスは、既知のタイプにインスタンスをキャストし、更に、この不透明なタ イプに既知のタイプをキャストすることを可能にする方法を提供する。VcrO paqueサブクラスは、可能な基本タイプおよび導出タイプの集合によって記 述することの出来ないタイプマネージャーにタイプを導入するために用いられる 。VcrOpaqueのサブクラスは、その内部表現に対して他のタイプをキャ スト可能でなくてはならない。 共用メンバー VcrOpaque VcrOpaqueオブジェクトを作成する。 保護されたメンバー PutConcreteType 作成後において、具象タイプをセットする 。 オーバライド可能な共用メンバー CastToList これがキャストすることのできるタイプのリストを戻 す。 CastFromList このタイプにキャストされることのできるタイプ のリストを戻す。 CastAlwaysReverseCast このタイプが指定されたタイ プに常にキャストされることができるかどうか を決定する。 CansometimesReverseCast このタイプが指定された タイプに時々キャストされることができるかど うかを決定する。 ReverseConstruct このタイプのインスタンスの正しくキャ ストされたコピーである指定されたタイプのイ ンスタンスを作成する。 ReverseCast このタイプのインスタンスを指定されたタイプにキ ャストする。 VcrOpaqueコンストラクタ name このタイプの名前。 concreteType この不透明タイプの具象タイプ。ファンクション に対するパス及び戻しをサポートするために用いられる。 Vcropaqueオブジェクトを作成する。このタイプのサブクラスは、全 ての仮想方法に対してインプレメンテーションを提供する。この抽象クラスは、 単に不透明タイプをタイプ管理システムに統合するためのフレームワークを定義 する。 PutConcreteType concreteType 実際に不透明なタイプ。 生成後において、PutConcreteTypeは、不透明な実タイプをセ ットする。このタイプは、構造内に格納されるか、ファンクションにパスされる 実タイプである。このタイプは、これらの不透明オブジェクトをアーギュメント としてパスし、そして、これらを戻しとして受け取るためにスタック上に正しく 配置することを管理するために必要とされる。 CastToList CastToListは、このタイプのあらゆるインスタンスが情報の損失な しで投げられ得るタイプの部分的なリストを戻す。このタイプのリストは、この タイプのインスタンスをどのように処理するかを決定するために言語インタプリ タに与えられる心得として 使用できる。 CastFromList CastFromListは、情報の損失なしのこのタイプのインスタンスに キャストされ得るこれらのタイプの部分的なリストを戻す。これらのタイプのこ のリストは、このタイプのインスタンスをどのように処理するかを決定するため に言語インタプリタに与えられる心得として使用できる。 CanAlwavsReverseCast type 比較するためのタイプ。 CanAlwaysReverseCastは、全ての状況において、情報の 損失なしに、指定されたタイプが現行タイプにキャストすることが可能であるか どうかを決定する。これは、CanAlwaysCastの逆方向である。たと えば、ショートは常にロングにキャストできるが、ショートにキャストすること のできるは或る種のロングのインスタンスに限られる。これは、ショートからロ ングの場合に限り真を戻す。 CanSometimesReverseCast type 比較するためのタイプ。 CansometimesReverseCastは、或る種のまたは全ての 状況において、情報の損失なしに、指定されたタイプが現行タイプにキャスト可 能であるかどうかを決定する。これは、CanSometimesCastの逆 方向である。たとえば、ショートは常にロングにキャストできるが、ショートに キャストすることのできるは或る種のロングのインスタンスに限られる。これは 、ショートからロング、又は、ロングからショートへキャストするいすれかの場 合に真を戻す。 ReverseConstruct instance このタイプのインスタンス。 to (入力および戻し)作成されるべき最後オブジェクト、又は、戻しに際 して新規に作成されるアイテムに対するポインタのタイプ。 ReverseConstructは、このタイプの入力オブジェクトを要求 されたタイプにキャストすることにより指定されたタイプの新規なインスタンス を作成する。Co nstructと比較した場合、これは、作成の方向の反対方向を実施する。R everseConstructは、新規に戻されたオブジェクトに対して、バ ッファを割当てなければならない。戻し値は、新規インスタンスのサイズでなく てはならない。オリジナルのインスタンスがこのタイプにキャストされることが 出来ないか、或いは、メモリを割当てられることが出来ない場合には、Reve rseConstructは0を戻さねばならない。 ReverseCast instance このタイプのインスタンス。 to 充填するためのインスタンスのタイプ及び充填するためのインスタンス に対するポインタ。 ReverseCastは、このタイプの入力オブジェクトを指定されたタイ プにキャストすることによって指定されたタイプの新規なインスタンスを作成す る。ReverseCastは、Castとの比較に際して、反対方向のキャス トを実施する。ReverseCastは、新規なタイプインスタンスに対して 、バッファを割当ててはならないが、その代りに、当該タイプに充分適合できる 程度に大きいことが保証される供給されたバッファを使用しなければならない。 戻し値は、新規なインスタンスのサイズでなくてはならない。オリジナルのイン スタンスがこのタイプにキャストされることが出来ないか、或いは、メモリを割 当てられることが出来ない場合には、ReverseCastは0を戻さねばな らない。このルーチンにパスされるインスタンスバッファは不要情報を含むこと もあり得るので、完全に重ね書きされなければならない。 クラスVTypeManager VPrimaryの共用サブクラス VTypeManagerはタイプ記述を管理する。このクラスは、タイプ記 述を記憶し、そして、一意的な各タイプ定義に関して一意的なid(VTTyp eCodes)を提供する。一般に、1つのプロセスにつき1つのタイプマネー ジャが存在する。 共用メンバー VTypeManager VTypeManagerオブジェクトを作成す る。 Register 新規なタイプを登録し、そして、そのVTTypecod eを戻す。 TypeDestroyed タイプオブジェクトが削除済みであることをタ イプマネージャーに通告する。 RegisterPersistent 持続的なタイプコードによってタイ プを登録する。 Lookup そのVTTypecodeによりタイプの記述を戻す。 SameLayout 2つのタイプが同等であるかどうかを決定する(サブ エレメントの名前は異なることもあり得る)。 CanAlwaysCast 第1のタイプは第2のタイプへ常にキャストで きるかどうかを決定する。 CanSometimesCast 第1のタイプは第2のタイプに時々キャ ストできるかどうかを決定する。 Sizeof 指定されたタイプのインスタンスのサイズを決定する。 Construct 他のタイプとして1つのタイプのコピーを作成する。 Cast 1つのタイプのインスタンスを他のタイプにキャストする。 Empty 指定されたタイプのインスタンスを空にする。 Discard 指定されたタイプのインスタンスを廃棄する。 TypeName 指定されたタイプの名前を戻す。 TypeHelp 指定されたタイプのヘルプ情報を戻す。 VTypeManagerコンストラクタ VTypeManagerオブジェクトを作成する。作成後において、タイプ マネージャーは、キャスティングを実施し、そして、タイプ記述を受け取って、 記憶する準備が整った状態にある。 Register type 登録するためのタイプ Registerは、タイプマネージャーにより、新規なタイプを登録する。 このタイプが既存のタイプと同じであることが(VTypeData::Ide nticalを用いて)決定された場合には、このタイプ記述には、同等である 既存のタイプと同じVTTypeCodeが与えられる。これは、タイプコード に関する第1のリクエストに応じて、これらのタイプのインスタンスによって自 動的にコールされる。それを直接コールする理由はない。 TypeDestroyed type 破壊されつつあるタイプ。 TypeDestroyedは、タイプが破壊されたことをタイプマネージャ に通告す る。これは、タイプ同等性を決定する際に使用された記憶済みの情報を、タイプ マネージャが浄化して、除去することを可能にする。マネージャーが当該タイプ のフィールドを引用する必要がある場合があり得るので、タイプオブジェクトが 実際に自由になる以前に、これがコールされていなければならない。タイプに関 する全てのリファレンスが消失した後ではあるが、当該タイプを削除する削除す る以前に、VTypeDataはこれを自動的にコールする。 RegisterPersistent tcode このタイプに関する持続的なタイプコード。 type 登録するためのタイプ記述 RegisterPersistentは、タイプマネージャにより、タイプ 記述を登録する。タイプ記述には、指定されたタイプコードが与えられる。これ らのタイプコードは、Visual Edgeによって割当てられなければなら ない。この方法はRegisterの代りに用いられるので、事前定義済みのタ イプをタイプマネージャに加えることができる。持続性のタイプオブジェクトは 、一旦、タイプマネージャーに加えられると、当該タイプマネージャが存在する 限り、存続する。基本タイプオブジェクトは、作成に際してこの方法を自動的に コールするので、この方法を直接コールする必要はない。 Lookup type ルックアップするためのタイプ。 Lookupは、指定されたタイプコードに関するタイプ定義を戻す。このタ イプが基本タイプであるか、或いは、このタイプマネージャにおいて現在未だ定 義されていない場合には、NULLが戻される。 SameLayout type1 比較用に使用するための第1のタイプ。 type2 比較用に使用するための第2のタイプ。 SameLayoutは、指定されたタイプのレイアウトが同じであるかどう かを決定する。全てのサブタイプ、サブフィールド、及び、オフセットがマッチ する場合には、これは、真を戻さなければならない。名前とヘルプ情報は比較し てはならない。この方法は、キャストする可能性を決定するためにコールされる 。 CanAlwaysCast type1 比較用に用いるための第1のタイプ。 type2 比較用に用いるための第2のタイプ。 CanAlwaysCastは、全ての状況において、情報の損失なしに、第 1のタイプを第2のタイプにキャストすることができるかどうかを決定する。た とえば、ショートは常にロングにキャスト可能であるが、ショートにキャストで きるのは或る種のロングのインスタンスのみに限られる。これは、ショートから ロングの場合にのみ真を戻す。 CanSometimesCast type1 比較用に用いるための第1のタイプ。 type2 比較用に用いるための第2のタイプ。 CanSometimesCastは、或る種の状況または全ての状況におい て、情報の損失なしに、第1のタイプが第2のタイプにキャスト可能であるかど うかを決定する。たとえば、ショートは常にロングにキャストできるが、ショー トにキャストすることのできるは或る種のロングのインスタンスに限られる。こ れは、ショートからロング、又は、ロングからショートへキャストするいずれか の場合に真を戻す。 Alignment type アラインするためのタイプ。 Alignmentは、このタイプのインスタンスのために必要とされるアラ インメントを戻す。アラインメントはバイト数によって指定される。例えば、8 バイトダブルは、4バイトの境界上に配列することが可能であり、この場合、こ の方法は4を戻す。可能な最低値は1である。 SizeOf type 当該インスタンスのタイプ instance サイズ決定用のインスタンスに対するポインタ。 SizeOfは、当該タイプの特定のインスタンスのサイズを戻す。インスタ ンスポイ ンタがNULLである場合において、サイズが固定されている場合には、siz eOfは、当該タイプの全てのインスタンスのサイズを戻さねばならない。イン スタンスのサイズが可変である場合には、Sizeofは0或いは負を戻さねば ならない。 Construct origtype コピー用に用いるためのオリジナルオブジェクトのタイプ 。 original コピーすしようとするオリジナルオブジェクトに対するポ インタ。 newtype ターゲットオブジェクトのタイプ。 instance (戻し)ターゲットタイプのインスタンス。 Constructは、入力オブジェクトをターゲットタイプにキャストする ことにより、ターゲットタイプの新規なインスタンスを作成する。Constr uctは、新規なオブジェクトに対してバッファを割当てなければならない。戻 しの値は、新規なインスタンスのサイズでなくてはならない。オリジナルインス タンスをターゲットタイプにキャストすることが出来ないか、或いは、メモリー がの割当てが不可能である場合には、Constructは0を戻さねばならな い。 Cast origtype コピー用に用いるためのオリジナルオブジェクトのタイプ 。 original コピーすしようとするオリジナルオブジェクトに対するポ インタ。 totype ターゲットのタイプ。 instance 当該インスタンスを格納する場所に対するポインタ。 Castは、入力オブジェクトをターゲットタイプにキャストすることにより 、ターゲットタイプの新規なインスタンスを作成する。Castは、新規なタイ プインスタンスにバッファを割当ててはならないが、その代りに、当該タイプに 充分適合するだけ大きいことが保証されている供給されたバッファを使用しなけ ればならない。戻し値は、新規なインスタンスのサイズでなくてはならない。オ リジナルインスタンスをターゲットタイプにキャストすることが出来ないか、又 は、メモリーの割当てが不可能である場合には、Castは0を戻さねばならな い。このルーチンにパスされたインスタンスバッファは不要情 報を含む可能性があるので、完全に重ね書きしなければならない。 Empty type インスタンスのタイプ。 instance 空にされるタイプのインスタンス。 Emptyは、当該タイプのインスタンスの内容を空にする。これは、当該イ ンスタンス内に割当てられたメモリー全てを解放しなければならないが、インス タンス自身を解放してはならない。インスタンス自身を解放するためには、代り に、Discardをコールしなければならない。 Discard type インスタンスのタイプ。 instance 廃棄されるべきタイプのインスタンス。 Discardは、タイプのインスタンスの内容を空にする。これは、インス タンス内に割当てられた全てのメモリーを解放し、そして、インスタンス自体を 解放する。 TypeName type それについての情報を入手しようとするタイプ。 TypeNameは、指定されたタイプの名前を検索する。当該タイプが導出 タイプである場合には、当該タイプを定義するVTypeDataオブジェクト から名前が検索される。 TypeHelp type それについての情報を入手しようとするタイプ。 TypeHelpは、指定されたタイプに関するヘルプ情報を検索する。当該 タイプが導出タイプである場合には、当該タイプを定義するVTypeData オブジェクトからヘルプオブジェクトが検索される。NULLは、基本タイプに 関して戻される。 Mixins クラスレジストリエレメントは、全て、mixinをサポートすることができ る。これらのmixinは、ベースクラスレジストリにおいて定義されていない 付加機能性を提供 することができる。例えば、mixinは、例えば整数タイプに関するカラーエ ディタのようなタイプに関する特殊化された編集ツールをサポートすることがで きる。ビジュアルエッジ(Visial Edge)は、mixinに関する標 準スーツ(アップル・イベント・スーツに類似する)を定義するために、相互運 用性を強化する目的で、そのパートナーと共同作業する意向である。mixin は、それぞれ、一意的な1つのIDを持つ。あらゆる販売者は、クラスレジスト リエントリに関して各自のmixinを定義し、そして、定義およびIDを発表 することが出来るどで、他の販売者は、それらのシステムにおいて機能性を具体 化することが出来る。標準mixinスーツを定義しようとする販売者は、ID のブロックをビジュアルエッジに請求することができる。 クラスVcrQueryMixin VMixinの共用サブクラス VcrQueryMixinは、クラスレジストリ構造自体の中のオブジェク トを含むクラスレジストリに「見える」エントリについてクラスレジストリに質 問するために用いられる抽象クラスである。このmixinの詳細については未 だ決定されていない。問合せ質問mixin定義は、あらゆる特定の問合せ言語 から独立した質問を実施する能力を提供すると同時に、OQL(ODMG’93 オブジェクト問合せ言語)と同様に複雑な質問に対してどの質問を選定するかを 可能にするために充分な詳細を提供することを意図する。質問拡張の上記とは別 の目標は、質問があらゆる特定の質問言語(例えば、SQL、OQL、Appl eEventオブジェクト規則子レコード等々)に容易に翻訳されることを可能 にすることである。この能力は、各オブジェクトシステムが、例えば質問を行う ために各質問の固有のメカニズムを使用するような方法において、質問mixi nを実行することを可能にするはずである。デフォルトとしての具体化は、収集 においてアイテムを列挙し、そして、これらアイテムを質問にマッチさせる(低 速であろうとも)ために存在する。 質問mixinは、VClassData、VAdapterNameSpa ce、VViewNameSpace、及び、VClassRegistryオ ブジェクトにおいて発見することができる。 クラスレジストリ質問に関しては、オブジェクトシステムアダプタの具体化に 際して、当該オブジェクトシステムが、継承的に、複雑な質問をサポートしない 場合には、デフォルトとしての質問mixinは、ビュー及びアダプタに対して 作成することができる。このデフォルトとしてのmixinは、ネームスペース 又はオブジェクトシステムにおける全てのクラスを列挙する。従って、質問を個 々のアイテムにマッチさせる。これは低速質問を生成するが、正しい結果を戻す 。 或る種の形の質問をサポートするオブジェクトクラスインスタンス(クラスレ ジストリにおいて記述済み)に関しては、このmixinのバージョンをVcl assDataに 付加することが出来る。こうすれば、システムとは独立した方法において、コー ドがインスタンス階層に質問することが可能になる。このmixinのデフォル トバージョンは、インスタンスの収集特性の内容を列挙するためのメカニズムが 存在する限り使用可能であるような機能を提供することができる。 クラスVcrExposureMixin VMixinの共用サブクラス VcrExposureMixinは、クラス定義、及び、他のオブジェクト システムからの具体化情報をこのオブジェクトシステム(すなわち、そのために mixinが設計されたオブジェクトシステム)に明白に露出するために使用す るためのmixinであるような抽象クラスである。 露出(exposure)mixinは、VAdapterNameSpace及びVC lassRegistryオブジェクトにおいて利用可能である。VClass Registryインプレメンテーションは、各アダプタに関して同じオペレー ションを実施する全てのアダプタを循環する。 更に、露出mixinは、外部オブジェクト(即ち、他のオブジェクトシステ ム内のオブジェクト)の周辺において固有プロクシオブジェクト(即ち、このオ ブジェクトシステム内のオブジェクト)を作成するためのサポートを提供する。 これは、このオブジェクトシステム内のオブジェクトにとって、他のオブジェク トシステム内のオブジェクトがあたかもこのオブジェクトシステムに「固有」で あるかのように見えることを可能にする。プロクシオブジェクトは、実オブジェ クトの方法および特性をコールするためのVcrCall及びVcrCompl eteCallにおけるクラスレジストリサポートを用いて、このオブジェクト システムに対するコールを実オブジェクトに簡単にマップする。 露出mixinは、具体化情報をこのオブジェクトシステムに対して露出する 方法を提供する。即ち、この機能性に含まれる特定のクラスのインスタンスを作 成するためにどのプログラムを実行するべきか等々に関する情報は、「実行具体 化(ランrインプリメンテーション」)リクエストを満足させるために作成され た「もの」としてインスタンスを明白に識別する能力である。 オブジェクトシステムアダプタは、露出mixinに関して、幾つか又は全て をサポートできるか、或いは、一切サポートすることができない。オブジェクト システムが任意のこの種機能性を実行する能力を提供しない場合には、アダプタ にmixinを提供してはならない。 露出mixinのサポートに加えて、オブジェクトシステムアダプタは、オブ ジェクトを透明に露出する能力を提供することも可能である。即ち、他のオブジ ェクトシステムからのオブジェクトがこのオブジェクトシステムの方法または特 性にパスされる場合には、アダプタは、外部オブジェクトの周辺にプロクシオブ ジェクトを自動的に作成し、そして、 それを方法または特性にパスすることを選定することが可能である。クラスレジ ストリのユーザにとっては、透明に露出することによって、オブジェクトシステ ムが正当でなく統合されたように見えることを可能にする。透明な露出を使用す れば、クラスレジストリは、それらの間に一切の特殊変換を行うことなしに、イ ンスタンスが1つのオブジェクトシステムからの他のオブジェクトシステムにパ スすることを可能にする。 オーバライド可能な共用メンバー ExposeDefinition このオブジェクトシステムに対してクラ スレジストリ定義を露出する。 ExposeSubclass あたかも、それがこのシステムのクラスの1 つのサブクラスであるかのように、このオブジェクトシ ステムに対してクラスレジストリ定義を露出する。 ExposeApplication 特定のクラスのインスタンスを作成す るためのソースとして、アプリケーションを露出する。 ExposeFactory このオブジェクトシステムからインスタンスを 作成することができるようにランタイムにおいてクラス を露出する。 ExposeInstance ランタイムにおいてこのオブジェクトシステ ムからコール可能であるように、オブジェクトインスタ ンスを露出する。 HideDefinition 露出されたレジストリ定義をこのオブジェト トシステムから隠す。 HideApplication 特定のクラスのインスタンスを作成するた めのソースとしてアプリケーションを隠す。 HideFactory インスタンスがこのオブジェクトシステムから作成 されることがこの時点においては不可能であるように露 出されたクラスファクトリを隠す。 HideInstance この時点においてはこのオブジェクトシステムか らコールされることが不可能であるように、露出された オブジェクトインスタンスを隠す。 IsDefinitionExposed 外部クラスがこのアダプタに既に 露出済みであるかどうかを戻す。 IsApplicationExposed 特定のアプリケーションがこの アダプタに既に露出済みであるかどうかを戻す。 AcquireProxy 他のオブジェクトシステムから出たこのインスタ ンスに関して、このオブジェクトシステム内にプロクシ (proxy)オブジェクトを作成する。 ReleaseProxy 既存のプロクシオブジェクトを解放する。 ConstructNameSpace このオブジェクトシステム内にネー ムスペースを作成する。 InstanceDeleted オブジェクトインスタンスが削除済みであ ことをアダプタに通告する。 UnmapForeign 露出隠しに使用可能な外部アイテムに関する全て のリファレンスを除去する。 UnmapAllForeign 露出隠しに使用された外部アイテムに関す る全てのリファレンスを除去する。 ExposeDefinition item このオブジェクトシステムに露出するためのアイテム。 exposed (戻し)このオブジェクトシステムにおいて発見される状態 におけるアイテム。 ExposeDefinitionは、アイテムをこのオブジェクトシステム に露出する。アイテムが一旦露出されると、露出された戻しアーギュメントは、 露出された定義に関するリファレンスによって、あたかもそれがこのオブジェク トシステムから出たリファレンスであるかのように、満たされなければならない 。例えば、アイテムが0ELクラス記述VOleClassDataであって、 このオブジェクトシステムがDSOMである場合、exposedは、クラスを DSOMクラスとして表すVSOMClassDataでなくてはならない。ア イテムが既に露出済みである場合、この方法は成功し、そして、露出されたアイ テムを戻さねばならない。定義の露出がサポートされない場合には、この方法は NotSupportedStatusを戻さねばならない。露出が成功した場 合には、OkStatusを戻さねばならない。 ExposeSubclass cls このオブジェクトシステムに露出するためのクラス。 super clsのサブクラスとして使用するためのスーパクラス。 exposed (戻し)このオブジェクトシステムにおいて発見された状態 におけるクラス。 ExposeSubclassは、あたかもclsがsuperのサブクラス であるかのようにclsをこのオブジェクトシステムに露出する。superは 、このオブジェク トシステムからのクラスでなければならない。clsは、それ自体のバージョン を用いて、superの全ての方法を具体化し直していなければならない。そう でない場合には、このコールは失敗する可能性がある。外部クラスを固有クラス のサブクラスとして露出すると、他のオブジェクトシステムからのクラスを、あ たかもそれがこのオブジェクトシステムからのクラスの簡単なサブクラスである かのように見せることが可能である。この機能性はアプリケーションにおいて使 用可能であるか、或いは、mixinフレームワークは、抽象クラス及びmix insを任意のオブジェクトシステムにおいて具現化することを可能にする。c lsが既に露出済みである場合には、この方法は、成功し、そして、露出された アイテムを戻さねばならない。外部クラスをサブクラスとして露出することがサ ポートされない場合には、この方法はNotSupportedStatusを 戻さねばならない。露出が成功した場合には、OkStatusが戻されなけれ ばならない。 ExposeApplication exposed このオブジェクトシステムに露出されるべきオブジェクトの クラス。 appName アプリケーションの名前。 Filename 実行可能なアプリケーションのファイルネーム。 hostNarne そこにおいてアプリケーションが実行されなければなら ないホスト。 multiple 同時に、特に命名された多重ホストにおいて実行するため に、このアプリケーションが露出されることを可能にする。 ExposeApplicationは、このオブジェクトシステムに対して 、アプリケーションを露出する。このコールは、exposedのインスタンス を作成するために、このアプリケーションを実行することが可能であることを指 定する。exposedは、ExposeDefinition又はExpos eSubdassによって戻されたVclassDataであってはならず、そ の代りに、オリジナルのVClassDataでなくてはならない。appNa meは、このシステム登録ファシリティにおいて使用されるべきアプリケーショ ンの読み取り可能な名前を指定する。hostName変数の異なる値は3つの 異なるビヘィビアに帰着可能である: * アプリケーションが特定のホストにおいてこのオブジェクトシステムによっ て実行されなければならない場合には、ホストネームはhostNameにおい て指定されなけれ ばならない。 * アプリケーションが、ホストが作成するあらゆる場所において局所的に実行 されなければならない場合には、リクエストhostNameはNULLでなく てはならない。この場合、multipleは無視される。 * アプリケーションが常に現行ホストにおいて実行されなければならず、そし て、オブジェクトが他のホストから要請される場合には、hostNameは、 1つの単一期間(即ち、「.」)を含むストリングでなくてはならない。 アプリケーションがmultipleによりTRUEとして登録された場合、 ExposeApplicationは、複数の異なるホストネームによってコ ールされることが可能である。これが許容される場合には、アプリケーションは 、指定されたホストの任意の1つにおいて実行可能である。multipleが FALSEである場合には、異なるホストネームを用いたこの方法に対する各コ ールが最後の定義に置き換わるので、そこにおいてアプリケーションの実行が可 能であるような特別に名指しされたホストが1つだけ存在する。 アプリケーションが既に露出済みである場合には、この方法は、正しいホスト 及びファイルネームをセットするように定義を更新し、そして、OkStatu sを戻さなくてはならない。この方法に対するコールによって行われたリクエス トをアダプタがサポートしない場合には、NotSupportedStatu sを戻さねばならない。露出が成功した場合には、OkStatusが戻されな ければならない。 ExposeFactorv exposed それに対してファクトリを露出するためのクラス。 factory (戻し)このオブジェクトシステムからのファクトリオブジ ェクト。 露出されたクラスのオブジェクトのソースであるように、ExposeFac toryは現行プロセスを露出する。このファクトリは、プロセスの期間中のみ 存在する。exposedは、ExposeDefinition又はExpo seSubclassによって戻されたVClassDataであってはならず 、その代りに実クラスでなくてはならない。ファクトリが既に露出済みである場 合において、この方法は、現行ファクトリをfactory内に格納し、そして 、OkStatusを戻さねばならない。この方法に対するコールによって行わ れるリクエストをアダプタがサポートしない場合には、NotSupporte dStatusを戻さねばならない。露出が成功した場合には、OkStatu sを戻さねばならない。 ExposeInstance exposed そのインスタンスを露出するためのクラス。 instance このオブジェクトシステムに露出するためのexpose dのインスタンス。 multiUse このインスタンスが複数のリクエスタによって使用可能で あるかどうか。 ExposeInstanceは、このオブジェクトシステムに対するexp osedの特定のインスタンスを露出する。インスタンスは、当該アプリケーシ ョンに関するクラスの1つの「実行中インスタンス」として使用可能である。e xposedは、Exposedefinition又はExposeSubc lassによって戻されたVClassDataであってはならない。expo sed及びinstanceは実オリジナル値でなくてはならない。この方法に 対するコールによって行われたリクエストをアダプタがサポートしない場合には 、NotSupportedStatusを戻さねばならない。露出が成功した 場合、或いは、インスタンスが既に露出済みである場合においては、OkSta tusを戻さねばならない。この場合、ExposeInstanceを用いて 露出されたこのクラスの1つのインスタンスだけでなくてはならない。mult iUseがFALSEである場合には、オブジェクトの使用が許容されるのはた だ1人のクライアントに限られなければならない。multiUseがTRUE である場合には、複数のクライアントの全てが当該オブジェクトを使用すること ができる。 HideDefinition exposed このオブジェクトシステムに以前に露出されたアイテム。 HideDefinitionは、このオブジェクトシステムに以前に露出さ れたアイテムを隠す。HideDefinitionは、アイテムによって戻さ れたExposeDefinition及びExposeSubclassに適 用することができる。この方法に対するコールによって行われたリクエストを当 該アダプタがサポートしない場合には、NotSupportedStatus を戻さねばならない。隠しが成功した場合には、OkStatusを戻さねばな らない。 HideApplication exposed このオブジェクトシステムに既に露出されたオブジェクトの クラス。 appName アプリケーションの名前 appFile 実行可能なアプリケーションのファイルネーム。 hostName 実行するために指定されたアプリケーションのホスト。 HideApplicationは、以前に露出されたアプリケーションを、 このオブジェクトシステムから隠す。appNameは、以前にExposeA pplicationにパスされたとおりのアプリケーションの読み取り可能な 名前を指定する。hostName変数の異なる値は、4種の異なるビヘイビア に帰着可能である: * hostNameが特定のホストネームである場合には、当該ホストにおい て実効するためのアプリケーション定義は除去されなければならない。 * hostNameがNULLである場合には、当該アプリケーションの局所 的に作動化不能な定義が隠される。 * hostNameが「.」である場合には、現行ホストにおいて実効するた めのアプリケーション定義は除去されなければならない。 * hostNameが「*」である場合には、全ての定義されたホストにおい て実行するためのアプリケーション定義は除去しなければならない。 この方法に対するコールによって行われるリクエストをサポートを当該アダプ タがサポートしない場合には、NotSupportedStatusを戻さね ばならない。隠しが成功した場合には、OkStatusを戻さなければならな い。 HideFactory exposed 以前に露出されたファクトリのクラス。 HideFactoryは、既に露出されたファクトリオブジェクトを隠す。 exposedは、ExposeFactoryに対するコールにおいて指定さ れていなければならない。この方法に対するコールによって行われたリクエスト を当該アダプタがサポートしない場合には、NotSupportedStat usを戻さねばならない。隠しが成功した場合には、OkStatusを戻さね ばならない。 HideInstance instance 固有オブジェクトシステムに以前に露出されたインスタン ス。 HideInstanceは、以前に露出されたインスタンスを固有オブジェ クトシステムから隠す。instanceは、ExposeInstanceに パスされたアイテ ムでなくてはならない。この方法に対するコールによって行われたリクエストを 当該アダプタがサポートしない場合には、NotSupportedStatu sを戻さねばならない。隠しが成功した場合には、OkStatusが戻されな ければならない。 IsDefrnitiotiExposed item このオブジェクトシステムに対した露出に関してチェックするため のアイテム。 IsDefinitionExposedは、このアイテムが以前にこのオブ ジェクトシステムに対して露出されたかどうかをチェックする。このコールは、 コードがその露出が以前に行われたかどうかをチェックすることを可能にする。 アイテムが以前に露出済みである場合には、露出を繰り返す必要はない。 IsApplicationExposed exposed チェックするためのオブジェクトのクラス。 appName アプリケーションの名前。 AppFile 実行可能なアプリケーションのファイルネイム。 IsApplicationExposedは、このクラス及びアプリケーシ ョンが以前にこのオブジェクトシステムに露出されたかどうかをチェックする。 このコールは、コードの露出が以前に行われたかどうかをコードがチェックする ことを可能にする。アプリケーションが以前に露出済みである場合には、露出を 繰り返す必要はない。 AcquireProxy exposed そのためにプロクシ(proxy:代理)を作成するためのクラス 。 instance そのためにプロクシを作成するためのexposedのイ ンスタンス。 proxy (戻し) インスタンスを表す代理オブジェクト。 AcquireProxyは、このオブジェクトシステムのオブジェクトとし てproxyを作成する。このproxyは、このオブジェクトシステムに対す るexposedの特定のインスタンスを表す。この方法に対するコールによっ て行われたリクエストを当 該アダプタがサポートしない場合には、NotSupportedStatus を戻さねばならない。代理作成が成功するか、または、インスタンスが先在して いる代理を持つ場合には、OkStatusを戻さねばならない。代理は、Re leaseProxyによって処理されなければならない。 ReleaseProxy proxy 他のクラスのインスタンスを表すプロクシオブジェクト。 ReleaseProxyは、AcquireProxyによって以前に検索 されたプロクシを解放する。この方法に対するコールによって行われたリケスト を当該アダプタがサポートしない場合には、Notsupportedstat usを戻さねばならない。プロクシの解放が成功した場合には、OkStatu sを戻さなければならない。 ConstructNameSpace spaceName 新規なネームスペースの名前。 nameSpace (戻し)新規に作成されたネームスペース。 ConstructNamespaceは、新規なネームスペースによって作 成された現行スペースを作成する。このネームスペースは、明白に露出されたク ラスを格納するための場所として使用することが出来る。この方法に対するコー ルによって行われたリケストを当該アダプタがサポートしない場合には、Not SupportedStatusを戻さねばならない。ネームスペースの作成が 成功するか、或いは、ネームスペースが既に存在している場合には、Oksta tusを戻さなければならない。 InstanceDeleted instance 削除されつつあるインスタンス。 InstanceDeletedは、インスタンスが削除されたことをアダプ タに通告する。これは、透明な露出によって作成された全ての関連プロクシオブ ジェクトをアダプタが破壊することを可能にする。 UnmapForeign item このオブジェクトシステムに対して露出される可能性のあったアイ テム。 UnmapForeignは、当該アダプタがアイテムに対して使用可能な全 てのリファレンスを除去する。この方法は、定期的なアダプタキャッシュパージ が、長い実行サーバプロセスにおけるメモリ消費を制限することを可能にする。 UnmapAllForeign system これに関するリファレンスを除去するためのオブジェクトシス テム。 UnmapAllForeignは、指定されたオブジェクトシステムからの アイテムに対してアダプタにより使用可能な全てのリファレンスを除去する。こ の方法は、定期的なアダプタキャッシュパージが、長い実行サーバプロセスにお けるメモリ消費を制限することを可能にする。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AP(KE,MW,SD,SZ,UG), AM,AT,AU,BB,BG,BR,BY,CA,C H,CN,CZ,DE,DK,EE,ES,FI,GB ,GE,HU,IS,JP,KE,KG,KP,KR, KZ,LK,LR,LT,LU,LV,MD,MG,M N,MW,MX,NO,NZ,PL,PT,RO,RU ,SD,SE,SG,SI,SK,TJ,TM,TT, UA,UG,US,UZ,VN (72)発明者 フーディ,マイケル,エイ. カナダ国 ケベック州 エイチ3イー 1 エム3 ナンズ アイランド ガブリエル ロイ 21

Claims (1)

  1. 【特許請求の範囲】 (1)第2のオブジェクトシステムからのオブジェクトを第1のオブジェクトシ ステムのメカニズムにより使用可能にするデジタルコンピュータにおける装置に おいて、 第2のオブジェクトシステムの関連クラス及び関連タイプの記述を提供する記 述手段と、 第1のオブジェクトシステムのオブジェクトであり且つ第2のオブジェクトシ ステムのオブジェクトに対応するプロクシオブジェクトを生成するプロクシ手段 と、 記述を利用することにより、第1のオブジェクトシステムのプロクシオブジェ クトの操作を第2のオブジェクトシステムの対応するオブジェクトへ送り出すフ ォワーディング手段とを具備する装置。 (2)請求項1に記載の装置であって、任意の数の他のオブジェクトシステムか らのオブジェクトを第1のオブジェクトシステムのメカニズムにより使用可能に し、 (a)前記プロクシ手段は複数のプロクシオブジェクトを生成する手段を含み 、各プロクシオブジェクトは前記第1のオブジェクトシステムのオブジェクトで あり且つ他のオブジェクトシステムの中の1つのオブジェクトシステムのオブジ ェクトに対応しており、 (b)前記フォワーディング手段は、それらのプロクシオブジェクトの中の1 つのプロクシオブジェクト操作を他のオブジェクトシステムの中の1つのオブジ ェクトシステムの対応するオブジェクトへ送り出す手段を含む。 (3)請求項1に記載の装置であって、前記装置は第1のオブジェクトシステム からのオブジェクトを任意の数のオブジェクトシステムのメカニズムにより使用 可能にする。 (4)請求項2に記載の装置であって、前記装置は、前記装置のコンパイルでな くオブジェクトシステムに対する支援を追加又は除去する手段を含む。 (5)請求項3に記載の装置であって、前記装置は、前記装置のコンパイルでな くオブジェクトシステムに対する支援を追加又は除去する手段を含む。 (6)請求項3に記載の装置であって、前記装置は、1つのオブジェクトシステ ムで実行されないソフトウェアを任意の数の他のオブジェクトシステムのメカニ ズムにより使用可能にする。 (7)請求項1に記載の装置であって、前記フォワーディング手段は、 制御の流れを、操作を開始するソフトウェアから前記装置へ移行させる手段と 、 前記第1のオブジェクトシステムのコンベンションに従って呼び出しスタック から意味情報を検索する手段と、 第2のオブジェクトシステムのコンベンションに従い且つ記述を利用して、呼 び出しスタックに意味情報を配置する手段と、 対応するオブジェクトの操作を実行する手段と、 結果があれば、その結果を、操作を開始するソフトウェアに戻す手段とを更に 含む。 (8)請求項7に記載の装置であって、前記プロクシ手段は、プロクシオブジェ クトを第2のオブジェクトシステムの中の対応するオブジェクトの記述と関連づ ける手段を更に含む。 (9)請求項8に記載の装置であって、前記意味情報を配置する手段は、 前記装置にコンパイルされない記述をトラバースする手段と、 そのような記述に従って意味情報を呼び出しスタックに配置する手段とを更に 含む。 (10)請求項7に記載の装置であって、前記意味情報を配置する手段は、 前記第1のオブジェクトシステムで使用される意味タイプ及び言語タイプから の意味タイプ及び言語タイプを第2のオブジェクトシステム内の対応する意味タ イプ及び言語タイプに変換する手段を更に含む。 (11)請求項10に記載の装置であって、前記意味タイプ及び言語タイプを変 換する手段は、 オブジェクトタイプ相互間で変換する手段と、 新たなプロクシオブジェクトの生成をトリガする手段とを更に含む。 (12)請求項1に記載の装置であって、前記装置は、 基本呼び出しメカニズム相互間でマッピングを実行する手段と、 低レベル呼び出しコンベンション相互間でマッピングを実行する手段のうち少 なくとも一方を更に具備し、前記低レベル呼び出しコンベンション相互間でマッ ピングを実行する手段は、 意味タイプの相違の相互間でマッピングを実行する手段と、 必要に応じてプロクシオブジェクトを動的に構成する手段と、 誤り及び例外の相違の相互間でマッピングを実行する手段と、 オブジェクト情報の問い合わせに際しての相違の相互間でマッピングを実行す る手段のうち少なくとも1つと組み合わせて使用される。 (13)請求項1に記載の装置であって、前記装置は、オブジェクトシステムの 異なる基本呼び出しメカニズムの間でマッピングを実行する手段を更に具備する 。 (14)請求項1に記載の装置であって、前記装置は、言語タイプの相違の相互 間でマッピングを実行する手段と組み合わせて使用され且つ基本呼び出しメカニ ズムの相互間でマッピングを実行する手段を更に具備する。 (15)請求項1に記載の装置であって、前記装置は、第2のオブジェクトシス テムでは提供されるが、前記第1のオブジェクトシステムでは提供されない特徴 を使用する手段を更に具備する。 (16)請求項1に記載の装置であって、前記装置は、前記第1のオブジェクト システムにより提供され、プロクシオブジェクトの機能性を要求する特徴を使用 する手段を更に具備し、そのような機能性は第2のオブジェクトシステム中の対 応するオブジェクトによっては実行されない。 (17)請求項16に記載の装置であって、前記特徴を使用する手段は、 1つのオブジェクトを記述の1つ又は複数の要素と関連づける手段と、 1つの操作の実行の前又は後に、あるいはその操作の実行の代わりに、プロク シによる特徴の実行を関連づけられたオブジェクトに委託する手段とを更に含む 。 (18)請求項1に記載の装置であって、対応するオブジェクトは解釈言語環境 又はランタイムを使用して実行される。 (19)請求項2に記載の装置であって、 アプリケーション又はオブジェクトクラスを構成するために、従来通りのアプ リケーション又はオブジェクトクラス構成環境を更に具備し、これは、 任意の数のオブジェクトシステムからの複数のオブジェクトクラスをサブクラ ス化する手段と、 任意の数のオブジェクトシステムからのオブジェクトクラスを利用する又は取 り込む手段と、 任意の数のオブジェクトシステムからのオブジェクトインスタンスを生成し且 つ組み込む手段のうち少なくとも1つを含む。 (20)請求項19に記載の装置であって、前記装置は、任意の数のオブジェク トシステムのメカニズムにより使用されるべくイネーブルされるオブジェクトを 構成する。 (21)請求項2に記載の装置であって、複数のオブジェクトシステムからのオ ブジェクト及びクラスを単一化ビューイングスペースへ編成する手段を更に具備 する。 (22)請求項9に記載の装置であって、前記装置は、オブジェクトクラス及び オブジェクトのアプリケーションプロセス、サーバプロセス及びオブジェクトシ ステムの中での再配置を可能にする。 (23)第2のオブジェクトシステムからのオブジェクトを第1のオブジェクト システムのメカニズムにより使用可能にするデジタルコンピュータの方法であっ て、 第2のオブジェクトシステムの関連クラス及び関連タイプの記述を提供し、 第1のオブジェクトシステムのオブジェクトであり、且つ前記第2のオブジェ クトシステム中のオブジェクトに対応するプロクシオブジェクトを生成し、 前記記述を利用することにより、前記第1のオブジェクトシステムのプロクシ オブジェクトの操作を第2のオブジェクトシステムの対応するオブジェクトへ送 り出す方法。
JP8509776A 1994-09-15 1995-09-15 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法 Pending JPH10505693A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/306,481 1994-09-15
US08/306,481 US5732270A (en) 1994-09-15 1994-09-15 System and method for providing interoperability among heterogeneous object systems
PCT/CA1995/000513 WO1996008765A1 (en) 1994-09-15 1995-09-15 System and method for providing interoperability among heterogeneous object systems

Publications (1)

Publication Number Publication Date
JPH10505693A true JPH10505693A (ja) 1998-06-02

Family

ID=23185503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8509776A Pending JPH10505693A (ja) 1994-09-15 1995-09-15 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法

Country Status (6)

Country Link
US (2) US5732270A (ja)
EP (1) EP0781430A1 (ja)
JP (1) JPH10505693A (ja)
AU (1) AU691031B2 (ja)
CA (1) CA2200091A1 (ja)
WO (1) WO1996008765A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359940B2 (en) 2003-03-24 2008-04-15 Fuji Xerox Co., Ltd. Cooperative processing apparatus and cooperative processing method

Families Citing this family (219)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3072709B2 (ja) * 1994-11-21 2000-08-07 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 要求伝達方法
BR9608285A (pt) * 1995-05-09 2000-04-25 Smartmove Interface de cartão
GB2305271A (en) * 1995-09-15 1997-04-02 Ibm Proxy object recovery in an object-oriented environment
US6049673A (en) * 1996-03-08 2000-04-11 Organicnet, Inc. Organicware applications for computer systems
US20020124054A1 (en) * 1996-06-27 2002-09-05 Karlheinz Dorn Medical system architecture based on microsoft OLE/OCX and automation or, respectively, atomic
US6282580B1 (en) * 1996-07-02 2001-08-28 Sun Microsystems, Inc. Bridge providing communication between different implementations of object request brokers
US5949998A (en) * 1996-07-03 1999-09-07 Sun Microsystems, Inc. Filtering an object interface definition to determine services needed and provided
EP0817016A3 (en) * 1996-07-03 2003-10-22 Siemens Aktiengesellschaft Software ICS for high level application frameworks
US5870747A (en) * 1996-07-09 1999-02-09 Informix Software, Inc. Generalized key indexes
US6751798B1 (en) * 1996-07-11 2004-06-15 724 Solutions Software Inc. Method and apparatus for performing distributed object calls using proxies and memory allocation
US5860072A (en) * 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US6263485B1 (en) 1996-07-11 2001-07-17 Andrew Schofield Method and apparatus for describing an interface definition language-defined interface, operation, and data type
US6173327B1 (en) 1996-07-11 2001-01-09 Jeroen De Borst Object-oriented method and apparatus for information delivery
US6347342B1 (en) * 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
US5911069A (en) * 1996-09-30 1999-06-08 Apple Computer, Inc. Exception handling techniques for native methods bound to SOM classes
JP2000514584A (ja) 1996-10-25 2000-10-31 シュルンベルジェ システーム 高級プログラミング言語を用いたマイクロコントローラ
US5953523A (en) * 1996-10-28 1999-09-14 International Business Machines Corporation Method and apparatus for creating "smart forms "
US5937189A (en) * 1996-11-12 1999-08-10 International Business Machines Corporation Object oriented framework mechanism for determining configuration relations
US5913061A (en) * 1997-01-08 1999-06-15 Crossroads Software, Inc. Modular application collaboration
US7020880B2 (en) * 1997-01-08 2006-03-28 International Business Machines Corporation Modular application collaborator for providing inter-operability between applications and monitoring errors to trigger execution of required compensating actions to undo interrupted transaction
US6094688A (en) * 1997-01-08 2000-07-25 Crossworlds Software, Inc. Modular application collaboration including filtering at the source and proxy execution of compensating transactions to conserve server resources
US6356957B2 (en) * 1997-04-03 2002-03-12 Hewlett-Packard Company Method for emulating native object oriented foundation classes on a target object oriented programming system using a template library
CA2204971A1 (en) * 1997-05-09 1998-11-09 Michael Cheng Uniform access to and interchange between objects employing a plurality of access methods
US6040830A (en) 1997-06-20 2000-03-21 Autodesk, Inc. Intelligent proxy objects
US5923879A (en) * 1997-07-02 1999-07-13 Ncr Corporation Conversion system and method between corba and c/c++ architectures for corba data pairs/couples
US6233584B1 (en) * 1997-09-09 2001-05-15 International Business Machines Corporation Technique for providing a universal query for multiple different databases
US5983267A (en) 1997-09-23 1999-11-09 Information Architects Corporation System for indexing and displaying requested data having heterogeneous content and representation
US5946694A (en) * 1997-09-29 1999-08-31 International Business Machines Corporation Apparatus and method for transparent application of service to business objects
CA2248419A1 (en) * 1997-09-30 1999-03-30 Pitney Bowes Inc. Carrier manager interface utilizing an ocx control
US6910047B1 (en) 1997-10-01 2005-06-21 Pitney Bowes Inc. Method and system for changing rating data via internet or modem in a carrier management system
US6873978B1 (en) 1997-10-01 2005-03-29 Pitney Bowes Inc. Event interface for a carrier manager system
EP0915419A3 (en) * 1997-10-06 2003-11-12 Sun Microsystems, Inc. Remote object access
US6898792B1 (en) * 1998-02-18 2005-05-24 Iona Technologies, Plc Foreign object definition information repository
US6141686A (en) * 1998-03-13 2000-10-31 Deterministic Networks, Inc. Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control
US7039673B1 (en) * 1998-12-24 2006-05-02 Computer Associates Think, Inc. Method and apparatus for dynamic command extensibility in an intelligent agent
US6704924B1 (en) * 1999-02-03 2004-03-09 William H. Gates, III Method and system for implementing virtual functions of an interface
WO2000055725A1 (fr) 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement
GB2351370A (en) * 1999-06-25 2000-12-27 Ibm Data processing with policed object union
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6842906B1 (en) 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6601234B1 (en) 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6434628B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Common interface for handling exception interface name with additional prefix and suffix for handling exceptions in environment services patterns
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6609158B1 (en) * 1999-10-26 2003-08-19 Novell, Inc. Component architecture in a computer system
ATE244416T1 (de) * 1999-11-22 2003-07-15 Microsoft Corp Kommunikation zwischen kontextungebundenen und kontextgebundenen objekten
US6646641B1 (en) 1999-12-08 2003-11-11 Autodesk, Inc. Extrapolation of behavioral constraints in a computer-implemented graphics system
US6662342B1 (en) 1999-12-13 2003-12-09 International Business Machines Corporation Method, system, and program for providing access to objects in a document
US20020010781A1 (en) * 1999-12-30 2002-01-24 Tuatini Jeffrey Taihana Shared service messaging models
US8028049B1 (en) * 2000-02-01 2011-09-27 Peer Intellectual Property Inc. Apparatus and method for web-based tool management
US6954895B1 (en) 2000-03-22 2005-10-11 Autodesk, Inc. Method and apparatus for using and storing objects
US20020052979A1 (en) * 2000-03-31 2002-05-02 Jochen Kappel Object to object communication system and method
US6721942B1 (en) * 2000-03-31 2004-04-13 Unisys Corporation Component object model interface to C++ type conversion
US6567819B1 (en) * 2000-04-07 2003-05-20 Ebest!, Inc. Run time objects
US6901588B1 (en) * 2000-04-17 2005-05-31 Codemesh, Inc. Sharing components between programming languages by use of polymorphic proxy
US6950935B1 (en) 2000-04-21 2005-09-27 Sun Microsystems, Inc. Pluggable authentication modules for telecommunications management network
US7010586B1 (en) 2000-04-21 2006-03-07 Sun Microsystems, Inc. System and method for event subscriptions for CORBA gateway
US6839748B1 (en) 2000-04-21 2005-01-04 Sun Microsystems, Inc. Synchronous task scheduler for corba gateway
US7228346B1 (en) 2000-04-21 2007-06-05 Sun Microsystems, Inc. IDL event and request formatting for corba gateway
US7206843B1 (en) 2000-04-21 2007-04-17 Sun Microsystems, Inc. Thread-safe portable management interface
US6813770B1 (en) * 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US6915324B1 (en) 2000-04-21 2005-07-05 Sun Microsystems, Inc. Generic and dynamic mapping of abstract syntax notation (ASN1) to and from interface definition language for network management
US7783720B1 (en) 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
US7478403B1 (en) 2000-04-21 2009-01-13 Sun Microsystems, Inc. Secure access to managed network objects using a configurable platform-independent gateway providing individual object-level access control
US7016922B1 (en) 2000-04-27 2006-03-21 Autodesk, Inc. Intelligent object versioning
CA2306968C (en) * 2000-04-28 2004-11-30 Ibm Canada Limited-Ibm Canada Limitee Efficient index-data fetch via callback for a table data
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
WO2002003198A2 (en) * 2000-07-03 2002-01-10 Oculus Technologies Corporation Access control for a decentralized or emergent model on a computer network
US6996809B2 (en) * 2000-07-10 2006-02-07 Microsoft Corporation Method and apparatus for providing instrumentation data to an instrumentation data source from within a managed code environment
US7627865B2 (en) * 2000-07-10 2009-12-01 Microsoft Corporation Method and apparatus for accessing instrumentation data from within a managed code environment
US6754672B1 (en) * 2000-09-13 2004-06-22 American Management Systems, Inc. System and method for efficient integration of government administrative and program systems
US7788335B2 (en) * 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US7512673B2 (en) 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
JP2005502096A (ja) 2001-01-11 2005-01-20 ゼット−フォース コミュニケイションズ インコーポレイテッド ファイルスイッチ及び交換ファイルシステム
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US8239354B2 (en) 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US7383288B2 (en) 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
US7302462B2 (en) * 2001-03-12 2007-11-27 Mercury Computer Systems, Inc. Framework and methods for dynamic execution of digital data processor resources
US6883172B1 (en) 2001-03-29 2005-04-19 Microsoft Corporation System and method for bridging managed and unmanaged object systems by utilizing an interface wrapper to facilitate transparent communications
US6886172B2 (en) * 2001-04-05 2005-04-26 Hewlett-Packard Development Company, L.P. Method for mapping procedural C++ code to java object-oriented classes
US6915520B2 (en) * 2001-04-06 2005-07-05 Hewlett-Packard Development Company, L.P. Java C++ proxy objects
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
US8010558B2 (en) 2001-06-05 2011-08-30 Silicon Graphics International Relocation of metadata server with outstanding DMAPI requests
US7617292B2 (en) * 2001-06-05 2009-11-10 Silicon Graphics International Multi-class heterogeneous clients in a clustered filesystem
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US7765329B2 (en) * 2002-06-05 2010-07-27 Silicon Graphics International Messaging between heterogeneous clients of a storage area network
US20040139125A1 (en) 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US7647597B2 (en) * 2001-06-28 2010-01-12 Microsoft Corporation Transparent and sub-classable proxies
US7546602B2 (en) * 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US6986148B2 (en) * 2001-07-17 2006-01-10 Appforge, Inc. Methods and systems for providing platform-independent shared software components for mobile devices
US7454746B2 (en) * 2001-07-24 2008-11-18 The Mathworks, Inc. Function call translation
US7020659B2 (en) * 2001-08-15 2006-03-28 Oic Acquistion I Corporation System and method for managing bi-directional relationships between objects
US20030093551A1 (en) * 2001-10-17 2003-05-15 Graham Taylor Adaptive software interface
US7076798B2 (en) * 2002-02-07 2006-07-11 International Business Machines Corporation Securing non-EJB corba objects using an EJB security mechanism
US20030212714A1 (en) * 2002-05-08 2003-11-13 Autodesk, Inc. Efficient deferred synchronization of objects
US7210132B2 (en) * 2002-05-30 2007-04-24 Microsoft Corporation Interoperability of objects between various platforms
GB0222420D0 (en) * 2002-09-27 2002-11-06 Ibm Optimized corba software method invocation
US20040064826A1 (en) * 2002-09-30 2004-04-01 Timothy Lim Method and system for object system interoperability
US20040064825A1 (en) * 2002-09-30 2004-04-01 Timothy Lim Method and system for object system interoperability
US7194744B2 (en) * 2002-12-17 2007-03-20 International Business Machines Corporation System and method for dynamic exception handling using an external exception handler
US7877511B1 (en) 2003-01-13 2011-01-25 F5 Networks, Inc. Method and apparatus for adaptive services networking
US7092958B2 (en) * 2003-01-29 2006-08-15 Battelle Energy Alliance, Llc Knowledge information management toolkit and method
US7360206B1 (en) * 2003-03-13 2008-04-15 Network Appliance, Inc. Method for an interpreter to control a native function call based on a signature of the native function
US7343606B2 (en) 2003-06-13 2008-03-11 Microsoft Corporation Mechanism for asynchronous components to be application framework agnostic
CA2540935A1 (en) * 2003-10-01 2005-04-14 Cash Systems, Inc. Multi-function cashless gaming atm
US7426734B2 (en) * 2003-10-24 2008-09-16 Microsoft Corporation Facilitating presentation functionality through a programming interface media namespace
US7437741B2 (en) 2004-03-08 2008-10-14 International Business Machines Corporation Method, system, and program for invoking methods between computer languages
US20050229186A1 (en) * 2004-03-15 2005-10-13 Canyonbridge, Inc. Method and apparatus for dynamic runtime object aggregation
WO2005114389A1 (en) * 2004-05-21 2005-12-01 Sap Aktiengesellschaft Portal runtime framework
US7406510B1 (en) 2004-05-21 2008-07-29 Sap Portals Israel Ltd. Techniques for accessing portal components
US7681202B2 (en) * 2004-05-21 2010-03-16 Sap Portals Israel Ltd. Portal runtime framework
US7716640B2 (en) * 2004-05-21 2010-05-11 Sap Portals Israel Ltd. Techniques for developing portal snippets using an integrated development environment (IDE)
US7716688B2 (en) * 2004-05-21 2010-05-11 Hewlett-Packard Development Company, L.P. System for object discovery in heterogenous object systems
US8214799B2 (en) * 2004-07-08 2012-07-03 Microsoft Corporation Providing information to an isolated hosted object via system-created variable objects
US20060010423A1 (en) * 2004-07-08 2006-01-12 Microsoft Corporation Variable namespaces and scoping for variables in an object model
US20060080682A1 (en) * 2004-10-12 2006-04-13 Picsel Research Ltd. Run time dynamic linking
US20060080680A1 (en) * 2004-10-12 2006-04-13 Majid Anwar Platform independent dynamic linking
US20060080683A1 (en) * 2004-10-12 2006-04-13 Majid Anwar Mechanism to circumvent restrictions of pre-written code components
FR2876852B1 (fr) * 2004-10-15 2006-12-22 Thales Sa Procede de fiabilisation de la multi-diffusion d'objets distribues
US20060225053A1 (en) * 2004-10-21 2006-10-05 Microsoft Corporation Programming language improvements
US8266631B1 (en) 2004-10-28 2012-09-11 Curen Software Enterprises, L.L.C. Calling a second functionality by a first functionality
US7774789B1 (en) 2004-10-28 2010-08-10 Wheeler Thomas T Creating a proxy object and providing information related to a proxy object
US7823169B1 (en) 2004-10-28 2010-10-26 Wheeler Thomas T Performing operations by a first functionality within a second functionality in a same or in a different programming language
US20060174252A1 (en) * 2004-11-18 2006-08-03 Besbris David G Service versioning
US8214461B1 (en) * 2004-11-23 2012-07-03 Hewlett-Packard Development Company, L.P. Method of processing request by server computer system
US7577749B1 (en) 2004-12-03 2009-08-18 Ux Ltd. Emulation of persistent HTTP connections between network devices
US8407309B1 (en) 2004-12-22 2013-03-26 Sap Ag Techniques for specifying and determining property information for portal entities using attributes
US7885970B2 (en) * 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US20060167838A1 (en) * 2005-01-21 2006-07-27 Z-Force Communications, Inc. File-based hybrid file storage scheme supporting multiple file switches
US7958347B1 (en) 2005-02-04 2011-06-07 F5 Networks, Inc. Methods and apparatus for implementing authentication
US20060179350A1 (en) * 2005-02-10 2006-08-10 Microsoft Corporation Dynamic marshaling testing
US20060179351A1 (en) * 2005-02-10 2006-08-10 Microsoft Corporation Target object for dynamic marshaling testing
US7797688B1 (en) 2005-03-22 2010-09-14 Dubagunta Saikumar V Integrating applications in multiple languages
US7861212B1 (en) 2005-03-22 2010-12-28 Dubagunta Saikumar V System, method, and computer readable medium for integrating an original application with a remote application
US8578349B1 (en) * 2005-03-23 2013-11-05 Curen Software Enterprises, L.L.C. System, method, and computer readable medium for integrating an original language application with a target language application
US20070005721A1 (en) * 2005-06-30 2007-01-04 Microsoft Corporation Remotable porting layer
US20070039010A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Automatic generation of software code to facilitate interoperability
DE502006005974D1 (de) * 2006-02-17 2010-03-11 Siemens Ag Nutzung von Variablen in mehreren Automatisierungssystemen
US7725873B2 (en) * 2006-02-28 2010-05-25 Microsoft Corporation Abstraction of host object model for managed add-in framework proxy generation
US7921409B2 (en) * 2006-02-28 2011-04-05 Microsoft Corporation Managed add-in framework proxy generation
US20070220531A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Method and system for shimming COM objects
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
US8176469B2 (en) * 2006-05-04 2012-05-08 Oracle International Corporation Inter language interoperability using a variant type
US7810140B1 (en) 2006-05-23 2010-10-05 Lipari Paul A System, method, and computer readable medium for processing a message in a transport
US7793310B2 (en) * 2006-07-11 2010-09-07 International Business Machines Corporation Dynamically inserting proxies into JAVA environments without coding explicit proxy hooks into JAVA applications
US7844759B1 (en) 2006-07-28 2010-11-30 Cowin Gregory L System, method, and computer readable medium for processing a message queue
US8694972B2 (en) * 2006-11-10 2014-04-08 The Mathworks, Inc. System and method for interoperating with foreign objects from a single language computing environment
US8423496B1 (en) 2006-12-22 2013-04-16 Curen Software Enterprises, L.L.C. Dynamic determination of needed agent rules
US7702602B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Moving and agent with a canonical rule from one device to a second device
US9311141B2 (en) 2006-12-22 2016-04-12 Callahan Cellular L.L.C. Survival rule usage by software agents
US7860517B1 (en) 2006-12-22 2010-12-28 Patoskie John P Mobile device tracking using mobile agent location breadcrumbs
US8200603B1 (en) 2006-12-22 2012-06-12 Curen Software Enterprises, L.L.C. Construction of an agent that utilizes as-needed canonical rules
US7702603B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes a compiled set of canonical rules
US7660777B1 (en) 2006-12-22 2010-02-09 Hauser Robert R Using data narrowing rule for data packaging requirement of an agent
US7664721B1 (en) 2006-12-22 2010-02-16 Hauser Robert R Moving an agent from a first execution environment to a second execution environment using supplied and resident rules
US7660780B1 (en) 2006-12-22 2010-02-09 Patoskie John P Moving an agent from a first execution environment to a second execution environment
US7698243B1 (en) 2006-12-22 2010-04-13 Hauser Robert R Constructing an agent in a first execution environment using canonical rules
US8132179B1 (en) 2006-12-22 2012-03-06 Curen Software Enterprises, L.L.C. Web service interface for mobile agents
US7949626B1 (en) * 2006-12-22 2011-05-24 Curen Software Enterprises, L.L.C. Movement of an agent that utilizes a compiled set of canonical rules
US7702604B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes supplied rules and rules resident in an execution environment
US7970724B1 (en) 2006-12-22 2011-06-28 Curen Software Enterprises, L.L.C. Execution of a canonical rules based agent
US8762976B2 (en) * 2007-03-09 2014-06-24 Microsoft Corporation Static extensibility models with dynamic languages and scripts
US7958489B2 (en) * 2007-04-12 2011-06-07 Microsoft Corporation Out of band data augmentation
US20090077097A1 (en) * 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File System
US9785549B2 (en) * 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers
US20080295070A1 (en) * 2007-05-23 2008-11-27 Microsoft Corporation Native access to foreign code environment
WO2008147973A2 (en) * 2007-05-25 2008-12-04 Attune Systems, Inc. Remote file virtualization in a switched file system
US9361129B2 (en) * 2007-08-01 2016-06-07 Microsoft Technology Licensing, Llc Instance interfaces and mix-ins for dynamic languages
US8117244B2 (en) 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US20090204705A1 (en) * 2007-11-12 2009-08-13 Attune Systems, Inc. On Demand File Virtualization for Server Configuration Management with Limited Interruption
US8548953B2 (en) * 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US20090204650A1 (en) * 2007-11-15 2009-08-13 Attune Systems, Inc. File Deduplication using Copy-on-Write Storage Tiers
US8352785B1 (en) 2007-12-13 2013-01-08 F5 Networks, Inc. Methods for generating a unified virtual snapshot and systems thereof
US20090204953A1 (en) * 2008-02-11 2009-08-13 Apple Inc. Transforming data structures between different programming languages
US9417931B2 (en) * 2008-06-24 2016-08-16 Microsoft Technology Licensing, Llc Unified metadata for external components
US8549582B1 (en) 2008-07-11 2013-10-01 F5 Networks, Inc. Methods for handling a multi-protocol content name and systems thereof
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8204860B1 (en) 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US8798092B2 (en) 2011-05-27 2014-08-05 Microsoft Corporation Cross language object sharing
US8396836B1 (en) 2011-06-30 2013-03-12 F5 Networks, Inc. System for mitigating file virtualization storage import latency
US8949774B2 (en) 2011-09-06 2015-02-03 Microsoft Corporation Generated object model for test automation
US8463850B1 (en) 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US9569202B2 (en) 2014-06-06 2017-02-14 Microsoft Technology Licensing, Llc Transparent type-based object augmentation by orthogonal functionality
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10412198B1 (en) 2016-10-27 2019-09-10 F5 Networks, Inc. Methods for improved transmission control protocol (TCP) performance visibility and devices thereof
US10567492B1 (en) 2017-05-11 2020-02-18 F5 Networks, Inc. Methods for load balancing in a federated identity environment and devices thereof
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
US10833943B1 (en) 2018-03-01 2020-11-10 F5 Networks, Inc. Methods for service chaining and devices thereof
US12003422B1 (en) 2018-09-28 2024-06-04 F5, Inc. Methods for switching network packets based on packet data and devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4736321A (en) * 1986-05-05 1988-04-05 International Business Machines Corporation Communication method between an interactive language processor workspace and external processes
JP2666847B2 (ja) * 1988-06-06 1997-10-22 日本電気株式会社 異種言語間連絡方式
US4924384A (en) * 1988-09-21 1990-05-08 International Business Machines Corporation Method for controlling the peer-to-peer processing of a distributed application across a synchronous request/response interface using push-down stack automata
US5097533A (en) * 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5146593A (en) * 1989-03-06 1992-09-08 International Business Machines Corporation Procedure call interface
US5187787B1 (en) * 1989-07-27 1996-05-07 Teknekron Software Systems Inc Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5274821A (en) * 1989-08-14 1993-12-28 International Business Machines Corporation Communication between prolog and an external process
US5278978A (en) * 1990-03-26 1994-01-11 International Business Machines Corporation Method and system for describing and exchanging data between heterogeneous database systems with data converted by the receiving database system
EP0495279B1 (en) * 1991-01-18 1997-07-16 International Business Machines Corporation Object oriented programming platform
US5481721A (en) * 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
CA2077273C (en) * 1991-12-12 1996-12-03 Mike H. Conner Language neutral objects
WO1994011810A1 (en) * 1992-11-13 1994-05-26 Microsoft Corporation A method and system for marshalling interface pointers for remote procedure calls
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5432925A (en) * 1993-08-04 1995-07-11 International Business Machines Corporation System for providing a uniform external interface for an object oriented computing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359940B2 (en) 2003-03-24 2008-04-15 Fuji Xerox Co., Ltd. Cooperative processing apparatus and cooperative processing method

Also Published As

Publication number Publication date
US5732270A (en) 1998-03-24
EP0781430A1 (en) 1997-07-02
US6349343B1 (en) 2002-02-19
WO1996008765A1 (en) 1996-03-21
AU3378095A (en) 1996-03-29
AU691031B2 (en) 1998-05-07
CA2200091A1 (en) 1996-03-21

Similar Documents

Publication Publication Date Title
AU691031B2 (en) System and method for providing interoperability among heterogeneous object systems
Bolton Pure Corba
US5361350A (en) Object oriented method management system and software for managing class method names in a computer system
US5421016A (en) System and method for dynamically invoking object methods from an application designed for static method invocation
US5339438A (en) Version independence for object oriented programs
US5692195A (en) Parent class shadowing
Box et al. Essential. Net: the common language runtime
US5418964A (en) System and method for parent class shadowing in a statically linked object hierarchy
US5493680A (en) Method for creating an object subclass with selective inheritance
US5428792A (en) System for producing language neutral objects and generating an interface between the objects and multiple computer languages
US7131110B2 (en) Method and apparatus for generating a code bridge
US5915253A (en) Method and system for implementing objects in a storage system
US6496871B1 (en) Distributed agent software system and method having enhanced process mobility and communication in a computer network
AU628753B2 (en) Method and apparatus for implementing server functions in a distributed heterogeneous environment
US6493719B1 (en) Method and system for scripting for system management information
US7533388B1 (en) Method and apparatus for dynamic Stubs and Ties in RMI-IIOP
US8191077B2 (en) Method for providing stand-in objects
JP2004534304A (ja) ソフトウェア・コンポーネント・プラグイン・フレームワークのためのシステム及びその方法
JPH10512068A (ja) 構成ヒストリ管理のためのオブジェクト指向システム
WO2000077632A1 (en) Management of non-mbeam objects in jmx environment
Janssen et al. ILU 2.0 alpha8 Reference Manual
Bakay et al. The UDM framework
Pautet et al. GLADE users guide
Gabrilovich et al. JNI-C++ integration made easy
Thompson et al. Comparisons between corba and dcom: architectures for distributed computing