13.1.16 Typedef

OMG IDLのtypedefは、C++のtypedefにマッピングされます。OMG IDLのデータ型によっては、追加のtypedefおよびメンバー関数が定義される場合もあります。各データ型に対して生成されるコードは次のとおりです。

  • 基本データ型(short、long、unsigned short、unsigned long、float、double、char、boolean、およびoctet)

    基本データ型は単純なtypedefにマッピングされます。例:

    // OMG IDL
    typedef long ID;
    
    // C++
    typedef CORBA::Long ID;
  • string

    文字列のtypedefは単純なtypedefにマッピングされます。例:

    // OMG IDL
    typedef string IDStr;
    
    // C++
    typedef char * IDStr;
  • オブジェクト、インタフェース、TypeCode

    オブジェクト、インタフェース、およびTypeCode型は、4つのtypedefにマッピングされます。例:

    // OMG IDL
    typedef Item Intf;
    
    // C++
    typedef Item Intf;
    typedef Item_ptr Intf_ptr;
    typedef Item_var Intf_var;
    typedef Item_ptr &Intf _out;
  • enum、構造体、ユニオン、シーケンス

    UDTは3つのtypedefにマッピングされます。例:

    // OMG IDL
    typedef LogList ListRetType;
    
    // C++
    typedef LogList ListRetType;
    typedef LogList_var ListRetType_var;
    typedef LogList_out &ListRetType_out;
  • array

    配列は、メモリーを割り当ておよび解放するために4つのtypedefと静的メンバー関数にマッピングされます。例:

    // OMG IDL
    typedef LogArray ArrayRetType;
    
    // C++
    typedef LogArray ArrayRetType;
    typedef LogArray_var ArrayRetType_var;
    typedef LogArray_forany ArrayRetType_forany;
    typedef LogArray_slice ArrayRetType_slice;
    ArrayRetType_slice * ArrayRetType_alloc();
    void ArrayRetType_free(ArrayRetType_slice *);