10.4.4 Containerインタフェース
基底インタフェースContainerは、インタフェース・リポジトリ内に包含の階層構造を形成するために使用されます。Containerは、Containedインタフェースから派生した任意の数のオブジェクトを包含できます。Repositoryを除くContainerはすべて、Containedからも派生します。
module CORBA {
typedef sequence <Contained> ContainedSeq;
interface Container : IRObject {
Contained lookup (in ScopedName search_name);
ContainedSeq contents (
in DefinitionKind limit_type,
in boolean exclude_inherited
);
ContainedSeq lookup_name (
in Identifier search_name,
in long levels_to_search,
in DefinitionKind limit_type,
in boolean exclude_inherited
);
struct Description {
Contained contained_object;
DefinitionKind kind;
any value;
};
typedef sequence<Description> DescriptionSeq;
DescriptionSeq describe_contents (
in DefinitionKind limit_type,
in boolean exclude_inherited,
in long max_returned_objs
);
};
};lookup操作は、スコープ指定された名前を指定されて、このコンテナと関連する定義を見つけます。名前のスコープ指定には、OMG IDL規則が使用されます。ダブル・コロン(::)が先頭に付く、絶対スコープ指定された名前は、包含Repositoryと関連する定義を見つけます。そのようなオブジェクトが見つからなければ、nilオブジェクト参照が返されます。
contents操作は、オブジェクトに直接包含または継承されるオブジェクトのリストを返します。この操作は、オブジェクトの階層構造内を移動するのに使用されます。クライアントはこの操作を使用し、Repositoryオブジェクトを先頭に、Repositoryに包含されているすべてのオブジェクト、リポジトリ内のモジュールに包含されているすべてのオブジェクト、特定モジュール内のすべてのインタフェースおよび値型などをリストします。
-
limit_type limit_typeがdk_allに設定されると、すべての型のオブジェクトが返されます。たとえばこれがInterfaceDefであれば、属性、操作、および例外オブジェクトがすべて返されます。limit_typeが特定のインタフェースに設定されると、その型のオブジェクトのみが返されます。たとえば、limit_typeがdk_Attributeに設定されると、属性オブジェクトのみが返されます。-
exclude_inherited TRUEに設定された場合、継承されたオブジェクト(存在する場合)は返されません。FALSEに設定された場合、包含されているすべてのオブジェクト(継承によって包含されているオブジェクトか、オブジェクト内で定義されているオブジェクトかに関係なく)が返されます。-
search_name - 検索する名前を指定します。
-
levels_to_search - ルックアップの対象を操作の呼出し先のオブジェクトに限定するのか、そのオブジェクトに包含されている各オブジェクトも検索するのかを制御します。
levels_to_searchを -1に設定すると、現在のオブジェクトと、すべての包含オブジェクトが検索されます。levels_to_searchを1に設定すると、現在のオブジェクトのみが検索されます。0または -1以外の負数としたlevels_to_searchの値の使用は、未定義です。 -
max_returned_objs - 呼出しで返されるオブジェクト数を、指定された数に制限します。パラメータを -1に設定すると、包含オブジェクトがすべて返されます。
親トピック: インタフェース・リポジトリのインタフェース