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-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; }