Object Management Group (OMG)インタフェース定義言語(IDL)は、クライアント・オブジェクトから呼び出し、オブジェクトの実装で提供するインタフェースを記述します。OMG IDLインタフェース定義では、各オペレーションのパラメータをすべて指定して、インタフェースのオペレーションを使用するクライアント・アプリケーションの開発に必要な情報を提供します。
クライアント・アプリケーションは、OMG IDL文のマッピング先として定義されている言語で作成されます。OMG IDL文とクライアント言語の構造体とのマッピング方法は、クライアント言語で利用可能な機能によって異なります。たとえば、OMG IDLの例外を、例外の概念を持たない言語の構造体、または概念を持つ言語の例外にマップすることができます。
OMG IDL文は、C++文と同じ文法規則に従います。ただし、分散概念をサポートするためのnewキーワードが導入されています。また、OMG IDL文は、標準的なC++プリプロセッサ機能およびOMG IDL固有のプラグマをフル・サポートしています。
注意: | pragma version文を使用する場合は、対応するインタフェース定義の後に配置する必要があります。次の例で正しい使い方を示します。 |
module A
{
interface B
{
#pragma version B "3.5"
void op1();
};
};
OMG IDLの文法は、オペレーション呼出しメカニズムをサポートするための構造体が追加されたANSI C++のサブセットです。OMG IDLは宣言型言語であり、定数、型、およびオペレーションの宣言に関してC++の構文をサポートしています。ただし、アルゴリズミックな構造体または変数は含まれません。
OMG IDLの文法の詳細は、「Common Object Request Broker: Architecture and Specification Revision 2.4」の第3章「OMG IDL Syntax and Semantics」を参照してください。
OMG IDLの文法はサポートされていますが、次の型宣言および関連リテラルを除きます。
注意: | CORBA 2.4ではnative 型宣言が、ユーザー・インタフェース用ではなく、オブジェクト・アダプタ用として記述されているので、この型は、コールバックをサポートしているクライアントのPortableServer モジュール、つまり共同クライアント/サーバーでのみ利用可能です。 |
注意: | Oracle Tuxedo CORBAのリリース8.0では、long long 、unsigned long long 、wchar 、およびwstring データ型のサポートが追加されました。 |
IDLコンパイラでは、プラットフォーム固有のプリプロセッサ・マクロを定義します。すべてのマクロは使用するプリプロセッサによって定義済みで、ユーザー定義のマクロに加えて、OMG IDLファイルで使用できます。また、OMG IDLファイルをコンパイルまたはロードする場合にも独自のマクロを定義できます。
表1-1では、各プラットフォーム用の定義済みマクロについて説明します。
表1-2は、Oracle Tuxedo 9.1のC++ IDLコンパイラの制約について説明し、推奨される対策を示しています。