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_typedk_allに設定されると、すべての型のオブジェクトが返されます。たとえばこれがInterfaceDefであれば、属性、操作、および例外オブジェクトがすべて返されます。limit_typeが特定のインタフェースに設定されると、その型のオブジェクトのみが返されます。たとえば、limit_typedk_Attributeに設定されると、属性オブジェクトのみが返されます。
exclude_inherited
TRUEに設定された場合、継承されたオブジェクト(存在する場合)は返されません。FALSEに設定された場合、包含されているすべてのオブジェクト(継承によって包含されているオブジェクトか、オブジェクト内で定義されているオブジェクトかに関係なく)が返されます。
lookup_name操作は、特定のオブジェクト内またはそのオブジェクトに包含されているオブジェクト内で、名前でオブジェクトを検索するために使用されます。describe_contents操作は、contents操作とdescribe操作を組み合せたものです。contents操作から返される各オブジェクトについて、そのオブジェクトの記述が返されます。つまり、そのオブジェクトのdescribe操作が呼び出され、その結果が返されます。
lookup_name操作は、特定のオブジェクト内またはそのオブジェクトに包含されているオブジェクト内で、名前でオブジェクトを検索するために使用されます。
search_name
検索する名前を指定します。
levels_to_search
ルックアップの対象を操作の呼出し先のオブジェクトに限定するのか、そのオブジェクトに包含されている各オブジェクトも検索するのかを制御します。levels_to_searchを -1に設定すると、現在のオブジェクトと、すべての包含オブジェクトが検索されます。levels_to_searchを1に設定すると、現在のオブジェクトのみが検索されます。0または -1以外の負数としたlevels_to_searchの値の使用は、未定義です。
describe_contents操作は、contents操作とdescribe操作を組み合せたものです。contents操作から返された各オブジェクトについて、そのオブジェクトの記述が返されます。つまり、そのオブジェクトのdescribe操作が呼び出され、その結果が返されます。
max_returned_objs
呼出しで返されるオブジェクト数を、指定された数に制限します。パラメータを -1に設定すると、包含オブジェクトがすべて返されます。