Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


17.3.10 TypeCodeクラスを使用して引数または属性の型を表す

このクラスは,IRとIDLコンパイラが引数または属性の型を表すために使用します。Requestオブジェクトの中では,引数の型を指定する場合に,AnyクラスとともにTypeCodeオブジェクトも使用します。

C++の場合,TypeCodeオブジェクトは,kindとパラメタリストプロパティを持っています。コードサンプル17-16にTypeCodeクラスの例(C++)を示します。

Javaの場合,TypeCodeオブジェクトは,kindとパラメタリストプロパティを持っており,TCKindクラスで定義した値のどれかで表されます。コードサンプル17-17にTypeCodeクラスの例(Java)を示します。

Javaの場合,このクラスにはコンストラクタはありません。ORB.get_primitive_tcメソッドか,またはORB.create_*_tcメソッドの一つを使用して,TypeCodeオブジェクトを作成してください。詳細については,マニュアル「Borland Enterprise Server VisiBroker プログラマーズリファレンス」の「ORB」の記述を参照してください。

表17-2に,TypeCodeオブジェクトの種類とパラメタを示します。

表17‒2 TypeCodeの種類とパラメタ

種類

パラメタリスト

tk_abstract_interface

repository_id,interface_name

tk_alias

repository_id,alias_name,TypeCode

tk_any

なし

tk_array

length,TypeCode

tk_boolean

なし

tk_char

なし

tk_double

なし

tk_enum

repository_id,enum-name,enum-id1,enum-id2,…enum-idn

tk_except

repository_id,exception_name,StructMembers

tk_fixed

digits,scale

tk_float

なし

tk_long

なし

tk_longdouble

なし

tk_longlong

なし

tk_native

id,name

tk_null

なし

tk_objref

repository_id,interface_id

tk_octet

なし

tk_Principal

なし

tk_sequence

TypeCode,maxlen

tk_short

なし

tk_string

maxlen-integer

tk_struct

repository_id,struct-name,{member1,TypeCode1},{membern,TypeCoden}

tk_TypeCode

なし

tk_ulong

なし

tk_ulonglong

なし

tk_union

repository_id,union-name,switch TypeCode,{label-value1,member-name1,TypeCode1},{label-valuen,member-namen,TypeCoden}

tk_ushort

なし

tk_value

repository_id,value_name,boxType

tk_value_box

repository_id,value_name,typeModifier,concreteBase,members

tk_void

なし

tk_wchar

なし

tk_wstring

なし

コードサンプル17-16 TypeCodeクラス(C++)
class _VISEXPORT CORBA_TypeCode {
   public:
      . . .
      // For all CORBA_TypeCode kinds
      CORBA::Boolean equal(CORBA_TypeCode_ptr tc) const;
      CORBA::Boolean equivalent(CORBA_TypeCode_ptr tc) const;
      CORBA_TypeCode_ptr get_compact_typecode() const;
      CORBA::TCKind kind() const // . . .
      // For tk_objref, tk_struct, tk_union, 
            tk_enum, tk_alias and tk_except
      virtual const char* id() const; // raises(BadKind);
      virtual const char *name() const; // raises(BadKind);
      // For tk_struct, tk_union, tk_enum and tk_except
      virtual CORBA::ULong member_count() const; 
            // raises((BadKind));
      virtual const char *member_name(
            CORBA::ULong index) const;
            // raises((BadKind, Bounds));
      // For tk_struct, tk_union and tk_except
      virtual CORBA_TypeCode_ptr member_type(
            CORBA::ULong index) const;
            // raises((BadKind, Bounds));
      // For tk_union
      virtual CORBA::Any_ptr member_label(
            CORBA::ULong index) const;
            // raises((BadKind, Bounds));
      virtual CORBA_TypeCode_ptr discriminator_type() const; 
            // raises((BadKind));
      virtual CORBA::Long default_index() const; 
            // raises((BadKind));
      // For tk_string, tk_sequence and tk_array
      virtual CORBA::ULong length() const; // raises(
            (BadKind));
      // For tk_sequence, tk_array and tk_alias
      virtual CORBA_TypeCode_ptr content_type() const;
            // raises((BadKind));
      // For tk_fixed
      virtual CORBA::UShort fixed_digits() const; 
            // raises (BadKind)
      virtual CORBA::Short fixed_scale() const; 
            // raises (BadKind)
 
       // for tk_value
      virtual CORBA::Visibility member_visibility(
            CORBA::ULong index)const;
            //raises(BadKind, Bounds);
      virtual CORBA::ValueModifier type_modifier() const;
            // raises(BadKind);
      virtual CORBA::TypeCode_ptr concrete_base_type() const;
            // raises(BadKind);
};
コードサンプル17-17 TypeCodeインタフェース(Java)
public abstract class TypeCode extends java.lang.Object
      implements org.omg.CORBA.portable.IDLEntity {
   public abstract boolean equal(org.omg.CORBA.TypeCode tc);
   public boolean equivalent(org.omg.CORBA.TypeCode tc);
   public abstract org.omg.CORBA.TCKind kind();
   public TypeCode get_compact_typecode();
   public abstract java.lang.String id()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract java.lang.String name()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract int member_count()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract java.lang.String member_name(int index)
      throws org.omg.CORBA.TypeCodePackage.BadKind,
         org.omg.CORBA.TypeCodePackage.Bounds;
   public abstract org.omg.CORBA.TypeCode member_type(
                                                  int index)
      throws org.omg.CORBA.TypeCodePackage.BadKind,
         org.omg.CORBA.TypeCodePackage.Bounds;
 
   public abstract org.omg.CORBA.Any member_label(int index)
      throws org.omg.CORBA.TypeCodePackage.BadKind,
         org.omg.CORBA.TypeCodePackage.Bounds;
   public abstract org.omg.CORBA.TypeCode 
                                     discriminator_type()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract int default_index()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract int length()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public abstract org.omg.CORBA.TypeCode content_type()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public short fixed_digits()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public short fixed_scale()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public short member_visibility(int index)
      throws org.omg.CORBA.TypeCodePackage.BadKind,
         org.omg.CORBA.Bounds;
   public short type_modifier()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
   public TypeCode concrete_base_type()
      throws org.omg.CORBA.TypeCodePackage.BadKind;
}