TypeCodeインタフェース |
IDLのデータ型を動的に表現するための擬似オブジェクトインタフェースです。TypeCodeは概念的にはデータ型を表すkindとパラメータリストからなっています。kindは下記に示す列挙型の値のうち、データ型にあわせて、いずれかの値をとります。
// IDL module CORBA { enum TCKind { tk_null, tk_void, tk_short, tk_long, tk_ushort, tk_ulong, tk_float, tk_double, tk_boolean, tk_char, tk_octet, tk_any, tk_TypeCode, tk_Principal, tk_objref, tk_struct, tk_union, tk_enum, tk_string, tk_sequence, tk_array, tk_alias, tk_except, tk_longlong, tk_ulonglong, tk_longdouble, tk_wchar, tk_wstring, tk_fixed, tk_value, tk_value_box, tk_native, tk_abstract_interface }; }; // C++ namespace CORBA { enum TCKind { tk_null, tk_void, tk_short, tk_long, tk_ushort, tk_ulong, tk_float, tk_double, tk_boolean, tk_char, tk_octet, tk_any, tk_TypeCode, tk_Principal, tk_objref, tk_struct, tk_union, tk_enum, tk_string, tk_sequence, tk_array, tk_alias, tk_except, tk_longlong, tk_ulonglong, tk_longdouble, tk_wchar, tk_wstring, tk_fixed, tk_value, tk_value_box, tk_native, tk_abstract_interface }; };
4.4.1.12. CORBA::TypeCodeクラス |
IDLのデータ型を動的に表現するためのクラスです。呼び出し可能なメソッドはデータ型に依存します。また、内部に保持しているパラメータリストもデータ型によって異なります。CORBA::TypeCodeクラスは、Anyやaliasといった、すぐには型の区別ができないものについての型情報を示したり、インタフェースリポジトリへ登録するときのデータ型指定など多くの場面で使われます。
全て
tk_objref, tk_struct, tk_union, tk_enum, tk_alias, tk_except, tk_value, tk_value_box, tk_abstract_interface, tk_native
id | RepositoryIdを獲得する |
tk_objref, tk_struct, tk_union, tk_enum, tk_alias, tk_except, tk_value, tk_value_box, tk_abstract_interface, tk_native
name | 名前を獲得する |
tk_struct, tk_union, tk_enum, tk_except, tk_value
member_count | メンバの数を獲得する |
member_name | 特定のメンバの名前を獲得する |
tk_struct, tk_union, tk_except, tk_value
mamber_type | 特定のメンバの型を獲得する |
tk_union
member_label | メンバのラベルを獲得する |
discriminator_type | メンバラベルの型を獲得する |
default_index | デフォルトインデックスを獲得する |
tk_string, tk_sequence, tk_array, tk_wstring
length | 長さを獲得する |
tk_sequence, tk_array, tk_alias, tk_value_box
content_type | 要素もしくはオリジナルの型を獲得する |
tk_fixed
fixed_digits | IDL fixed型の桁数を得る |
fixed_scale | IDL fixed型の少数点の位置を得る |
tk_value
member_visibility | メンバのVisibility属性を得る |
type_modifier | valuetypeの修飾子を得る |
concrete_base_type | 基底valuetypeの型を得る |
パラメータの取得
param_count | パラメータリストの長さを獲得する |
parameter | 特定のパラメータを獲得する |
CORBA::TypeCode::equal - 同一のTypeCodeかを判定する
#include <orb.h> CORBA::Boolean CORBA::TypeCode::equal( CORBA::TypeCode_ptr tc, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::equalはthisとtcが同一のTypeCodeかを判定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
同一ならば1を返し、同一でなければ0を返します。
CORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc,
CORBA::ORB::create_interface_tc,
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::ORB::create_wstring_tc,
CORBA::ORB::create_value_box_tc
CORBA::ORB::create_abstract_interface_tc
CORBA::TypeCode::kind - kind属性を獲得する
#include <orb.h> CORBA::TCKind CORBA::TypeCode::kind( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::kindはTypeCodeが保持している型を表すCORBA::TCKind属性を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
CORBA::TCKindは以下のような列挙値です。
namespace CORBA { enum TCKind { tk_null, tk_void, tk_short, tk_long, tk_ushort, tk_ulong, tk_float, tk_double, tk_boolean, tk_char, tk_octet, tk_any, tk_TypeCode, tk_Principal, tk_objref, tk_struct, tk_union, tk_enum, tk_string, tk_sequence, tk_array, tk_alias, tk_except, tk_longlong, tk_ulonglong, tk_longdouble, tk_wchar, tk_wstring, tk_fixed, tk_value, tk_value_box, tk_native, tk_abstract_interface }; };
kind属性をCORBA::TCKindで返します。
CORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc,
CORBA::ORB::create_interface_tc,
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::ORB::create_wstring_tc,
CORBA::ORB::create_value_box_tc
CORBA::ORB::create_abstract_interface_tc
CORBA::TypeCode::id - RepositoryIdを獲得する
#include <orb.h> const char* CORBA::TypeCode::id( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::idはオブジェクトリファレンス, struct, union, enum, alias, valuetype, valuetype(boxed valuetype), abstract interface, nativeもしくは例外のRepositoryIdを返します。
RepositoryIdはリポジトリ内で一意に表される識別子で、一意かつグローバルに識別するのに用いられる識 別子です。識別子は「フォーマット名:フォーマットの文字列」という形式の文字列で構成され、 次の3つのフォーマットが規定されています。
OMG IDLフォーマット(IDL:スコープ名:メジャーバージョン番号.マイナーバージョン番 号)
DCE UUIDフォーマット(DCE:DCE UUID:マイナーバージョン番号)
ローカル・フォーマット(LOCAL:任意の文字列)
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
オブジェクトリファレンス, struct, union, enum, alias, valuetype, valuetype(boxed valuetype), abstrcat interface, native
もしくは例外のRepositoryIdを返します。それ以外の場合は空文字列を返します。
kindがtk_objref, tk_struct, tk_union, tk_enum, tk_alias, tk_except, tk_value, tk_value_box, tk_native, tk_abstract_interface 以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc
CORBA::ORB::create_value_box_tc
CORBA::ORB::create_abstract_interface_tc
CORBA::TypeCode::name - 名前を獲得する
#include <orb.h> const char* CORBA::TypeCode::name( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::nameはオブジェクトリファレンス, struct, union, enum, alias, valuetype, valuetype(boxed valuetype), native, abstract interfaceもしくは例外の名前を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
オブジェクトリファレンス, struct, union, enum, alias, valuetype, valuetype(boxed valuetype), native, abstract interfaceもしくは例外の名前を返します。それ以外の場合は空文字列を返します。
kindがtk_objref, tk_struct, tk_union, tk_enum, tk_alias, tk_except, tk_value, tk_value_box, tk_native, tk_abstract_interface 以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc
CORBA::ORB::create_value_box_tc
CORBA::ORB::create_abstract_interface_tc
CORBA::TypeCode::member_count - メンバの数を獲得する
#include <orb.h> CORBA::ULong CORBA::TypeCode::member_count( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::member_countはstruct, union, enum, valuetypeもしくは例外のTypeCodeが保持しているメンバの数を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
メンバの数を返します。
kindがtk_struct, tk_union, tk_enum, tk_valuetype, tk_except以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc
CORBA::TypeCode::member_name - 特定のメンバの名前を獲得する
#include <orb.h> const char* CORBA::TypeCode::member_name( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::member_nameはstruct, union, enum, valuetypeもしくは例外のTypeCodeが保持しているindex番目のメンバの名前を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
struct, union, enum, valuetypeもしくは例外のTypeCodeが保持しているindex番目のメンバの名前を返します。それ以外の場合は空文字列を返します。
kindがtk_struct, tk_union, tk_enum, tk_valuetype, tk_except以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
また、indexがメンバの数-1を越えている場合はCORBA::TypeCode::Boundsユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc
CORBA::TypeCode::mamber_type - 特定のメンバの型を獲得する
#include <orb.h> CORBA::TypeCode_ptr CORBA::TypeCode::mamber_type( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::member_typeはstruct, union, valuetypeもしくは例外のTypeCodeが保持しているindex番目のメンバの型を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
特定のメンバの型をCORBA::TypeCode_ptr型で返します。
kindがtk_struct, tk_union, tk_except, tk_valuetype以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
また、indexがメンバの数-1を越えている場合はCORBA::TypeCode::Boundsユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc
CORBA::TypeCode::member_label - メンバのラベルを獲得する
#include <orb.h> CORBA::Any* CORBA::TypeCode::member_label( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::member_lavelはunionのTypeCodeが保持しているindex番目のメンバのラベルをCORBA::Any*型で返します。デフォルトのメンバはoctetで0の値を指定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
メンバのラベルをCORBA::Any*型で返します。
kindがtk_union以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
また、indexがメンバの数-1を越えている場合はCORBA::TypeCode::Boundsユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::discriminator_type - メンバラベルの型を獲得する
#include <orb.h> CORBA::TypeCode_ptr CORBA::TypeCode::discriminator_type( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::discriminator_typeはメンバラベルの型を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
メンバラベルの型をCORBA::TypeCode_ptr型で返します。
kindがtk_union以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::default_index - デフォルトインデックスを獲得する
#include <orb.h> CORBA::Long CORBA::TypeCode::default_index( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::default_indexはデフォルトメンバのインデックスを返します。デフォルトのメンバがないときは-1を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
デフォルトメンバのインデックスを返します。
kindがtk_union以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::length - 長さを獲得する
#include <orb.h> CORBA::ULong CORBA::TypeCode::length( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::lengthはstringもしくはwstringの長さ、または、sequenceもしくはarrayの要素の数を返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
stringもしくはwstringの長さ、または、sequenceもしくはarrayの要素の数を返します。
kindがtk_string, tk_sequence, tk_array, tk_wstring以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::TypeCode::content_type - 要素もしくはオリジナルの型を獲得する
#include <orb.h> CORBA::TypeCode_ptr CORBA::TypeCode::content_type( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::content_typeはsequence, arrayの要素の型, boxed valuetypeの保持する値の型またはaliasのオリジナルの型を表すTypeCodeを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
sequence, arrayの要素の型またはaliasのオリジナルの型をCORBA::TypeCode型で返します。
kindがtk_sequence, tk_array, tk_alias, tk_value_box以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::TypeCode::fixed_digits - IDL fixed型の桁数を得る
#include <orb.h> CORBA::UShort CORBA::TypeCode::fixed_digits( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::fixed_digitsはIDL fixed型で表される値が10進数で何桁かを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
IDL fixed型で表される値が10進数で何桁かを返します。
kindがtk_fixed以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::fixed_scale - IDL fixed型の少数点の位置を得る
#include <orb.h> CORBA::Short CORBA::TypeCode::fixed_scale( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::fixed_scaleはIDL fixed型で表される値のうち、小数点以下が10進数で何桁かを返します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
IDL fixed型で表される値のうち、小数点以下が10進数で何桁かを返します。
kindがtk_fixed以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::member_visibility - メンバのVisibility属性を得る
#include <orb.h> CORBA::Short CORBA::TypeCode::member_visibility( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::member_visibilityはindex番目のメンバのVisibility属性を返します。
Visibility属性には以下の種類があります。
CORBA::PRIVATE_MEMBER | プライベートメンバ |
CORBA::PUBLIC_MEMBER | パブリックメンバ |
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
メンバのVisibility属性を返します
kindがtk_value以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。>
また、indexがメンバの数-1を越えている場合はCORBA::TypeCode::Boundsユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::type_modifier - valuetypeの修飾子を得る
#include <orb.h> CORBA::Short CORBA::TypeCode::type_modifier( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::type_modifierはvaluetypeの修飾子を返します。
valuetypeの修飾子には以下の種類があります。
CORBA::VM_NONE | 指定なし |
CORBA::VM_CUSTOM | custom指定あり |
CORBA::VM_ABSTRACT | abstract指定あり |
CORBA::VM_TRUNCATABLE | truncatable指定あり |
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
valuetypeの修飾子を返します
kindがtk_value以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。>
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::concrete_base_type - 基底valuetypeの型を得る
#include <orb.h> CORBA::TypeCode_ptr CORBA::TypeCode::concrete_base_type( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::concrete_base_typeは基底valuetypeの型を表すTypeCodeを返します。
基底valuetypeがない場合は、nilのTypeCodeが返ります。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
基底valuetypeの型を表すTypeCodeを返します。
kindがtk_value以外のTypeCodeに対して呼び出された場合はCORBA::TypeCode::BadKindユーザ例外がthrowされます。>
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::TypeCode::param_count - パラメータリストの長さを獲得する
#include <orb.h> CORBA::ULong CORBA::TypeCode::param_count( CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::param_countはTypeCodeが保持しているパラメータリストの長さを返します。パラメータリストの内容はTypeCode各型によって異なります。kind属性とパラメータリストの関係は以下のとおりです。
tk_null | なし | |
tk_void | なし | |
tk_short | なし | |
tk_long | なし | |
tk_ushort | なし | |
tk_ulong | なし | |
tk_float | なし | |
tk_double | なし | |
tk_boolean | なし | |
tk_char | なし | |
tk_octet | なし | |
tk_any | なし | |
tk_TypeCode | なし | |
tk_Principal | なし | |
tk_objref | インタフェースリポジトリID, インタフェース名 | |
tk_struct | 構造体名, 各構造体のメンバの名前, 各構造体メンバのTypeCode | |
tk_union | 共用体名, 識別子のTypeCode, 各共用体メンバのラベル, 各共用体メンバの名前, 各共用体メンバのTypeCode | |
tk_enum | 列挙型名, 各列挙値の名前 | |
tk_string | 最大の長さ | |
tk_sequence | 要素のTypeCode, 最大の長さ | |
tk_array | 要素のTypeCode, 配列の大きさ | |
tk_alias | 別名, オリジナル型のTypeCode | |
tk_except | 例外名, 各例外メンバの名前, 各例外メンバのTypeCode | |
tk_longlong | なし | |
tk_ulonglong | なし | |
tk_longdouble | なし | |
tk_wchar | なし | |
tk_wstring | 最大の長さ | |
tk_fixed | 全体の桁数、小数点以下の桁数 | |
tk_value | リポジトリID, valuetype名, valuetypeの修飾子, 基底valuetypeのTypeCode, メンバのシーケンス | |
tk_value_box | リポジトリID, valuetype名, 保持する値の型のTypeCode | |
tk_native | リポジトリID, 名前 | |
tk_abstract_interface | リポジトリID, インタフェース名 |
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
パラメータリストの長さを返します。
CORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc,
CORBA::ORB::create_interface_tc,
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::ORB::create_wstring_tc,
CORBA::ORB::create_value_box_tc
CORBA::ORB::create_abstract_interface_tc
CORBA::TypeCode::parameter - 特定のパラメータを獲得する
#include <orb.h> CORBA::Any* CORBA::TypeCode::parameter( CORBA::ULong index, CORBA::Environment& env = Ob_default_environment() ) const;
CORBA::TypeCode::parameterはパラメータリストのindex番目のパラメータの値をCORBA::Any*型で返します。パラメータリストの内容はTypeCode各型によって異なります。kind属性とパラメータリストの関係は以下のとおりです。
tk_null | なし | |
tk_void | なし | |
tk_short | なし | |
tk_long | なし | |
tk_ushort | なし | |
tk_ulong | なし | |
tk_float | なし | |
tk_double | なし | |
tk_boolean | なし | |
tk_char | なし | |
tk_octet | なし | |
tk_any | なし | |
tk_TypeCode | なし | |
tk_Principal | なし | |
tk_objref | インタフェースリポジトリID, インタフェース名 | |
tk_struct | 構造体名, 各構造体のメンバの名前, 各構造体メンバのTypeCode | |
tk_union | 共用体名, 識別子のTypeCode, 各共用体メンバのラベル, 各共用体メンバの名前, 各共用体メンバのTypeCode | |
tk_enum | 列挙型名, 各列挙値の名前 | |
tk_string | 最大の長さ | |
tk_sequence | 要素のTypeCode, 最大の長さ | |
tk_array | 要素のTypeCode, 配列の大きさ | |
tk_alias | 別名, オリジナル型のTypeCode | |
tk_except | 例外名, 各例外メンバの名前, 各例外メンバのTypeCode | |
tk_longlong | なし | |
tk_ulonglong | なし | |
tk_longdouble | なし | |
tk_wchar | なし | |
tk_wstring | 最大の長さ | |
tk_fixed | 全体の桁数、小数点以下の桁数 | |
tk_value | リポジトリID, valuetype名, valuetypeの修飾子, 基底valuetypeのTypeCode, メンバのシーケンス | |
tk_value_box | リポジトリID, valuetype名, 保持する値の型のTypeCode | |
tk_native | リポジトリID, 名前 | |
tk_abstract_interface | リポジトリID, インタフェース名 |
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
パラメータリストのindex番目のパラメータの値をCORBA::Any*型で返します。
indexがパラメータリストの数-1を越えている場合はCORBA::TypeCode::Boundsユーザ例外がthrowされます。
それ以外の場合はCORBAシステム例外がthrowされます。
CORBA::ORB::create_exception_tc,
CORBA::ORB::create_interface_tc,
CORBA::ORB::create_sequence_tc,
CORBA::ORB::create_recursive_sequence_tc,
CORBA::ORB::create_wstring_tc,