6 #ifndef OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H 7 #define OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H 9 #ifndef OPENDDS_SAFETY_PROFILE 11 # if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER 17 # include <dds/DdsDynamicDataC.h> 27 template <
typename T,
typename Tag>
29 template <
typename T,
typename Tag>
35 return get_dynamic_data_adapter<T, T>(type,
value);
41 return get_dynamic_data_adapter<T, T>(type,
value);
44 template <
typename T,
typename Tag>
47 # if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER 49 template <
typename T,
typename Tag =
void>
70 , read_only_(read_only)
74 DDS::UInt32 get_item_count();
76 virtual DDS::MemberId get_member_id_at_index_impl(DDS::UInt32);
82 DDS::DynamicData_ptr clone();
87 return get_raw_value(
"get_int8_value", &value,
TK_INT8,
id);
93 return set_raw_value(
"set_int8_value",
id, &value,
TK_INT8);
99 return get_raw_value(
"get_uint8_value", &value,
TK_UINT8,
id);
105 return set_raw_value(
"set_uint8_value",
id, &value,
TK_UINT8);
111 return get_raw_value(
"get_int16_value", &value,
TK_INT16,
id);
117 return set_raw_value(
"set_int16_value",
id, &value,
TK_INT16);
123 return get_raw_value(
"get_uint16_value", &value,
TK_UINT16,
id);
129 return set_raw_value(
"set_uint16_value",
id, &value,
TK_UINT16);
135 return get_raw_value(
"get_int32_value", &value,
TK_INT32,
id);
141 return set_raw_value(
"set_int32_value",
id, &value,
TK_INT32);
147 return get_raw_value(
"get_uint32_value", &value,
TK_UINT32,
id);
153 return set_raw_value(
"set_uint32_value",
id, &value,
TK_UINT32);
158 return get_raw_value(
"get_int64_value", &value,
TK_INT64,
id);
164 return set_raw_value(
"set_int64_value",
id, &value,
TK_INT64);
169 return get_raw_value(
"get_uint64_value", &value,
TK_UINT64,
id);
175 return set_raw_value(
"set_uint64_value",
id, &value,
TK_UINT64);
181 return get_raw_value(
"get_float32_value", &value,
TK_FLOAT32,
id);
187 return set_raw_value(
"set_float32_value",
id, &value,
TK_FLOAT32);
193 return get_raw_value(
"get_float64_value", &value,
TK_FLOAT64,
id);
199 return set_raw_value(
"set_float64_value",
id, &value,
TK_FLOAT64);
205 return get_raw_value(
"get_float128_value", &value,
TK_FLOAT128,
id);
211 return set_raw_value(
"set_float128_value",
id, &value,
TK_FLOAT128);
217 return get_raw_value(
"get_char8_value", &value,
TK_CHAR8,
id);
223 return set_raw_value(
"set_char8_value",
id, &value,
TK_CHAR8);
229 return get_raw_value(
"get_char16_value", &value,
TK_CHAR16,
id);
235 return set_raw_value(
"set_char16_value",
id, &value,
TK_CHAR16);
241 return get_raw_value(
"get_byte_value", &value,
TK_BYTE,
id);
247 return set_raw_value(
"set_byte_value",
id, &value,
TK_BYTE);
253 return get_raw_value(
"get_boolean_value", &value,
TK_BOOLEAN,
id);
259 return set_raw_value(
"set_boolean_value",
id, &value,
TK_BOOLEAN);
265 return get_raw_value(
"get_string_value", &value,
TK_STRING8,
id);
271 return set_raw_value(
"set_string_value",
id, value,
TK_STRING8);
277 return get_raw_value(
"get_wstring_value", &value,
TK_STRING16,
id);
283 return set_raw_value(
"set_wstring_value",
id, value,
TK_STRING16);
289 return get_raw_value(
"get_complex_value", &value,
TK_NONE,
id);
293 DDS::DynamicData_ptr
value)
295 return set_raw_value(
"set_complex_value",
id, value,
TK_NONE);
301 return unsupported_method(
"DynamicDataAdapater::get_int32_values");
307 return unsupported_method(
"DynamicDataAdapater::set_int32_values");
313 return unsupported_method(
"DynamicDataAdapater::get_uint32_values");
319 return unsupported_method(
"DynamicDataAdapater::set_uint32_values");
325 return unsupported_method(
"DynamicDataAdapater::get_int8_values");
331 return unsupported_method(
"DynamicDataAdapater::set_int8_values");
337 return unsupported_method(
"DynamicDataAdapater::get_uint8_values");
343 return unsupported_method(
"DynamicDataAdapater::set_uint8_values");
349 return unsupported_method(
"DynamicDataAdapater::get_int16_values");
355 return unsupported_method(
"DynamicDataAdapater::set_int16_values");
361 return unsupported_method(
"DynamicDataAdapater::get_uint16_values");
367 return unsupported_method(
"DynamicDataAdapater::set_uint16_values");
373 return unsupported_method(
"DynamicDataAdapater::get_int64_values");
379 return unsupported_method(
"DynamicDataAdapater::set_int64_values");
385 return unsupported_method(
"DynamicDataAdapater::get_uint64_values");
391 return unsupported_method(
"DynamicDataAdapater::set_uint64_values");
397 return unsupported_method(
"DynamicDataAdapater::get_float32_values");
403 return unsupported_method(
"DynamicDataAdapater::set_float32_values");
409 return unsupported_method(
"DynamicDataAdapater::get_float64_values");
415 return unsupported_method(
"DynamicDataAdapater::set_float64_values");
421 return unsupported_method(
"DynamicDataAdapater::get_float128_values");
427 return unsupported_method(
"DynamicDataAdapater::set_float128_values");
433 return unsupported_method(
"DynamicDataAdapater::get_char8_values");
439 return unsupported_method(
"DynamicDataAdapater::set_char8_values");
445 return unsupported_method(
"DynamicDataAdapater::get_char16_values");
451 return unsupported_method(
"DynamicDataAdapater::set_char16_values");
457 return unsupported_method(
"DynamicDataAdapater::get_byte_values");
463 return unsupported_method(
"DynamicDataAdapater::set_byte_values");
469 return unsupported_method(
"DynamicDataAdapater::get_boolean_values");
475 return unsupported_method(
"DynamicDataAdapater::set_boolean_values");
481 return unsupported_method(
"DynamicDataAdapater::get_string_values");
487 return unsupported_method(
"DynamicDataAdapater::set_string_values");
493 return unsupported_method(
"DynamicDataAdapater::get_wstring_values");
499 return unsupported_method(
"DynamicDataAdapater::set_wstring_values");
508 DDS::ReturnCode_t check_index(
const char* method, DDS::UInt32 index, DDS::UInt32 size)
const;
519 template <
typename T>
525 *
static_cast<T*
>(dest) = source;
536 # if OPENDDS_GCC_HAS_DIAG_PUSHPOP 537 # pragma GCC diagnostic push 538 # pragma GCC diagnostic ignored "-Warray-bounds" 540 template <
typename T>
546 dest = *
static_cast<const T*
>(source);
550 # if OPENDDS_GCC_HAS_DIAG_PUSHPOP 551 # pragma GCC diagnostic pop 557 const char* method, std::vector<bool>::reference dest,
DDS::MemberId id,
562 dest = *
static_cast<const bool*
>(source);
568 template <
typename Enum>
574 *
static_cast<DDS::Int32*
>(dest) = static_cast<DDS::Int32>(source);
580 template <
typename Enum>
586 dest =
static_cast<Enum
>(*
static_cast<const DDS::Int32*
>(source));
614 template <
typename T,
typename Tag>
618 DDS::DynamicType_var member_type;
625 dest_value = get_dynamic_data_adapter<T, Tag>(member_type, source);
627 return missing_dda(method,
id);
632 template <
typename T,
typename Tag>
634 const char* method, T& dest,
DDS::MemberId id, DDS::DynamicType_ptr member_type,
635 DDS::DynamicData_ptr source_dd)
637 DDS::DynamicData_var dest_dda = get_dynamic_data_adapter<T, Tag>(member_type, dest);
639 return missing_dda(method,
id);
641 return copy(dest_dda, source_dd);
644 template <
typename T,
typename Tag>
648 DDS::DynamicType_var member_type;
658 const T*
const source_value = get_dynamic_data_adapter_value<T, Tag>(source_dd);
660 if (source_value != &dest) {
661 dest = *source_value;
666 return set_indirect_complex_raw_value_impl<T, Tag>(method, dest, id, member_type, source_dd);
671 template <
typename T,
typename Tag>
675 DDS::DynamicType_var member_type;
680 return set_indirect_complex_raw_value_impl<T, Tag>(method, dest, id, member_type,
685 template <
typename T>
696 ,
value_(const_cast<T&>(value))
709 # endif // OPENDDS_HAS_DYNAMIC_DATA_ADAPTER 716 #endif // OPENDDS_SAFETY_PROFILE 718 #endif // OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H
DDS::ReturnCode_t set_uint64_values(DDS::MemberId, const DDS::UInt64Seq &)
sequence< unsigned short > UInt16Seq
DDS::ReturnCode_t set_enum_raw_value(const char *method, Enum &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
For now source must be a Int32 and tk must be TK_INT32.
sequence< long > Int32Seq
sequence< wchar > WcharSeq
DDS::ReturnCode_t set_boolean_value(DDS::MemberId id, CORBA::Boolean value)
const LogLevel::Value value
DDS::ReturnCode_t set_float32_values(DDS::MemberId, const DDS::Float32Seq &)
const T & wrapped() const
const TypeKind TK_STRING16
DDS::ReturnCode_t get_boolean_value(CORBA::Boolean &value, DDS::MemberId id)
const TypeKind TK_FLOAT128
DDS::ReturnCode_t get_byte_values(DDS::ByteSeq &, DDS::MemberId)
DDS::ReturnCode_t set_float32_value(DDS::MemberId id, CORBA::Float value)
DDS::ReturnCode_t set_byte_values(DDS::MemberId, const DDS::ByteSeq &)
DDS::ReturnCode_t get_char16_values(DDS::WcharSeq &, DDS::MemberId)
DDS::ReturnCode_t get_int32_values(DDS::Int32Seq &, DDS::MemberId)
DDS::ReturnCode_t set_wstring_values(DDS::MemberId, const DDS::WstringSeq &)
DDS::ReturnCode_t get_complex_value(DDS::DynamicData_ptr &value, DDS::MemberId id)
DDS::ReturnCode_t get_int32_value(CORBA::Long &value, DDS::MemberId id)
DDS::ReturnCode_t set_char16_value(DDS::MemberId id, CORBA::WChar value)
DDS::ReturnCode_t set_int32_values(DDS::MemberId, const DDS::Int32Seq &)
sequence< long long > Int64Seq
ACE_CDR::LongLong LongLong
#define OpenDDS_Dcps_Export
DDS::ReturnCode_t get_uint32_values(DDS::UInt32Seq &, DDS::MemberId)
DynamicDataAdapter(DDS::DynamicType_ptr type, bool read_only)
DDS::ReturnCode_t set_indirect_complex_raw_value_impl(const char *method, T &dest, DDS::MemberId id, DDS::DynamicType_ptr member_type, DDS::DynamicData_ptr source_dd)
DDS::ReturnCode_t set_boolean_values(DDS::MemberId, const DDS::BooleanSeq &)
DDS::ReturnCode_t set_wstring_value(DDS::MemberId id, const CORBA::WChar *value)
DDS::ReturnCode_t set_uint8_value(DDS::MemberId id, CORBA::UInt8 value)
DDS::ReturnCode_t get_uint32_value(CORBA::ULong &value, DDS::MemberId id)
DDS::ReturnCode_t get_simple_raw_value(const char *method, void *dest, DDS::TypeKind tk, T source, DDS::MemberId id)
DynamicDataAdapter_T(DDS::DynamicType_ptr type, T &value)
DDS::ReturnCode_t get_boolean_values(DDS::BooleanSeq &, DDS::MemberId)
DDS::ReturnCode_t get_int8_values(DDS::Int8Seq &, DDS::MemberId)
DDS::ReturnCode_t get_complex_raw_value(const char *method, void *dest, DDS::TypeKind tk, T &source, DDS::MemberId id)
DDS::ReturnCode_t set_float128_value(DDS::MemberId id, CORBA::LongDouble value)
DDS::ReturnCode_t set_char8_values(DDS::MemberId, const DDS::CharSeq &)
DDS::ReturnCode_t get_uint16_values(DDS::UInt16Seq &, DDS::MemberId)
DDS::ReturnCode_t set_float64_values(DDS::MemberId, const DDS::Float64Seq &)
ACE_CDR::ULongLong ULongLong
DDS::ReturnCode_t get_float64_value(CORBA::Double &value, DDS::MemberId id)
DDS::ReturnCode_t set_int8_values(DDS::MemberId, const DDS::Int8Seq &)
sequence< short > Int16Seq
DDS::ReturnCode_t set_int64_values(DDS::MemberId, const DDS::Int64Seq &)
DDS::ReturnCode_t get_enum_raw_value(const char *method, void *dest, DDS::TypeKind tk, Enum source, DDS::MemberId id)
For now dest must be a Int32 and tk must be TK_INT32.
DDS::ReturnCode_t get_int16_values(DDS::Int16Seq &, DDS::MemberId)
DDS::ReturnCode_t set_direct_complex_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_int64_value_impl(DDS::Int64 &value, DDS::MemberId id)
DDS::ReturnCode_t get_uint8_values(DDS::UInt8Seq &, DDS::MemberId)
DDS::ReturnCode_t set_indirect_complex_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_int64_values(DDS::Int64Seq &, DDS::MemberId)
DDS::ReturnCode_t set_string_value(DDS::MemberId id, const char *value)
sequence< unsigned long long > UInt64Seq
DDS::ReturnCode_t set_int64_value(DDS::MemberId id, CORBA::LongLong value)
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
DDS::ReturnCode_t get_float128_value(CORBA::LongDouble &value, DDS::MemberId id)
DDS::ReturnCode_t get_wstring_value(CORBA::WChar *&value, DDS::MemberId id)
DDS::ReturnCode_t get_uint8_value(CORBA::UInt8 &value, DDS::MemberId id)
DDS::ReturnCode_t get_char16_value(CORBA::WChar &value, DDS::MemberId id)
DDS::ReturnCode_t set_float64_value(DDS::MemberId id, CORBA::Double value)
DDS::ReturnCode_t get_string_values(DDS::StringSeq &, DDS::MemberId)
sequence< unsigned long > UInt32Seq
DDS::ReturnCode_t get_uint64_value_impl(DDS::UInt64 &value, DDS::MemberId id)
DDS::ReturnCode_t get_byte_value(DDS::Byte &value, DDS::MemberId id)
DDS::ReturnCode_t set_byte_value(DDS::MemberId id, CORBA::Octet value)
sequence< long double > Float128Seq
DDS::ReturnCode_t get_wstring_values(DDS::WstringSeq &, DDS::MemberId)
DDS::ReturnCode_t set_int32_value(DDS::MemberId id, CORBA::Long value)
sequence< float > Float32Seq
DDS::ReturnCode_t get_float32_value(CORBA::Float &value, DDS::MemberId id)
DDS::ReturnCode_t set_uint32_value(DDS::MemberId id, CORBA::ULong value)
DDS::ReturnCode_t get_string_value(char *&value, DDS::MemberId id)
DDS::ReturnCode_t set_simple_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_char8_value(CORBA::Char &value, DDS::MemberId id)
const TypeKind TK_FLOAT32
DDS::ReturnCode_t set_char16_values(DDS::MemberId, const DDS::WcharSeq &)
DDS::ReturnCode_t set_uint32_values(DDS::MemberId, const DDS::UInt32Seq &)
const TypeKind TK_STRING8
DDS::ReturnCode_t set_uint16_value(DDS::MemberId id, CORBA::UShort value)
DDS::ReturnCode_t get_uint16_value(CORBA::UShort &value, DDS::MemberId id)
sequence< wstring > WstringSeq
DDS::ReturnCode_t set_int8_value(DDS::MemberId id, CORBA::Int8 value)
DDS::ReturnCode_t set_uint8_values(DDS::MemberId, const DDS::UInt8Seq &)
DDS::ReturnCode_t set_string_values(DDS::MemberId, const DDS::StringSeq &)
DDS::ReturnCode_t set_complex_value(DDS::MemberId id, DDS::DynamicData_ptr value)
DDS::ReturnCode_t set_char8_value(DDS::MemberId id, CORBA::Char value)
DDS::ReturnCode_t copy(DDS::DynamicData_ptr dest, DDS::DynamicData_ptr src)
DDS::ReturnCode_t get_float64_values(DDS::Float64Seq &, DDS::MemberId)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const T * get_dynamic_data_adapter_value(DDS::DynamicData_ptr dda)
DDS::ReturnCode_t set_int16_values(DDS::MemberId, const DDS::Int16Seq &)
DDS::ReturnCode_t set_int16_value(DDS::MemberId id, CORBA::Short value)
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t set_float128_values(DDS::MemberId, const DDS::Float128Seq &)
DDS::ReturnCode_t get_int8_value(CORBA::Int8 &value, DDS::MemberId id)
DDS::ReturnCode_t get_int16_value(CORBA::Short &value, DDS::MemberId id)
DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, const T &value)
DDS::ReturnCode_t set_uint16_values(DDS::MemberId, const DDS::UInt16Seq &)
sequence< double > Float64Seq
DDS::ReturnCode_t get_char8_values(DDS::CharSeq &, DDS::MemberId)
The Internal API and Implementation of OpenDDS.
DynamicDataAdapter_T(DDS::DynamicType_ptr type, const T &value)
const TypeKind TK_FLOAT64
DDS::ReturnCode_t get_float32_values(DDS::Float32Seq &, DDS::MemberId)
DDS::ReturnCode_t set_uint64_value(DDS::MemberId id, CORBA::ULongLong value)
sequence< string > StringSeq
DDS::ReturnCode_t get_float128_values(DDS::Float128Seq &, DDS::MemberId)
DDS::ReturnCode_t set_bool_vector_elem_raw_value(const char *method, std::vector< bool >::reference dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_uint64_values(DDS::UInt64Seq &, DDS::MemberId)