目次 前 次 PDF


OMG IDL構文とC++ IDLコンパイラ

OMG IDL構文とC++ IDLコンパイラ
Object Management Group (OMG)インタフェース定義言語(IDL)は、クライアント・オブジェクトから呼び出し、オブジェクトの実装で提供するインタフェースを記述するために使用します。OMG IDLインタフェース定義では、各操作のパラメータを完全に指定し、インタフェースの操作を使用するクライアント・アプリケーションの開発に必要な情報を提供します。
クライアント・アプリケーションは、OMG IDL文からのマッピングが定義されている言語で記述されます。OMG IDL文とクライアント言語の構造体とのマッピングは、クライアント言語で使用可能な機能によって異なります。たとえば、OMG IDLの例外を、例外の概念を持たない言語では構造体にマッピングし、概念を持つ言語では例外にマッピングできます。
OMG IDL文は、C++文と同じ語彙規則に従いますが、分散概念をサポートするために新しいキーワードが導入されています。また、OMG IDL文は、標準のC++プリプロセッサ機能とOMG IDL固有のプラグマを完全にサポートしています。
注意:
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モジュールのみで使用可能です。
これらのデータ型をIDL定義で使用しないでください。
注意:
Oracle Tuxedo CORBAのリリース8.0には、long longunsigned long longwcharおよびwstringデータ型のサポートが追加されました。
OMG IDLコンパイラの拡張機能
IDLコンパイラでは、プラットフォームに固有のプリプロセッサ・マクロを定義します。ユーザー定義のマクロに加えて、使用するプリプロセッサによってあらかじめ定義されているすべてのマクロをOMG IDLファイルで使用できます。また、OMG IDLファイルをコンパイルまたはロードする際に独自のマクロを定義することもできます。
表1-1に、各プラットフォームについてあらかじめ定義されているマクロを示します。
 
C++ IDLコンパイラの制約
表1-2に、Oracle Tuxedo 9.1のC++ IDLコンパイラにおける制約と推奨される対策に関する情報を示します。
 
void op5() context("*");
^
LIBORBCMD_CAT:131: INFO: ‘*’ is a non-standard
context property.
void op5() context("*");
^
LIBORBCMD_CAT:131: INFO: ‘*’ is a non-standard
context property.
get_
set_
Impl_
_ptr
_slice
charまたはboolean型のIDL変数を定義した場合
C++コンパイラは、operator <<が不明確であり、char型のoperator>>がないことを示すエラーを報告します。これらのエラーは、typedefのレベルが複数になっているために発生します。つまり、X::aという中間の型定義があるため、C++コンパイラは、型X::bCORBA::Booleanを関連付けることができません。
charまたはboolean型を定義する場合は、単一の間接レベルを使用します。上記のIDLの例では、属性「X::Z」は、ユーザー型「X::b」ではなく、標準型「boolean」またはユーザー型「X::a」を使用して定義されます。
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved