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
};
interface TypeCode{
exception Bounds{};
exception BadKind{};
boolean equal( in TypeCode tc );
TCKind kind();
RepositoryId id()
raises( BadKind );
Identifier name()
raises( BadKind );
unsigned long member_count()
raises( BadKind, Bounds );
Identifier member_name(
in unsigned long index )
raises( BadKind, Bounds );
TypeCode member_type(
in unsigned long index )
raises( BadKind, Bounds );
any member_label(
in unsigned long index )
raises( BadKind, Bounds );
TypeCode discriminator_type()
raises( BadKind );
long default_index()
raises( BadKind );
unsigned long length()
raises( BadKind );
TypeCode content_type()
raises( BadKind );
long param_count();
any parameter( in long index )
raises( Bounds );
};
};TypeCodeインタフェースの機能説明を以下に示します。
TypeCodeのメソッド | 機能説明 |
|---|---|
equal | 指定されたTypeCodeが等しいかを比較します。 |
kind | TypeCodeの指すデータ型の数値を返します。 |
id | TypeCodeの指すデータ型のリポジトリIDを返します。 |
name | TypeCodeの指すデータ型の名前を返します。 |
member_count | TypeCodeの指すデータ型に含まれるメンバの数を返します。 |
member_name | 指定したメンバの名前を返します。 |
member_type | 指定したメンバのTypeCodeを返します。 |
member_label | 指定したメンバのラベルを返します。 |
discriminator_type | 弁別情報定義のTypeCodeを返します。 |
default_index | defaultメンバのインデックスを返します。 |
length | TypeCodeオブジェクトの長さ(要素数)を返します。 |
content_type | メンバのTypeCodeを返します。 |
各データ型で使用できるTypeCodeインタフェースを以下に示します。
| string | enum | sequence | struct | union | array | alias | ObjectRef | exception |
|---|---|---|---|---|---|---|---|---|---|
id |
| ○ |
| ○ | ○ |
| ○ | ○ | ○ |
name | ○ | ○ |
| ○ | ○ |
| ○ | ○ | ○ |
member_count |
| ○ |
| ○ | ○ |
|
|
| ○ |
member_name |
| ○ |
| ○ | ○ |
|
|
| ○ |
member_type |
| ○ |
| ○ | ○ |
|
|
| ○ |
member_label |
|
|
| × | ○ |
|
|
|
|
discriminator_type |
|
|
| × | ○ |
|
|
|
|
default_index |
|
|
|
| ○ |
|
|
|
|
length | ○ |
| ○ |
|
| ○ |
|
|
|
content_type |
|
| ○ |
|
| ○ |
|
|
|