16.4.2 IRに格納できるオブジェクトの型

IRに入れることができるオブジェクトを表16-5に示します。これらのオブジェクトのほとんどはIDL構文要素に対応しています。例えば,StructDefにはIDLのstruct宣言と同じ情報が入っており,InterfaceDefにはIDLのインタフェース宣言と同じ情報が入っています。IDLの基本型(boolean,longなど)宣言と同じ情報が入っているPrimitiveDefに至るまで,すべてこのように対応しています。

表16-5 IRに格納できるオブジェクト

オブジェクトタイプ説明
Repositoryほかのすべてのオブジェクトが入っている最上位モジュールを示します。
ModuleDefIDLモジュール宣言を示します。この中には,ModuleDef,InterfaceDef,ConstantDef,AliasDef,ExceptionDef,およびIDLモジュールで定義できるそのほかのIDL構成体に相当するIRオブジェクトを入れることができます。
InterfaceDefIDLインタフェース宣言を示し,OperationDef,ExceptionDef,AliasDef,ConstantDef,およびAttributeDefが入っています。
AttributeDefIDL属性宣言を示します。
OperationDefIDLオペレーション(メソッド)宣言を示します。インタフェースのオペレーションを定義します。これには,そのオペレーションに必要なパラメタのリスト,リターン値,そのオペレーションによって発生する可能性がある例外のリスト,およびコンテキストのリストが含まれます。
ConstantDefIDL定数宣言を示します。
ExceptionDefIDL例外宣言を示します。
ValueDef定数,型,値メンバ,例外,オペレーション,および属性のリストが入っているvaluetype定義を示します。
ValueBoxDefほかのIDL型の,ボックスに入った単純なvaluetypeを示します。
ValueMemberDefvaluetypeのメンバを示します。
NativeDefネイティブ定義を示します。ユーザは独自のネイティブ定義ができます。
StructDefIDL構造体宣言を示します。
UnionDefIDL union宣言を示します。
EnumDefIDL列挙体宣言を示します。
AliasDefIDL typedef宣言を示します。IR TypedefDefインタフェースは,StructDef,UnionDef,およびそのほかの共通オペレーションを定義する基本インタフェースであることに注意してください。
StringDefIDLバウンデッドstring宣言を示します。
SequenceDefIDL sequence宣言を示します。
ArrayDefIDL配列宣言を示します。
PrimitiveDefIDL基本宣言(null,void,long,ushort,ulong,float,double,boolean,char,octet,any,TypeCode,Principal,string,objref,longlong,ulonglong,longdouble,wchar,およびwstring)を示します。