OpenDDS  Snapshot(2023/04/28-20:55)
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
OpenDDS::XTypes::DynamicDataBase Class Referenceabstract

#include <DynamicDataBase.h>

Inheritance diagram for OpenDDS::XTypes::DynamicDataBase:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::XTypes::DynamicDataBase:
Collaboration graph
[legend]

Public Member Functions

 DynamicDataBase ()
 
 DynamicDataBase (DDS::DynamicType_ptr type)
 
DDS::ReturnCode_t get_descriptor (DDS::MemberDescriptor *&value, MemberId id)
 
DDS::ReturnCode_t set_descriptor (DDS::MemberId id, DDS::MemberDescriptor *value)
 
DDS::MemberId get_member_id_by_name (const char *name)
 
DDS::DynamicType_ptr type ()
 
DDS::Boolean equals (DDS::DynamicData_ptr other)
 
DDS::DynamicData_ptr loan_value (DDS::MemberId id)
 
DDS::ReturnCode_t return_loaned_value (DDS::DynamicData_ptr other)
 
DDS::DynamicData_ptr clone ()
 
DDS::ReturnCode_t get_int64_value (DDS::Int64 &value, DDS::MemberId id)
 
virtual DDS::ReturnCode_t get_int64_value_impl (DDS::Int64 &value, DDS::MemberId id)=0
 
DDS::ReturnCode_t get_uint64_value (DDS::UInt64 &value, DDS::MemberId id)
 
virtual DDS::ReturnCode_t get_uint64_value_impl (DDS::UInt64 &value, DDS::MemberId id)=0
 
virtual DDS::ReturnCode_t get_simple_value (DCPS::Value &value, DDS::MemberId id)
 
- Public Member Functions inherited from DDS::DynamicData
DDS::ReturnCode_t get_descriptor (inout MemberDescriptor value, in MemberId id)
 
DDS::ReturnCode_t set_descriptor (in MemberId id, in MemberDescriptor value)
 
boolean equals (in DynamicData other)
 
MemberId get_member_id_by_name (in ObjectName name)
 
MemberId get_member_id_at_index (in unsigned long index)
 
unsigned long get_item_count ()
 
DDS::ReturnCode_t clear_all_values ()
 
DDS::ReturnCode_t clear_nonkey_values ()
 
DDS::ReturnCode_t clear_value (in MemberId id)
 
DynamicData loan_value (in MemberId id)
 
DDS::ReturnCode_t return_loaned_value (in DynamicData value)
 
DDS::ReturnCode_t get_int32_value (inout long value, in MemberId id)
 
DDS::ReturnCode_t set_int32_value (in MemberId id, in long value)
 
DDS::ReturnCode_t get_uint32_value (inout unsigned long value, in MemberId id)
 
DDS::ReturnCode_t set_uint32_value (in MemberId id, in unsigned long value)
 
DDS::ReturnCode_t get_int8_value (inout int8 value, in MemberId id)
 
DDS::ReturnCode_t set_int8_value (in MemberId id, in int8 value)
 
DDS::ReturnCode_t get_uint8_value (inout uint8 value, in MemberId id)
 
DDS::ReturnCode_t set_uint8_value (in MemberId id, in uint8 value)
 
DDS::ReturnCode_t get_int16_value (inout short value, in MemberId id)
 
DDS::ReturnCode_t set_int16_value (in MemberId id, in short value)
 
DDS::ReturnCode_t get_uint16_value (inout unsigned short value, in MemberId id)
 
DDS::ReturnCode_t set_uint16_value (in MemberId id, in unsigned short value)
 
DDS::ReturnCode_t get_int64_value (inout long long value, in MemberId id)
 
DDS::ReturnCode_t set_int64_value (in MemberId id, in long long value)
 
DDS::ReturnCode_t get_uint64_value (inout unsigned long long value, in MemberId id)
 
DDS::ReturnCode_t set_uint64_value (in MemberId id, in unsigned long long value)
 
DDS::ReturnCode_t get_float32_value (inout float value, in MemberId id)
 
DDS::ReturnCode_t set_float32_value (in MemberId id, in float value)
 
DDS::ReturnCode_t get_float64_value (inout double value, in MemberId id)
 
DDS::ReturnCode_t set_float64_value (in MemberId id, in double value)
 
DDS::ReturnCode_t get_float128_value (inout long double value, in MemberId id)
 
DDS::ReturnCode_t set_float128_value (in MemberId id, in long double value)
 
DDS::ReturnCode_t get_char8_value (inout char value, in MemberId id)
 
DDS::ReturnCode_t set_char8_value (in MemberId id, in char value)
 
DDS::ReturnCode_t get_char16_value (inout wchar value, in MemberId id)
 
DDS::ReturnCode_t set_char16_value (in MemberId id, in wchar value)
 
DDS::ReturnCode_t get_byte_value (inout octet value, in MemberId id)
 
DDS::ReturnCode_t set_byte_value (in MemberId id, in octet value)
 
DDS::ReturnCode_t get_boolean_value (inout boolean value, in MemberId id)
 
DDS::ReturnCode_t set_boolean_value (in MemberId id, in boolean value)
 
DDS::ReturnCode_t get_string_value (inout string value, in MemberId id)
 
DDS::ReturnCode_t set_string_value (in MemberId id, in string value)
 
DDS::ReturnCode_t get_wstring_value (inout wstring value, in MemberId id)
 
DDS::ReturnCode_t set_wstring_value (in MemberId id, in wstring value)
 
DDS::ReturnCode_t get_complex_value (inout DynamicData value, in MemberId id)
 
DDS::ReturnCode_t set_complex_value (in MemberId id, in DynamicData value)
 
DDS::ReturnCode_t get_int32_values (inout Int32Seq value, in MemberId id)
 
DDS::ReturnCode_t set_int32_values (in MemberId id, in Int32Seq value)
 
DDS::ReturnCode_t get_uint32_values (inout UInt32Seq value, in MemberId id)
 
DDS::ReturnCode_t set_uint32_values (in MemberId id, in UInt32Seq value)
 
DDS::ReturnCode_t get_int8_values (inout Int8Seq value, in MemberId id)
 
DDS::ReturnCode_t set_int8_values (in MemberId id, in Int8Seq value)
 
DDS::ReturnCode_t get_uint8_values (inout UInt8Seq value, in MemberId id)
 
DDS::ReturnCode_t set_uint8_values (in MemberId id, in UInt8Seq value)
 
DDS::ReturnCode_t get_int16_values (inout Int16Seq value, in MemberId id)
 
DDS::ReturnCode_t set_int16_values (in MemberId id, in Int16Seq value)
 
DDS::ReturnCode_t get_uint16_values (inout UInt16Seq value, in MemberId id)
 
DDS::ReturnCode_t set_uint16_values (in MemberId id, in UInt16Seq value)
 
DDS::ReturnCode_t get_int64_values (inout Int64Seq value, in MemberId id)
 
DDS::ReturnCode_t set_int64_values (in MemberId id, in Int64Seq value)
 
DDS::ReturnCode_t get_uint64_values (inout UInt64Seq value, in MemberId id)
 
DDS::ReturnCode_t set_uint64_values (in MemberId id, in UInt64Seq value)
 
DDS::ReturnCode_t get_float32_values (inout Float32Seq value, in MemberId id)
 
