CORBA::Object �ӿ�

������ CORBA::Object �ӿڵij���:

module CORBA {

interface Object {
        InterfaceDef get_interface ();

        boolean is_nil ();
        Object duplicate ();
        void release ();

        boolean is_a (in string logical_type_id);
        boolean non_existant ();
        boolean is_equivalent (in Object other_object);
        unsigned long hash (in unsigned long maximum);
};
};

����ӿ��Ƿdz���Ҫ�ģ���Ϊ���е� CORBA ��׼�����Լ�����Ľӿڶ������ļ̳�����������ζ���ڸ����ӿ��ж�������в������������� CORBA �����϶��ɻ�á�

��Щ��׼�IJ�������Щ�Ǵ���������(identity)��: copy, test, destruction(����)...

is_nil �������������һ�������Ƿ���ڡ����Ϊ������󲻴��ڣ����Ϊ���򲻱�֤�������(�μ����⴦��)������������ CORBA_OBJECT_NIL ���ʱ�����������֤����Ϊ�档

is_equivalent �����������������������Ƿ�ָ��ͬһ������ʵ����Ϊ������ʹ�� hash ������

��������� duplicate �� release ���������DZ��������������õĸ��ƺ�������Щ��������ע����������������ڶ��������Ϲ������������ڶ��������ϣ�����û�е�����ȥ���ƶ���������

�� CORBA �д�������ʱ��������Ҫʹ�� CORBA_Object �����͸�����͵ı��������ж�����Ϣ������Ϊ���ݸ����з����ĵ�һ��������duplicate ������������һ�ݶ������õĸ�����release �������������������������Ϊ CORBA_Object �����Dz�͸����������Щ�����DZ���ģ��㲻֪�����Ľṹ����Ͳ������Լ������������ڲ���ʾ��(ֻ����Ϊ�����ڲ��ṹ�������� ORB ʵ�ֵ�)��

������һ����ʾ��Щ������ι������������룺

CORBA_Object obj;
CORBA_Environment ev;
CORBA_Object obj_copy = CORBA_OBJECT_NIL;

/* ����������Ŀ������һЩ���� */
/* ����, obj ������һ����ʵ�Ķ��� */

if (CORBA_Object_is_nil (obj, &ev))
        printf (stderr, "Error: could not get object reference !!\n");

obj_copy = CORBA_Object_duplicate (obj, ev);

if (CORBA_Object_is_equivalent(obj, obj_copy, &ev))
        printf (stderr, "Cool: the copy succeeded\n");

CORBA_Object_release (obj_copy, &ev);

����Ϊ��Щ���벻���κ�ע�͡�

����һ������û�н���ķ���: get_interface������������ں���Ĺ��ڽӿڿ���½������ۡ������� ORBit �л�û��ʵ�֣�����ûʲô�ô� :)