14.8 Objectメンバー関数

この項の規則は、OMG IDLインタフェース階層の基底インタフェースであるOMG IDLインタフェース・オブジェクトに適用されます。インタフェースObjectでは、擬似オブジェクトではなく通常のCORBAオブジェクトを定義します。ただし、ここではほかの擬似オブジェクトも参照するため、これについても触れています。

ほかの規則に加えて、インタフェースObjectの操作名はすべて、マッピングされるC++クラスの先頭にアンダースコアが付きます。また、create_requestのマッピングは3つに分類されます。これらは、「Requestメンバー関数」で説明した方式にそれぞれ対応しています。is_nil関数およびrelease関数は、「Objectメンバー関数」に記載されているように、CORBAネームスペースで提供されます。

Oracle Tuxedoソフトウェアでは、CORBA Revision 2.2で定義されているオブジェクト参照操作を使用しています。これらの操作が依存するのは、型Objectのみです。したがって、操作はCORBAネームスペースの中で通常の関数として記述できます。

ノート:

Oracle Tuxedoソフトウェアでは、BOAではなくPOAを使用しているため、非推奨のget_implementation()メンバー関数は認識されません。このメンバー関数を参照しようとすると、コンパイル・エラーが発生します。

これらのメンバー関数のC++へのマッピングは次のとおりです:

class CORBA
{
class Object
{
public:
CORBA::Boolean _is_a(const char *)
CORBA::Boolean _is_equivalent();
CORBA::Boolean _nonexistent(Object_ptr);

static Object_ptr _duplicate(Object_ptr obj);
static Object_ptr _nil();
InterfaceDef_ptr _get_interface();
CORBA::ULong _hass(CORBA::ULong);
void _create_request(
Context_ptr ctx,
const char *operation,
NVList_ptr arg_list,
NamedValue_ptr result,
Request_out request,
Flags req_flags
);
Status _create_request(
Context_ptr ctx,
const char * operation,
NVList_ptr arg_list,
NamedValue_ptr result,
ExceptionList_ptr Except_list,
ContextList_ptr Context_list,
Request_out request,
Flags req_flags
);
Request_ptr _request(const char* operation);
}; //Object
}; // CORBA

次の項では、Objectの各メンバー関数について説明します。