10.4.6 Repositoryインタフェース
Repository(下記参照)は、インタフェース・リポジトリへのグローバル・アクセスを提供するインタフェースです。Repositoryオブジェクトには、定数、typedef、例外、インタフェース、値型、値ボックス、ネイティブ型、およびモジュールを含めることができます。これはContainerから継承されるので、nameとidのどちらによっても、任意の定義のルックアップに使用できます(グローバルに定義されているか、モジュールまたはインタフェース内で定義されているかは問いません)。
Repositoryは、Containerからのみ派生し、Containedからは派生しないので、RepositoryIdが関連付けられることはありません。これはデフォルトでは、Repositoryオブジェクトに直接包含されているModuleDef、InterfaceDef、ValueDef、ValueBoxDef、TypedefDef、ExceptionDef、およびConstantDefの記述構造体におけるdefined_inフィールドに値を割り当てる目的で、RepositoryId “" (空の文字列)を備えていると見なされます。
module CORBA {
interface Repository : Container {
Contained lookup_id (in RepositoryId search_id);
TypeCode get_canonical_typecode(in TypeCode tc);
PrimitiveDef get_primitive (in PrimitiveKind kind);
};
};lookup_id操作は、RepositoryIdを指定して、Repository内のオブジェクトをルックアップする際に使用します。Repositoryにsearch_idの定義が含まれない場合、nilオブジェクト参照が返されます。
get_canonical_typecode操作は、インタフェース・リポジトリ内のTypeCodeを調べ、すべてのリポジトリのID、名前、およびmember_namesが含まれる同等なTypeCodeを返します。配列およびシーケンスのTypeCodeや以前のORBからのTypeCodeの場合など、最上位のTypeCodeがRepositoryIdを含まない場合、またはターゲット・リポジトリ内に見つからないRepositoryIdを含む場合、元のTypeCodeの各メンバーTypeCodeに対してget_canonical_typecodeを再帰的に呼び出すことによって、新規のTypeCodeが構築されます。
get_primitive操作は、指定したkind属性を備えたPrimitiveDefへのリファレンスを返します。PrimitiveDefsはすべて不変のものであり、Repositoryによって所有されます。
親トピック: インタフェース・リポジトリのインタフェース