10.4.1 サポートしている型定義

いくつかの型が、インタフェース・リポジトリのインタフェース定義全体に使用されています。

module CORBA {
   typedef string                     Identifier;
   typedef string                     ScopedName;
   typedef string                     RepositoryId;

   enum DefinitionKind {
     dk_none, dk_all,
     dk_Attribute, dk_Constant, dk_Exception, dk_Interface,
     dk_Module, dk_Operation, dk_Typedef,
     dk_Alias, dk_Struct, dk_Union, dk_Enum,
     dk_Primitive, dk_String, dk_Sequence, dk_Array,
     dk_Repository,
     dk_Wstring, dk_Fixed,
     dk_Value, dk_ValueBox, dk_ValueMember,
     dk_Native
     };
};

Identifiersは、モジュール、インタフェース、値型、値メンバー、値ボックス、定数、typedef、例外、属性、操作およびネイティブ型を識別する、単純な名前です。ちょうどOMG IDLの識別子に対応します。Identifierは、インタフェース・リポジトリ全体では必ずしも一意ではありません。特定のRepository、ModuleDef、InterfaceDef、ValueDef、またはOperationDef内でのみ、一意です。

ScopedNameは、ダブル・コロン(::)で区切られた、1つまたは複数の識別子で構成される名前です。OMG IDLのスコープ指定された名前に対応します。絶対ScopedNameとは、先頭にダブル・コロン(::)があり、Repository内で定義を明確に識別するものを言います。Repository内の絶対ScopedNameは、OMG IDLファイルのグローバル名に対応します。相対ScopedNameは、先頭にダブル・コロン(::)がなく、何らかのコンテキストを基準として解決される必要があります。

RepositoryIdは、モジュール、インタフェース、値型、値メンバー、値ボックス、ネイティブ型、定数、typedef、例外、属性、または操作を一意かつグローバルに識別するために使用される識別子です。RepositoryIdは文字列として定義されるため、言語バインディングの文字列操作ルーチンで操作(たとえばコピーや比較)が可能です。

DefinitionKindは、インタフェース・リポジトリ・オブジェクトの型を識別します。