DDS::ReturnCode_t set_float32_values (in MemberId id, in Float32Seq value)
 
DDS::ReturnCode_t get_float64_values (inout Float64Seq value, in MemberId id)
 
DDS::ReturnCode_t set_float64_values (in MemberId id, in Float64Seq value)
 
DDS::ReturnCode_t get_float128_values (inout Float128Seq value, in MemberId id)
 
DDS::ReturnCode_t set_float128_values (in MemberId id, in Float128Seq value)
 
DDS::ReturnCode_t get_char8_values (inout CharSeq value, in MemberId id)
 
DDS::ReturnCode_t set_char8_values (in MemberId id, in CharSeq value)
 
DDS::ReturnCode_t get_char16_values (inout WcharSeq value, in MemberId id)
 
DDS::ReturnCode_t set_char16_values (in MemberId id, in WcharSeq value)
 
DDS::ReturnCode_t get_byte_values (inout ByteSeq value, in MemberId id)
 
DDS::ReturnCode_t set_byte_values (in MemberId id, in ByteSeq value)
 
DDS::ReturnCode_t get_boolean_values (inout BooleanSeq value, in MemberId id)
 
DDS::ReturnCode_t set_boolean_values (in MemberId id, in BooleanSeq value)
 
DDS::ReturnCode_t get_string_values (inout StringSeq value, in MemberId id)
 
DDS::ReturnCode_t set_string_values (in MemberId id, in StringSeq value)
 
DDS::ReturnCode_t get_wstring_values (inout WstringSeq value, in MemberId id)
 
DDS::ReturnCode_t set_wstring_values (in MemberId id, in WstringSeq value)
 
- Public Member Functions inherited from OpenDDS::DCPS::LocalObjectBase
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
virtual CORBA::ULong _refcount_value () const
 
- Public Member Functions inherited from CORBA::LocalObject
virtual ~LocalObject (void)
 
virtual CORBA::Boolean _non_existent (void)
 
virtual char * _repository_id (void)
 
virtual CORBA::InterfaceDef_ptr _get_interface (void)
 
virtual CORBA::Object_ptr _get_component (void)
 
virtual void _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::Request_ptr &request, CORBA::Flags req_flags)
 
virtual void _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::ExceptionList_ptr exclist, CORBA::ContextList_ptr ctxtlist, CORBA::Request_ptr &request, CORBA::Flags req_flags)
 
virtual CORBA::Request_ptr _request (const char *operation)
 
CORBA::Policy_ptr _get_policy (CORBA::PolicyType type)
 
CORBA::Policy_ptr _get_cached_policy (TAO_Cached_Policy_Type type)
 
CORBA::Object_ptr _set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add)
 
CORBA::PolicyList_get_policy_overrides (const CORBA::PolicyTypeSeq &types)
 
CORBA::Boolean _validate_connection (CORBA::PolicyList_out inconsistent_policies)
 
virtual CORBA::ULong _hash (CORBA::ULong maximum)
 
virtual CORBA::Boolean _is_equivalent (CORBA::Object_ptr other_obj)
 
virtual CORBA::ORB_ptr _get_orb (void)
 
virtual TAO::ObjectKey_key (void)
 
- Public Member Functions inherited from CORBA::Object
virtual ~Object (void)
 
virtual TAO_Abstract_ServantBase_servant (void) const
 
virtual CORBA::Boolean _is_collocated (void) const
 
virtual CORBA::Boolean _is_local (void) const
 
 Object (TAO_Stub *p, CORBA::Boolean collocated=false, TAO_Abstract_ServantBase *servant=0, TAO_ORB_Core *orb_core=0)
 
 Object (IOP::IOR *ior, TAO_ORB_Core *orb_core)
 
virtual TAO_Stub_stubobj (void) const
 
virtual TAO_Stub_stubobj (void)
 
virtual void _proxy_broker (TAO::Object_Proxy_Broker *proxy_broker)
 
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr)
 
CORBA::Boolean is_evaluated (void) const
 
TAO_ORB_Coreorb_core (void) const
 
IOP::IORsteal_ior (void)
 
const IOP::IORior (void) const
 
virtual bool can_convert_to_ior (void) const
 
virtual char * convert_to_ior (bool use_omg_ior_format, const char *ior_prefix) const
 
void _decr_refcount (void)
 
virtual CORBA::Boolean _is_a (const char *logical_type_id)
 
virtual const char * _interface_repository_id (void) const
 
CORBA::Policy_ptr _get_policy (CORBA::PolicyType type)
 
CORBA::Policy_ptr _get_cached_policy (TAO_Cached_Policy_Type type)
 
CORBA::Object_ptr _set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add)
 
CORBA::PolicyList_get_policy_overrides (const CORBA::PolicyTypeSeq &types)
 
CORBA::Boolean _validate_connection (CORBA::PolicyList_out inconsistent_policies)
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Static Public Member Functions

static bool has_explicit_keys (DDS::DynamicType *dt)
 
static bool exclude_member (DCPS::Sample::Extent ext, bool is_key, bool has_explicit_keys)
 
static DCPS::Sample::Extent nested (DCPS::Sample::Extent ext)
 
- Static Public Member Functions inherited from OpenDDS::DCPS::LocalObject< DDS::DynamicData >
static _ptr_type _narrow (CORBA::Object_ptr obj)
 
- Static Public Member Functions inherited from CORBA::LocalObject
static LocalObject_ptr _duplicate (LocalObject_ptr obj)
 
static LocalObject_ptr _nil (void)
 
static LocalObject_ptr _narrow (CORBA::Object_ptr obj)
 
- Static Public Member Functions inherited from CORBA::Object
static CORBA::Boolean marshal (const Object_ptr x, TAO_OutputCDR &cdr)
 
static void _tao_any_destructor (void *)
 
static CORBA::Boolean is_nil_i (CORBA::Object_ptr obj)
 
static void tao_object_initialize (Object *)
 
static CORBA::Object_ptr _duplicate (CORBA::Object_ptr obj)
 
static CORBA::Object_ptr _nil (void)
 
static CORBA::Object_ptr _narrow (CORBA::Object_ptr obj)
 

Protected Member Functions

bool is_type_supported (TypeKind tk, const char *func_name)
 Verify that a given type is primitive or string or wstring. More...
 
