org.omg.DynamicAny

接口
所有超级接口:
DynAnyOperations
所有已知子接口:
DynUnion
所有已知实现类:
_DynUnionStub

public interface DynUnionOperations
     
extends DynAnyOperations

DynUnion 对象支持对 IDL 联合数据 (union) 的操作。联合数据只能有两个有效的当前位置:

  • 0,表示鉴别符 (discriminator)
  • 1,表示活动成员
联合数据的 component_count 值依赖于当前鉴别符:其鉴别符指示一个指定成员的联合数据的 component_count 值为 2,其他情况为 1。


方法摘要
 TCKind discriminator_kind()
          返回鉴别符 TypeCode 的 TCKind 值。
 DynAny get_discriminator()
          返回当前鉴别符值。
 boolean has_no_active_member()
          如果联合数据没有活动成员,即这些联合数据值仅由其鉴别符组成(因为鉴别符的值不作为显式 case 标签列出),则返回 true。
 TCKind member_kind()
          返回当前活动成员 TypeCode 的 TCKind 值。
 String member_name()
          返回当前活动成员的名称。
 DynAny member()
          返回当前活动成员。
 void set_discriminator(DynAny d)
          将 DynUnion 的鉴别符值设置为指定值。
 void set_to_default_member()
          将鉴别符设置为联合数据的默认 case 的值。
 void set_to_no_active_member()
          将鉴别符设置为与任何联合数据 case 标签都不相应的值。
 
从接口 org.omg.DynamicAny.DynAnyOperations 继承的方法
assign, component_count, copy, current_component, destroy, equal, from_any, get_any, get_boolean, get_char, get_double, get_dyn_any, get_float, get_long, get_longlong, get_octet, get_reference, get_short, get_string, get_typecode, get_ulong, get_ulonglong, get_ushort, get_val, get_wchar, get_wstring, insert_any, insert_boolean, insert_char, insert_double, insert_dyn_any, insert_float, insert_long, insert_longlong, insert_octet, insert_reference, insert_short, insert_string, insert_typecode, insert_ulong, insert_ulonglong, insert_ushort, insert_val, insert_wchar, insert_wstring, next, rewind, seek, to_any, type
 

方法详细信息

get_discriminator

DynAny get_discriminator()
返回当前鉴别符值。


set_discriminator

void set_discriminator(DynAny d)
                       throws TypeMismatch
将 DynUnion 的鉴别符值设置为指定值。将鉴别符设置为与当前活动联合数据成员一致的值对当前活动成员没有影响。将鉴别符设置为与当前活动成员不一致的值将停用该成员,并将与新鉴别符值一致的成员(如果存在与该值对应的成员)初始化为其默认值,从而激活该成员。如果鉴别符值指示一个不存在的联合数据成员,则设置联合数据鉴别符会将当前位置设置为 0(在此情况下,has_no_active_member 返回 true)。否则,如果鉴别符值指示指定的联合数据成员,则将当前位置设置为 1(在此情况下,has_no_active_member 返回 false,component_count 返回 2)。

抛出:
TypeMismatch - 如果参数的 TypeCode 不等于联合数据鉴别符的 TypeCode

set_to_default_member

void set_to_default_member()
                           throws TypeMismatch
将鉴别符设置为联合数据的默认 case 的值。它将当前位置设置为 0,并导致 component_count 返回 2。

抛出:
TypeMismatch - 如果联合数据没有显式的默认 case

set_to_no_active_member

void set_to_no_active_member()
                             throws TypeMismatch
将鉴别符设置为与任何联合数据 case 标签都不相应的值。它将当前位置设置为 0,并导致 component_count 返回 1。

抛出:
TypeMismatch - 如果联合数据具有显式的默认 case,或者其显式 case 标签使用了整个鉴别符值范围

has_no_active_member

boolean has_no_active_member()
如果联合数据没有活动成员,即这些联合数据值仅由其鉴别符组成(因为鉴别符的值不作为显式 case 标签列出),则返回 true。对具有默认 case 的联合数据调用此操作将返回 false。对显式 case 标签使用了整个鉴别符值范围的联合数据调用此操作将返回 false。


discriminator_kind

TCKind discriminator_kind()
返回鉴别符 TypeCode 的 TCKind 值。


member_kind

TCKind member_kind()
                   throws InvalidValue
返回当前活动成员 TypeCode 的 TCKind 值。

抛出:
InvalidValue - 如果联合数据不具有当前活动成员

member

DynAny member()
              throws InvalidValue
返回当前活动成员。注意,当且仅当当前活动成员没有更改时返回的引用才仍然有效。使用超出当前活动成员生存时间的返回引用将引发 OBJECT_NOT_EXIST。

抛出:
InvalidValue - 如果联合数据没有活动成员

member_name

String member_name()
                   throws InvalidValue
返回当前活动成员的名称。如果联合数据 TypeCode 不包含当前活动成员的成员名称,则操作将返回空字符串。

抛出:
InvalidValue - 如果联合数据没有活动成员