bool get_index_from_id (DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
 
bool enum_string_helper (char *&strInOut, MemberId id)
 
DDS::ReturnCode_t check_member (DDS::MemberDescriptor_var &member_desc, DDS::DynamicType_var &member_type, const char *method, const char *action, DDS::MemberId id, DDS::TypeKind tk=TK_NONE)
 
DDS::ReturnCode_t check_member (DDS::DynamicType_var &member_type, const char *method, const char *action, DDS::MemberId id, DDS::TypeKind tk=TK_NONE)
 
DDS::ReturnCode_t get_selected_union_branch (DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const
 
DDS::ReturnCode_t get_selected_union_branch (bool &found_selected_member, DDS::MemberDescriptor_var &selected_md)
 
bool discriminator_selects_no_member (DDS::Int32 disc) const
 
DDS::DynamicDatainterface_from_this () const
 
DDS::ReturnCode_t unsupported_method (const char *method_name, bool warning=false) const
 
- Protected Member Functions inherited from CORBA::LocalObject
 LocalObject (void)
 
- Protected Member Functions inherited from CORBA::Object
 Object (int dummy=0)
 
TAO::Object_Proxy_Brokerproxy_broker () const
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Static Protected Member Functions

static DDS::MemberId get_union_default_member (DDS::DynamicType *type)
 

Protected Attributes

DDS::DynamicType_var type_
 The actual (i.e., non-alias) DynamicType of the associated type. More...
 
DDS::TypeDescriptor_var type_desc_
 
- Protected Attributes inherited from CORBA::Object
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > refcount_
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::LocalObject< DDS::DynamicData >
typedef DDS::DynamicData ::_ptr_type _ptr_type
 
typedef DDS::DynamicData ::_var_type _var_type
 
- Public Types inherited from CORBA::LocalObject
typedef LocalObject_ptr _ptr_type
 
typedef LocalObject_var _var_type
 
typedef LocalObject_out _out_type
 
- Public Types inherited from CORBA::Object
typedef Object_ptr _ptr_type
 
typedef Object_var _var_type
 
typedef Object_out _out_type
 
- Public Attributes inherited from DDS::DynamicData
readonly attribute DynamicType type
 

Detailed Description

Definition at line 25 of file DynamicDataBase.h.

Constructor & Destructor Documentation

◆ DynamicDataBase() [1/2]

OpenDDS::XTypes::DynamicDataBase::DynamicDataBase ( )

Definition at line 46 of file DynamicDataBase.cpp.

47 {
48 }

◆ DynamicDataBase() [2/2]

OpenDDS::XTypes::DynamicDataBase::DynamicDataBase ( DDS::DynamicType_ptr  type)

Definition at line 50 of file DynamicDataBase.cpp.

52  , type_desc_(get_type_desc(type_))
53 {}
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
DDS::TypeDescriptor_var type_desc_
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.

Member Function Documentation

◆ check_member() [1/2]

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::check_member ( DDS::MemberDescriptor_var &  member_desc,
DDS::DynamicType_var &  member_type,
const char *  method,
const char *  action,
DDS::MemberId  id,
DDS::TypeKind  tk = TK_NONE 
)
protected

Definition at line 197 of file DynamicDataBase.cpp.

References ACE_ERROR, OpenDDS::XTypes::bitmask_bound(), OpenDDS::XTypes::enum_bound(), OpenDDS::XTypes::get_base_type(), get_descriptor(), TAO::String_var< charT >::in(), OpenDDS::XTypes::is_basic(), OpenDDS::XTypes::is_complex(), LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_BAD_PARAMETER, DDS::RETCODE_ERROR, DDS::RETCODE_OK, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_NONE, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UNION, type_, type_desc_, and OpenDDS::XTypes::typekind_to_string().

Referenced by OpenDDS::XTypes::DynamicDataAdapter::check_member(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_struct(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_union(), and OpenDDS::XTypes::DynamicDataImpl::set_value_to_struct().

200 {
202  switch (type_->get_kind()) {
203  case TK_STRING8:
204  case TK_STRING16:
205  case TK_SEQUENCE:
206  case TK_ARRAY:
207  case TK_MAP:
208  type = get_base_type(type_desc_->element_type());
209  break;
210  case TK_BITMASK:
211  case TK_STRUCTURE:
212  case TK_UNION:
213  rc = get_descriptor(md, id);
214  if (rc != DDS::RETCODE_OK) {
215  return rc;
216  }
217  type = get_base_type(md->type());
218  if (!type) {
219  return DDS::RETCODE_ERROR;
220  }
221  break;
222  default:
224  }
225 
226  const TypeKind type_kind = type->get_kind();
227  TypeKind cmp_type_kind = type_kind;
228  switch (type_kind) {
229  case TK_ENUM:
230  rc = enum_bound(type, cmp_type_kind);
231  if (rc != DDS::RETCODE_OK) {
232  return rc;
233  }
234  break;
235  case TK_BITMASK:
236  rc = bitmask_bound(type, cmp_type_kind);
237  if (rc != DDS::RETCODE_OK) {
238  return rc;
239  }
240  break;
241  }
242 
243  bool invalid_tk = true;
244  if (is_basic(cmp_type_kind)) {
245  invalid_tk = cmp_type_kind != tk;
246  } else if (tk == TK_NONE) {
247  invalid_tk = !is_complex(type_kind);
248  }
249  if (invalid_tk) {
250  if (log_level >= LogLevel::Notice) {
251  const CORBA::String_var member_name = md->name();
252  const CORBA::String_var type_name = type_->get_name();
253  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: %C: "
254  "trying to %C %C.%C id %u kind %C (%C) as an invalid kind %C\n",
255  method, action, type_name.in(), member_name.in(), id,
256  typekind_to_string(cmp_type_kind), typekind_to_string(type_kind),
257  typekind_to_string(tk)));
258  }
260  }
261  return DDS::RETCODE_OK;
262 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
#define ACE_ERROR(X)
bool is_complex(TypeKind tk)
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_UNION
Definition: TypeObject.h:244
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
DDS::TypeDescriptor_var type_desc_
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
DDS::ReturnCode_t get_descriptor(DDS::MemberDescriptor *&value, MemberId id)
const char * typekind_to_string(TypeKind tk)
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
const TypeKind TK_STRUCTURE
Definition: TypeObject.h:243
const TypeKind TK_STRING8
Definition: TypeObject.h:231
OpenDDS_Dcps_Export LogLevel log_level
DDS::ReturnCode_t enum_bound(DDS::DynamicType_ptr enum_type, DDS::TypeKind &bound_kind)
const ReturnCode_t RETCODE_ERROR
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
const TypeKind TK_ARRAY
Definition: TypeObject.h:249
const character_type * in(void) const
const TypeKind TK_NONE
Definition: TypeObject.h:213
const TypeKind TK_MAP
Definition: TypeObject.h:250
DDS::ReturnCode_t bitmask_bound(DDS::DynamicType_ptr type, DDS::TypeKind &bound_kind)
bool is_basic(TypeKind tk)
const ReturnCode_t RETCODE_BAD_PARAMETER

◆ check_member() [2/2]

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::check_member ( DDS::DynamicType_var &  member_type,
const char *  method,
const char *  action,
DDS::MemberId  id,
DDS::TypeKind  tk = TK_NONE 
)
inlineprotected

Definition at line 63 of file DynamicDataBase.h.

66  {
67  DDS::MemberDescriptor_var md;
68  return check_member(md, member_type, method, action, id, tk);
69  }
DDS::ReturnCode_t check_member(DDS::MemberDescriptor_var &member_desc, DDS::DynamicType_var &member_type, const char *method, const char *action, DDS::MemberId id, DDS::TypeKind tk=TK_NONE)

◆ clone()

DDS::DynamicData_ptr OpenDDS::XTypes::DynamicDataBase::clone ( void  )

Implements DDS::DynamicData.

Definition at line 450 of file DynamicDataBase.cpp.

References ACE_ERROR, OpenDDS::XTypes::copy(), DDS::DynamicDataFactory::create_data(), DDS::DynamicDataFactory::get_instance(), LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_ILLEGAL_OPERATION, DDS::RETCODE_OK, type_, and OpenDDS::XTypes::typekind_to_string().

451 {
452  DDS::DynamicData_var new_copy = DDS::DynamicDataFactory::get_instance()->create_data(type_);
453  if (!new_copy || copy(new_copy, this) != DDS::RETCODE_OK) {
454  if (log_level >= LogLevel::Notice) {
455  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataBase::clone: Failed to create a copy\n"));
456  }
457  return 0;
458  }
459  return new_copy._retn();
460 }
#define ACE_ERROR(X)
DynamicData_ptr create_data(DynamicType_ptr type)
static DynamicDataFactory_ptr get_instance()
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
OpenDDS_Dcps_Export LogLevel log_level
DDS::ReturnCode_t copy(DDS::DynamicData_ptr dest, DDS::DynamicData_ptr src)
const ReturnCode_t RETCODE_OK

◆ discriminator_selects_no_member()

bool OpenDDS::XTypes::DynamicDataBase::discriminator_selects_no_member ( DDS::Int32  disc) const
protected

Definition at line 366 of file DynamicDataBase.cpp.

References ACE_ERROR, get_selected_union_branch(), LM_WARNING, OpenDDS::DCPS::log_level, DDS::RETCODE_OK, OpenDDS::DCPS::retcode_to_string(), and OpenDDS::DCPS::LogLevel::Warning.

Referenced by OpenDDS::XTypes::DynamicDataImpl::set_complex_to_union(), and OpenDDS::XTypes::DynamicDataImpl::set_value_to_union().

367 {
368  bool found_selected_member;
369  DDS::MemberDescriptor_var selected_md;
370  const DDS::ReturnCode_t rc = get_selected_union_branch(disc, found_selected_member, selected_md);
371  if (rc != DDS::RETCODE_OK) {
372  if (log_level >= LogLevel::Warning) {
373  ACE_ERROR((LM_WARNING, "(%P|%t) WARNING: DynamicDataBase::discriminator_selects_no_member: "
374  "get_selected_union_branch failed: %C\n", retcode_to_string(rc)));
375  }
376  return false;
377  }
378  return !found_selected_member;
379 }
#define ACE_ERROR(X)
OpenDDS_Dcps_Export LogLevel log_level
const char * retcode_to_string(DDS::ReturnCode_t value)
Definition: DCPS_Utils.cpp:29
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t get_selected_union_branch(DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const

◆ enum_string_helper()

bool OpenDDS::XTypes::DynamicDataBase::enum_string_helper ( char *&  strInOut,
MemberId  id 
)
protected

Definition at line 175 of file DynamicDataBase.cpp.

References OpenDDS::XTypes::get_enum_value(), OpenDDS::XTypes::get_enumerator_name(), OpenDDS::XTypes::get_member_type(), DDS::RETCODE_OK, CORBA::string_free(), OpenDDS::XTypes::TK_ENUM, and type_.

Referenced by OpenDDS::XTypes::DynamicDataImpl::get_string_value(), and OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_string_value().

176 {
177  DDS::DynamicType_var mtype;
178  DDS::ReturnCode_t rc = get_member_type(mtype, type_, id);
179  if (rc != DDS::RETCODE_OK || mtype->get_kind() != TK_ENUM) {
180  return false;
181  }
182  DDS::Int32 valAsInt;
183  rc = get_enum_value(valAsInt, mtype, this, id);
184  if (rc != DDS::RETCODE_OK) {
185  return false;
186  }
187  DDS::String8_var valAsStr;
188  rc = get_enumerator_name(valAsStr, valAsInt, mtype);
189  if (rc != DDS::RETCODE_OK) {
190  return false;
191  }
192  CORBA::string_free(strInOut);
193  strInOut = valAsStr._retn();
194  return true;
195 }
DDS::ReturnCode_t get_member_type(DDS::DynamicType_var &member_type, DDS::DynamicType_ptr container_type, DDS::MemberId id)
DDS::ReturnCode_t get_enum_value(DDS::Int32 &value, DDS::DynamicType_ptr enum_type, DDS::DynamicData_ptr src, DDS::MemberId id)
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
void string_free(char *)
DDS::ReturnCode_t get_enumerator_name(DDS::String8_var &name, DDS::Int32 value, DDS::DynamicType_ptr type)
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK

◆ equals()

DDS::Boolean OpenDDS::XTypes::DynamicDataBase::equals ( DDS::DynamicData_ptr  other)

Definition at line 433 of file DynamicDataBase.cpp.

References unsupported_method().

Referenced by OpenDDS::XTypes::DynamicDataImpl::set_complex_to_union().

434 {
435  unsupported_method("DynamicDataBase::equals", true);
436  return false;
437 }
DDS::ReturnCode_t unsupported_method(const char *method_name, bool warning=false) const

◆ exclude_member()

bool OpenDDS::XTypes::DynamicDataBase::exclude_member ( DCPS::Sample::Extent  ext,
bool  is_key,
bool  has_explicit_keys 
)
inlinestatic

◆ get_descriptor()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_descriptor ( DDS::MemberDescriptor *&  value,
MemberId  id 
)

Definition at line 62 of file DynamicDataBase.cpp.

References DDS::RETCODE_OK, and type_.

Referenced by check_member(), and OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_values_from_struct().

63 {
64  DDS::DynamicTypeMember_var dtm;
65  const DDS::ReturnCode_t rc = type_->get_member(dtm, id);
66  if (rc != DDS::RETCODE_OK) {
67  return rc;
68  }
69  return dtm->get_descriptor(value);
70 }
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
const ReturnCode_t RETCODE_OK

◆ get_index_from_id()

bool OpenDDS::XTypes::DynamicDataBase::get_index_from_id ( DDS::MemberId  id,
ACE_CDR::ULong index,
ACE_CDR::ULong  bound 
) const
protected

Definition at line 149 of file DynamicDataBase.cpp.

References OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, and type_.

Referenced by OpenDDS::XTypes::DynamicDataImpl::get_boolean_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_boolean_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_char_common(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_array_element(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_map_element(), and OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_sequence_element().

151 {
152  // The mapping from id to index must be consistent with get_member_id_at_index
153  // for these types. In particular, index and id are equal given that it doesn't
154  // go out of bound.
155  switch (type_->get_kind()) {
156  case TK_STRING8:
157  case TK_STRING16:
158  case TK_SEQUENCE:
159  case TK_MAP:
160  if (bound == 0 || id < bound) {
161  index = id;
162  return true;
163  }
164  break;
165  case TK_BITMASK:
166  case TK_ARRAY:
167  if (id < bound) {
168  index = id;
169  return true;
170  }
171  }
172  return false;
173 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_ARRAY
Definition: TypeObject.h:249
const TypeKind TK_MAP
Definition: TypeObject.h:250

◆ get_int64_value()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_int64_value ( DDS::Int64 value,
DDS::MemberId  id 
)

Definition at line 473 of file DynamicDataBase.cpp.

References DDS::DynamicData::get_boolean_value(), DDS::DynamicData::get_byte_value(), DDS::DynamicData::get_char16_value(), DDS::DynamicData::get_char8_value(), OpenDDS::XTypes::get_enum_value(), get_int64_value_impl(), OpenDDS::XTypes::get_int_value(), OpenDDS::XTypes::get_member_type(), OpenDDS::XTypes::get_uint_value(), DDS::RETCODE_OK, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT8, and type_.

Referenced by get_selected_union_branch(), and OpenDDS::XTypes::DynamicDataImpl::read_basic_value().

474 {
475  DDS::DynamicType_var member_type;
476  DDS::ReturnCode_t rc = get_member_type(member_type, type_, id);
477  if (rc != DDS::RETCODE_OK) {
478  return rc;
479  }
480  const TypeKind tk = member_type->get_kind();
481  switch (tk) {
482  case TK_BOOLEAN:
483  {
484  DDS::Boolean tmp;
485  rc = get_boolean_value(tmp, id);
486  if (rc == DDS::RETCODE_OK) {
487  value = static_cast<DDS::Int64>(tmp);
488  }
489  return rc;
490  }
491  case TK_BYTE:
492  {
493  DDS::Byte tmp;
494  rc = get_byte_value(tmp, id);
495  if (rc == DDS::RETCODE_OK) {
496  value = static_cast<DDS::Int64>(tmp);
497  }
498  return rc;
499  }
500  case TK_INT8:
501  case TK_INT16:
502  case TK_INT32:
503  return get_int_value(value, this, id, tk);
504  case TK_INT64:
505  return get_int64_value_impl(value, id);
506  case TK_UINT8:
507  case TK_UINT16:
508  case TK_UINT32:
509  {
510  DDS::UInt64 tmp;
511  rc = get_uint_value(tmp, this, id, tk);
512  if (rc == DDS::RETCODE_OK) {
513  value = static_cast<DDS::Int64>(tmp);
514  }
515  return rc;
516  }
517  case TK_CHAR8:
518  {
519  DDS::Char8 tmp;
520  rc = get_char8_value(tmp, id);
521  if (rc == DDS::RETCODE_OK) {
522  value = static_cast<DDS::Int64>(tmp);
523  }
524  return rc;
525  }
526  case TK_CHAR16:
527  {
528  DDS::Char16 tmp;
529  rc = get_char16_value(tmp, id);
530  if (rc == DDS::RETCODE_OK) {
531  value = static_cast<DDS::Int64>(tmp);
532  }
533  return rc;
534  }
535  case TK_ENUM:
536  {
537  DDS::Int32 tmp;
538  rc = get_enum_value(tmp, member_type, this, id);
539  if (rc == DDS::RETCODE_OK) {
540  value = static_cast<DDS::Int64>(tmp);
541  }
542  return rc;
543  }
544  default:
545  return invalid_cast("get_int64_value", TK_INT64, tk);
546  }
547 }
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
DDS::ReturnCode_t get_byte_value(inout octet value, in MemberId id)
DDS::ReturnCode_t get_member_type(DDS::DynamicType_var &member_type, DDS::DynamicType_ptr container_type, DDS::MemberId id)
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
DDS::ReturnCode_t get_boolean_value(inout boolean value, in MemberId id)
octet Byte
Definition: DdsDcpsCore.idl:31
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
DDS::ReturnCode_t get_enum_value(DDS::Int32 &value, DDS::DynamicType_ptr enum_type, DDS::DynamicData_ptr src, DDS::MemberId id)
char Char8
Definition: DdsDcpsCore.idl:44
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
DDS::ReturnCode_t get_char16_value(inout wchar value, in MemberId id)
DDS::ReturnCode_t get_char8_value(inout char value, in MemberId id)
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t get_int_value(DDS::Int64 &value, DDS::DynamicData_ptr src, DDS::MemberId id, DDS::TypeKind kind)
wchar Char16
Definition: DdsDcpsCore.idl:45
const TypeKind TK_UINT8
Definition: TypeObject.h:226
DDS::ReturnCode_t get_uint_value(DDS::UInt64 &value, DDS::DynamicData_ptr src, DDS::MemberId id, DDS::TypeKind kind)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
virtual DDS::ReturnCode_t get_int64_value_impl(DDS::Int64 &value, DDS::MemberId id)=0

◆ get_int64_value_impl()

virtual DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_int64_value_impl ( DDS::Int64 value,
DDS::MemberId  id 
)
pure virtual

◆ get_member_id_by_name()

DDS::MemberId OpenDDS::XTypes::DynamicDataBase::get_member_id_by_name ( const char *  name)

Definition at line 78 of file DynamicDataBase.cpp.

References ACE_ERROR, LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_OK, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, OpenDDS::XTypes::TK_UNION, type_, and OpenDDS::XTypes::typekind_to_string().

79 {
80  const TypeKind tk = type_->get_kind();
81  switch (tk) {
82  case TK_BOOLEAN:
83  case TK_BYTE:
84  case TK_INT16:
85  case TK_INT32:
86  case TK_INT64:
87  case TK_UINT16:
88  case TK_UINT32:
89  case TK_UINT64:
90  case TK_FLOAT32:
91  case TK_FLOAT64:
92  case TK_FLOAT128:
93  case TK_INT8:
94  case TK_UINT8:
95  case TK_CHAR8:
96  case TK_CHAR16:
97  case TK_ENUM:
98  return MEMBER_ID_INVALID;
99  case TK_STRING8:
100  case TK_STRING16:
101  case TK_SEQUENCE:
102  case TK_ARRAY:
103  // Elements of string, sequence, array must be accessed by index.
104  return MEMBER_ID_INVALID;
105  case TK_MAP:
106  // Values in map can be accessed by strings which is converted from map keys.
107  // But need to find out how this conversion works. In the meantime, only allow
108  // accessing map using index.
109  return MEMBER_ID_INVALID;
110  case TK_BITMASK:
111  case TK_STRUCTURE:
112  case TK_UNION: {
113  DDS::DynamicTypeMember_var member;
114  if (type_->get_member_by_name(member, name) != DDS::RETCODE_OK) {
115  return MEMBER_ID_INVALID;
116  }
117  DDS::MemberDescriptor_var descriptor;
118  if (member->get_descriptor(descriptor) != DDS::RETCODE_OK) {
119  return MEMBER_ID_INVALID;
120  }
121  if (tk == TK_BITMASK) {
122  // Bitmask's flags don't have ID, so use index instead.
123  return descriptor->index();
124  } else {
125  return descriptor->id();
126  }
127  }
128  }
129  if (log_level >= LogLevel::Notice) {
130  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataBase::get_member_id_by_name:"
131  " Calling on an unexpected type %C\n", typekind_to_string(tk)));
132  }
133  return MEMBER_ID_INVALID;
134 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
#define ACE_ERROR(X)
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_UNION
Definition: TypeObject.h:244
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const char * typekind_to_string(TypeKind tk)
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
const TypeKind TK_STRUCTURE
Definition: TypeObject.h:243
const char *const name
Definition: debug.cpp:60
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
OpenDDS_Dcps_Export LogLevel log_level
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
const TypeKind TK_ARRAY
Definition: TypeObject.h:249
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_MAP
Definition: TypeObject.h:250
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223

◆ get_selected_union_branch() [1/2]

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_selected_union_branch ( DDS::Int32  disc,
bool &  found_selected_member,
DDS::MemberDescriptor_var &  selected_md 
) const
protected

Definition at line 302 of file DynamicDataBase.cpp.

References OpenDDS::XTypes::DISCRIMINATOR_ID, OpenDDS::XTypes::Sequence< T >::length(), DDS::RETCODE_OK, and type_.

Referenced by discriminator_selects_no_member(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_union(), OpenDDS::XTypes::DynamicDataImpl::get_item_count(), OpenDDS::XTypes::DynamicDataAdapter::get_item_count(), OpenDDS::XTypes::DynamicDataImpl::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataAdapter::get_member_id_at_index(), get_selected_union_branch(), and OpenDDS::XTypes::DynamicDataImpl::get_value_from_union().

304 {
305  found_selected_member = false;
306  bool has_default = false;
308  DDS::MemberDescriptor_var default_md;
309  for (DDS::UInt32 i = 0; i < type_->get_member_count(); ++i) {
310  DDS::DynamicTypeMember_var dtm;
311  rc = type_->get_member_by_index(dtm, i);
312  if (rc != DDS::RETCODE_OK) {
313  return rc;
314  }
315  if (dtm->get_id() == DISCRIMINATOR_ID) {
316  continue;
317  }
318  DDS::MemberDescriptor_var md;
319  rc = dtm->get_descriptor(md);
320  if (rc != DDS::RETCODE_OK) {
321  return rc;
322  }
323  bool found_matched_label = false;
324  const DDS::UnionCaseLabelSeq labels = md->label();
325  for (DDS::UInt32 j = 0; !found_matched_label && j < labels.length(); ++j) {
326  if (disc == labels[j]) {
327  found_matched_label = true;
328  }
329  }
330  if (found_matched_label) {
331  selected_md = md;
332  found_selected_member = true;
333  break;
334  }
335  if (md->is_default_label()) {
336  default_md = md;
337  has_default = true;
338  }
339  }
340  if (!found_selected_member && has_default) {
341  selected_md = default_md;
342  found_selected_member = true;
343  }
344  return rc;
345 }
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
const ReturnCode_t RETCODE_OK
ACE_CDR::ULong length() const
Definition: TypeObject.h:167

◆ get_selected_union_branch() [2/2]

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_selected_union_branch ( bool &  found_selected_member,
DDS::MemberDescriptor_var &  selected_md 
)
protected

Definition at line 347 of file DynamicDataBase.cpp.

References ACE_ERROR, ACE_INT32_MAX, OpenDDS::XTypes::DISCRIMINATOR_ID, get_int64_value(), get_selected_union_branch(), LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_ERROR, and DDS::RETCODE_OK.

349 {
350  // TODO: Support UInt64 and Int64 (https://issues.omg.org/issues/DDSXTY14-36)
351  DDS::Int64 i64_disc;
353  if (rc != DDS::RETCODE_OK) {
354  return rc;
355  }
356  if (i64_disc < ACE_INT32_MIN || i64_disc > ACE_INT32_MAX) {
357  if (log_level >= LogLevel::Notice) {
358  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataBase::get_selected_union_branch: "
359  "union discriminator can't fit in int32: %q\n", i64_disc));
360  }
361  return DDS::RETCODE_ERROR;
362  }
363  return get_selected_union_branch(static_cast<DDS::Int32>(i64_disc), found_selected_member, selected_md);
364 }
#define ACE_ERROR(X)
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
DDS::ReturnCode_t get_int64_value(DDS::Int64 &value, DDS::MemberId id)
OpenDDS_Dcps_Export LogLevel log_level
const ReturnCode_t RETCODE_ERROR
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t get_selected_union_branch(DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const

◆ get_simple_value()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_simple_value ( DCPS::Value value,
DDS::MemberId  id 
)
virtual

Reimplemented in OpenDDS::XTypes::DynamicDataXcdrReadImpl, and OpenDDS::XTypes::DynamicDataImpl.

Definition at line 422 of file DynamicDataBase.cpp.

References unsupported_method().

Referenced by OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValue(), and OpenDDS::DCPS::MetaStructImpl< XTypes::DynamicSample >::getValueImpl().

423 {
424  return unsupported_method("DynamicDataBase::get_simple_value");
425 }
DDS::ReturnCode_t unsupported_method(const char *method_name, bool warning=false) const

◆ get_uint64_value()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_uint64_value ( DDS::UInt64 value,
DDS::MemberId  id 
)

Definition at line 549 of file DynamicDataBase.cpp.

References OpenDDS::DCPS::char_value(), DDS::DynamicData::get_boolean_value(), DDS::DynamicData::get_byte_value(), DDS::DynamicData::get_char16_value(), DDS::DynamicData::get_char8_value(), OpenDDS::XTypes::get_int_value(), OpenDDS::XTypes::get_member_type(), get_uint64_value_impl(), OpenDDS::XTypes::get_uint_value(), OPENDDS_END_VERSIONED_NAMESPACE_DECL, DDS::RETCODE_OK, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, and type_.

Referenced by OpenDDS::XTypes::DynamicDataImpl::read_basic_value().

550 {
551  DDS::DynamicType_var member_type;
552  DDS::ReturnCode_t rc = get_member_type(member_type, type_, id);
553  if (rc != DDS::RETCODE_OK) {
554  return rc;
555  }
556  const TypeKind tk = member_type->get_kind();
557  switch (tk) {
558  case TK_BOOLEAN:
559  {
560  DDS::Boolean tmp;
561  rc = get_boolean_value(tmp, id);
562  if (rc == DDS::RETCODE_OK) {
563  value = tmp ? 1 : 0;
564  }
565  return rc;
566  }
567  case TK_BYTE:
568  {
569  DDS::Byte tmp;
570  rc = get_byte_value(tmp, id);
571  if (rc == DDS::RETCODE_OK) {
572  value = static_cast<DDS::UInt64>(tmp);
573  }
574  return rc;
575  }
576  case TK_INT8:
577  case TK_INT16:
578  case TK_INT32:
579  {
580  DDS::Int64 tmp;
581  rc = get_int_value(tmp, this, id, tk);
582  if (rc == DDS::RETCODE_OK) {
583  value = static_cast<DDS::UInt64>(tmp);
584  }
585  return rc;
586  }
587  case TK_UINT8:
588  case TK_UINT16:
589  case TK_UINT32:
590  return get_uint_value(value, this, id, tk);
591  case TK_UINT64:
592  return get_uint64_value_impl(value, id);
593  case TK_CHAR8:
594  {
595  DDS::Char8 tmp;
596  rc = get_char8_value(tmp, id);
597  if (rc == DDS::RETCODE_OK) {
598  value = DCPS::char_value(tmp);
599  }
600  return rc;
601  }
602  case TK_CHAR16:
603  {
604  DDS::Char16 tmp;
605  rc = get_char16_value(tmp, id);
606  if (rc == DDS::RETCODE_OK) {
607  value = DCPS::char_value(tmp);
608  }
609  return rc;
610  }
611  default:
612  return invalid_cast("get_uint64_value", TK_UINT64, tk);
613  }
614 }
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
DDS::ReturnCode_t get_byte_value(inout octet value, in MemberId id)
DDS::ReturnCode_t get_member_type(DDS::DynamicType_var &member_type, DDS::DynamicType_ptr container_type, DDS::MemberId id)
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
DDS::ReturnCode_t get_boolean_value(inout boolean value, in MemberId id)
octet Byte
Definition: DdsDcpsCore.idl:31
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
char Char8
Definition: DdsDcpsCore.idl:44
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
virtual DDS::ReturnCode_t get_uint64_value_impl(DDS::UInt64 &value, DDS::MemberId id)=0
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
DDS::ReturnCode_t get_char16_value(inout wchar value, in MemberId id)
DDS::ReturnCode_t get_char8_value(inout char value, in MemberId id)
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t get_int_value(DDS::Int64 &value, DDS::DynamicData_ptr src, DDS::MemberId id, DDS::TypeKind kind)
wchar Char16
Definition: DdsDcpsCore.idl:45
const TypeKind TK_UINT8
Definition: TypeObject.h:226
DDS::ReturnCode_t get_uint_value(DDS::UInt64 &value, DDS::DynamicData_ptr src, DDS::MemberId id, DDS::TypeKind kind)
unsigned char_value(CharType value)
Definition: ValueHelper.h:58
const TypeKind TK_CHAR16
Definition: TypeObject.h:228

◆ get_uint64_value_impl()

virtual DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::get_uint64_value_impl ( DDS::UInt64 value,
DDS::MemberId  id 
)
pure virtual

◆ get_union_default_member()

DDS::MemberId OpenDDS::XTypes::DynamicDataBase::get_union_default_member ( DDS::DynamicType type)
staticprotected

Definition at line 264 of file DynamicDataBase.cpp.

References OpenDDS::XTypes::DISCRIMINATOR_ID, DDS::DynamicType::get_member_by_index(), DDS::DynamicType::get_member_count(), OpenDDS::XTypes::Sequence< T >::length(), OpenDDS::XTypes::MEMBER_ID_INVALID, and DDS::RETCODE_OK.

265 {
266  //FUTURE: non-zero defaults for union discriminators are not currently represented
267  // in the MemberDescriptors created by converting CompleteTypeObject to DynamicType.
268  // When they are supported, change disc_default below to a value derived from the
269  // 'type' parameter. Note that 64-bit discriminators are not represented in TypeObject.
270  static const ACE_CDR::Long disc_default = 0;
271  DDS::MemberId default_branch = MEMBER_ID_INVALID;
272  const ACE_CDR::ULong members = type->get_member_count();
273  for (ACE_CDR::ULong i = 0; i < members; ++i) {
274  DDS::DynamicTypeMember_var member;
275  if (type->get_member_by_index(member, i) != DDS::RETCODE_OK) {
276  return MEMBER_ID_INVALID;
277  }
278  if (member->get_id() == DISCRIMINATOR_ID) {
279  continue;
280  }
281  DDS::MemberDescriptor_var mdesc;
282  if (member->get_descriptor(mdesc) != DDS::RETCODE_OK) {
283  return MEMBER_ID_INVALID;
284  }
285  if (mdesc->is_default_label()) {
286  default_branch = mdesc->id();
287  } else {
288  const DDS::UnionCaseLabelSeq& lseq = mdesc->label();
289  for (ACE_CDR::ULong lbl = 0; lbl < lseq.length(); ++lbl) {
290  if (lseq[lbl] == disc_default) {
291  return mdesc->id();
292  }
293  }
294  }
295  }
296  // Reaching this point means that there is no explicit label for the default
297  // value of the discriminator. If there is a default branch, its member is
298  // selected. Otherwise the 'MEMBER_ID_INVALID' constant is returned.
299  return default_branch;
300 }
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
DDS::ReturnCode_t get_member_by_index(inout DynamicTypeMember member, in unsigned long index)
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
ACE_UINT32 ULong
ACE_INT32 Long
unsigned long get_member_count()
const ReturnCode_t RETCODE_OK
ACE_CDR::ULong length() const
Definition: TypeObject.h:167

◆ has_explicit_keys()

bool OpenDDS::XTypes::DynamicDataBase::has_explicit_keys ( DDS::DynamicType dt)
static

Definition at line 381 of file DynamicDataBase.cpp.

References DDS::DynamicType::get_descriptor(), DDS::DynamicType::get_member_by_index(), DDS::DynamicType::get_member_count(), and DDS::RETCODE_OK.

Referenced by OpenDDS::XTypes::DynamicDataXcdrReadImpl::exclude_struct_member(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_item_count(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union_xcdr2(), and OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_struct_member().

382 {
383  // see dds_generator.h struct_has_explicit_keys() in opendds_idl
384  DDS::TypeDescriptor_var type_descriptor;
385  DDS::ReturnCode_t ret = dt->get_descriptor(type_descriptor);
386  if (ret != DDS::RETCODE_OK) {
387  return false;
388  }
389  DDS::DynamicType* const base = type_descriptor->base_type();
390  if (base && has_explicit_keys(base)) {
391  return true;
392  }
393 
394  for (ACE_CDR::ULong i = 0; i < dt->get_member_count(); ++i) {
395  DDS::DynamicTypeMember_var member;
396  ret = dt->get_member_by_index(member, i);
397  if (ret != DDS::RETCODE_OK) {
398  return false;
399  }
400  DDS::MemberDescriptor_var descriptor;
401  ret = member->get_descriptor(descriptor);
402  if (ret != DDS::RETCODE_OK) {
403  return false;
404  }
405  if (descriptor->is_key()) {
406  return true;
407  }
408  }
409  return false;
410 }
DDS::ReturnCode_t get_descriptor(inout TypeDescriptor descriptor)
static bool has_explicit_keys(DDS::DynamicType *dt)
DDS::ReturnCode_t get_member_by_index(inout DynamicTypeMember member, in unsigned long index)
ACE_UINT32 ULong
unsigned long get_member_count()
const ReturnCode_t RETCODE_OK

◆ interface_from_this()

DDS::DynamicData * OpenDDS::XTypes::DynamicDataBase::interface_from_this ( ) const
protected

Similar idea to std::shared_from_this(), provide a type compatible with parameter passing rules for IDL interfaces that are arguments to operations. Doesn't change the reference count.

Definition at line 55 of file DynamicDataBase.cpp.

Referenced by OpenDDS::XTypes::DynamicDataImpl::get_simple_value_enum().

56 {
57  // Operations defined in IDL interfaces don't use pointer-to-const
58  // parameter types.
59  return const_cast<DynamicDataBase*>(this);
60 }

◆ is_type_supported()

bool OpenDDS::XTypes::DynamicDataBase::is_type_supported ( TypeKind  tk,
const char *  func_name 
)
protected

Verify that a given type is primitive or string or wstring.

Definition at line 136 of file DynamicDataBase.cpp.

References ACE_ERROR, OpenDDS::XTypes::is_basic(), LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::DCPS::LogLevel::Notice, and OpenDDS::XTypes::typekind_to_string().

Referenced by OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_sequence_values(), OpenDDS::XTypes::DynamicDataImpl::get_single_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_single_value(), OpenDDS::XTypes::DynamicDataImpl::set_sequence_values(), and OpenDDS::XTypes::DynamicDataImpl::set_single_value().

137 {
138  if (!is_basic(tk)) {
139  if (log_level >= LogLevel::Notice) {
140  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataBase::is_type_supported:"
141  " Called function %C on an unsupported type (%C)\n",
142  func_name, typekind_to_string(tk)));
143  }
144  return false;
145  }
146  return true;
147 }
#define ACE_ERROR(X)
const char * typekind_to_string(TypeKind tk)
OpenDDS_Dcps_Export LogLevel log_level
bool is_basic(TypeKind tk)

◆ loan_value()

DDS::DynamicData_ptr OpenDDS::XTypes::DynamicDataBase::loan_value ( DDS::MemberId  id)

Definition at line 439 of file DynamicDataBase.cpp.

References unsupported_method().

440 {
441  unsupported_method("DynamicDataBase::loan_value");
442  return 0;
443 }
DDS::ReturnCode_t unsupported_method(const char *method_name, bool warning=false) const

◆ nested()

DCPS::Sample::Extent OpenDDS::XTypes::DynamicDataBase::nested ( DCPS::Sample::Extent  ext)
inlinestatic

◆ return_loaned_value()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::return_loaned_value ( DDS::DynamicData_ptr  other)

Definition at line 445 of file DynamicDataBase.cpp.

References unsupported_method().

446 {
447  return unsupported_method("DynamicDataBase::return_loaned_value");
448 }
DDS::ReturnCode_t unsupported_method(const char *method_name, bool warning=false) const

◆ set_descriptor()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::set_descriptor ( DDS::MemberId  id,
DDS::MemberDescriptor value 
)

Definition at line 72 of file DynamicDataBase.cpp.

References unsupported_method().

74 {
75  return unsupported_method("DynamicData::set_descriptor");
76 }
DDS::ReturnCode_t unsupported_method(const char *method_name, bool warning=false) const

◆ type()

DDS::DynamicType_ptr OpenDDS::XTypes::DynamicDataBase::type ( void  )

Definition at line 428 of file DynamicDataBase.cpp.

References type_.

Referenced by OpenDDS::XTypes::DynamicDataImpl::move_sequence_to_complex(), and OpenDDS::XTypes::DynamicDataImpl::move_single_to_complex().

429 {
430  return DDS::DynamicType::_duplicate(type_);
431 }
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.

◆ unsupported_method()

DDS::ReturnCode_t OpenDDS::XTypes::DynamicDataBase::unsupported_method ( const char *  method_name,
bool  warning = false 
) const
protected

Member Data Documentation

◆ type_

DDS::DynamicType_var OpenDDS::XTypes::DynamicDataBase::type_
protected

The actual (i.e., non-alias) DynamicType of the associated type.

Definition at line 86 of file DynamicDataBase.h.

Referenced by OpenDDS::XTypes::DynamicDataAdapter::assert_mutable(), OpenDDS::XTypes::DynamicDataAdapter::check_index(), check_member(), OpenDDS::XTypes::DynamicDataImpl::check_seqmem_in_sequence_and_array(), OpenDDS::XTypes::DynamicDataImpl::check_seqmem_in_struct_and_union(), OpenDDS::XTypes::DynamicDataImpl::clear_all_values(), OpenDDS::XTypes::DynamicDataImpl::clear_value(), clone(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::clone(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::copy(), enum_string_helper(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::exclude_struct_member(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::exclude_union_member(), OpenDDS::XTypes::DynamicDataImpl::get_boolean_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_boolean_value(), OpenDDS::XTypes::DynamicDataImpl::get_char_common(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_char_common(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_aggregated(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_collection(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_union(), OpenDDS::XTypes::DynamicDataImpl::get_complex_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_complex_value(), get_descriptor(), get_index_from_id(), get_int64_value(), OpenDDS::XTypes::DynamicDataImpl::get_item_count(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_item_count(), OpenDDS::XTypes::DynamicDataAdapter::get_item_count(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_complex_index(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_sequence_index(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_single_index(), OpenDDS::XTypes::DynamicDataImpl::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataAdapter::get_member_id_at_index(), get_member_id_by_name(), OpenDDS::XTypes::DynamicDataAdapter::get_member_id_by_name(), get_selected_union_branch(), OpenDDS::XTypes::DynamicDataImpl::get_sequence_size(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_sequence_values(), OpenDDS::XTypes::DynamicDataImpl::get_simple_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_simple_value(), OpenDDS::XTypes::DynamicDataImpl::get_simple_value_enum(), OpenDDS::XTypes::DynamicDataImpl::get_single_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_single_value(), get_uint64_value(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_union_selected_member(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_bitmask(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_collection(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_value_from_collection(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_enum(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_self(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_union(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_value_from_union(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_values_from_array(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_values_from_map(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_values_from_sequence(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_values_from_union(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::has_optional_member(), OpenDDS::XTypes::DynamicDataImpl::insert_discriminator(), OpenDDS::XTypes::DynamicDataImpl::insert_valid_discriminator(), OpenDDS::XTypes::DynamicDataAdapter::invalid_id(), OpenDDS::XTypes::DynamicDataImpl::is_default_member_selected(), OpenDDS::XTypes::DynamicDataAdapter::missing_dda(), OpenDDS::XTypes::DynamicDataImpl::read_discriminator(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_value(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_value(), OpenDDS::XTypes::DynamicDataImpl::serialize_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_selected_member_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::serialized_size_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_selected_member_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::set_boolean_value(), OpenDDS::XTypes::DynamicDataImpl::set_char_common(), OpenDDS::XTypes::DynamicDataImpl::set_complex_to_struct(), OpenDDS::XTypes::DynamicDataImpl::set_complex_to_union(), OpenDDS::XTypes::DynamicDataImpl::set_complex_value(), OpenDDS::XTypes::DynamicDataImpl::set_sequence_values(), OpenDDS::XTypes::DynamicDataImpl::set_single_value(), OpenDDS::XTypes::DynamicDataImpl::set_string_value(), OpenDDS::XTypes::DynamicDataImpl::set_value_to_union(), OpenDDS::XTypes::DynamicDataImpl::set_values_to_union(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_all(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_struct_member_at_index(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_array_element(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_map_element(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_sequence_element(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_to_struct_member(), type(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::type(), and OpenDDS::XTypes::DynamicDataImpl::write_discriminator().

◆ type_desc_

DDS::TypeDescriptor_var OpenDDS::XTypes::DynamicDataBase::type_desc_
protected

Definition at line 87 of file DynamicDataBase.h.

Referenced by check_member(), OpenDDS::XTypes::DynamicDataImpl::check_seqmem_in_sequence_and_array(), OpenDDS::XTypes::DynamicDataImpl::clear_value(), OpenDDS::XTypes::DynamicDataImpl::get_boolean_value(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_collection(), OpenDDS::XTypes::DynamicDataImpl::get_complex_from_union(), OpenDDS::XTypes::DynamicDataImpl::get_item_count(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::get_item_count(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_complex_index(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_sequence_index(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_single_index(), OpenDDS::XTypes::DynamicDataImpl::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataAdapter::get_member_id_at_index(), OpenDDS::XTypes::DynamicDataImpl::get_value_from_collection(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_string_value(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_string_value(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union_xcdr2(), OpenDDS::XTypes::DynamicDataImpl::set_boolean_value(), OpenDDS::XTypes::DynamicDataImpl::set_char_common(), OpenDDS::XTypes::DynamicDataImpl::set_complex_to_collection(), OpenDDS::XTypes::DynamicDataImpl::set_complex_to_union(), OpenDDS::XTypes::DynamicDataImpl::set_single_value(), OpenDDS::XTypes::DynamicDataImpl::set_value_to_collection(), OpenDDS::XTypes::DynamicDataImpl::set_value_to_union(), OpenDDS::XTypes::DynamicDataImpl::set_values_to_array(), OpenDDS::XTypes::DynamicDataImpl::set_values_to_sequence(), and OpenDDS::XTypes::DynamicDataImpl::validate_member_id_collection().


The documentation for this class was generated from the following files: