8 #ifndef OPENDDS_SAFETY_PROFILE 17 # include <dds/DdsDynamicDataSeqTypeSupportImpl.h> 18 # include <dds/DdsDcpsCoreTypeSupportImpl.h> 31 , container_(type_, this)
87 if (bound > 0 && index >= bound) {
90 " Input index (%u) is out-of-bound (bound is %u)\n", index, bound));
98 if (index >= length) {
101 " Input index (%u) is out-of-bound (array length is %u)\n", index, length));
110 " Map is currently not supported\n"));
114 DDS::DynamicTypeMember_var dtm;
118 return dtm->get_id();
124 bool select_a_member;
125 DDS::MemberDescriptor_var selected_md;
134 if (index == 1 && select_a_member) {
135 return selected_md->id();
139 " invalid index: %u\n", index));
168 largest_index = std::max(largest_index, largest_seq_index);
170 return largest_index + 1;
171 }
else if (!
container_.sequence_map_.empty()) {
176 return largest_index + 1;
184 if (
container_.sequence_map_.erase(
id) == 0) {
223 return largest_index + 1;
241 DDS::DynamicTypeMember_var dtm;
245 DDS::MemberDescriptor_var md;
249 if (md->is_optional()) {
272 " set_default_discriminator_value failed\n"));
276 bool select_a_member;
277 DDS::MemberDescriptor_var selected_md;
286 return select_a_member ? 2 : 1;
383 DataContainer::const_single_iterator single_it =
container_.single_map_.find(next_id);
384 if (single_it !=
container_.single_map_.end()) {
385 container_.single_map_.insert(std::make_pair(i, single_it->second));
389 DataContainer::const_sequence_iterator seq_it =
container_.sequence_map_.find(next_id);
390 if (seq_it !=
container_.sequence_map_.end()) {
391 container_.sequence_map_.insert(std::make_pair(i, seq_it->second));
395 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(next_id);
396 if (complex_it !=
container_.complex_map_.end()) {
397 container_.complex_map_.insert(std::make_pair(i, complex_it->second));
406 DDS::DynamicTypeMember_var dtm;
410 DDS::MemberDescriptor_var md;
414 if (md->is_optional()) {
418 DDS::DynamicType_var member_type =
get_base_type(md->type());
437 const TypeKind tk = member_type->get_kind();
622 return container_.single_map_.insert(std::make_pair(
id, value)).second;
630 return container_.single_map_.insert(std::make_pair(
id, value)).second;
638 return container_.single_map_.insert(std::make_pair(
id, value)).second;
646 return container_.single_map_.insert(std::make_pair(
id, value)).second;
654 return container_.single_map_.insert(std::make_pair(
id, value)).second;
663 return container_.single_map_.insert(std::make_pair(
id, value)).second;
667 template<
typename SingleType>
673 return container_.single_map_.insert(std::make_pair(
id, value)).second;
679 if (
container_.sequence_map_.erase(
id) == 0) {
683 return container_.complex_map_.insert(std::make_pair(
id, value)).second;
688 template<TypeKind MemberTypeKind,
typename MemberType>
691 DDS::MemberDescriptor_var md;
692 DDS::DynamicType_var member_type;
694 md, member_type,
"DynamicDataImpl::set_value_to_struct",
"set",
id, MemberTypeKind);
732 DDS::DynamicTypeMembersById_var members_var;
742 if (it->first == default_id)
continue;
744 DDS::MemberDescriptor_var md;
750 if (disc_val == labels[i]) {
759 : kind_(
TK_INT32), active_(0), int32_(int32)
830 #define SINGLE_VALUE_DESTRUCT(T) static_cast<ACE_OutputCDR::T*>(active_)->~T(); break 853 #undef SINGLE_VALUE_DESTRUCT 1028 #ifdef DDS_HAS_WCHAR 1041 #define SEQUENCE_VALUE_PLACEMENT_NEW(T, N) active_ = new(N) DDS::T(reinterpret_cast<const DDS::T&>(rhs.N)); break; 1073 #ifdef DDS_HAS_WCHAR 1080 #undef SEQUENCE_VALUE_PLACEMENT_NEW 1085 #define SEQUENCE_VALUE_DESTRUCT(T) static_cast<DDS::T*>(active_)->~T(); break 1117 #ifdef DDS_HAS_WCHAR 1124 #undef SEQUENCE_VALUE_DESTRUCT 1127 #define SEQUENCE_VALUE_GETTERS(T) return *static_cast<DDS::T*>(active_) 1158 #ifdef DDS_HAS_WCHAR 1164 #undef SEQUENCE_VALUE_GETTERS 1167 DataContainer::const_single_iterator it)
const 1169 switch (disc_type->get_kind()) {
1185 #ifdef DDS_HAS_WCHAR 1232 DDS::TypeDescriptor_var td;
1237 if (bitbound >= 1 && bitbound <= 8) {
1240 }
else if (bitbound >= 9 && bitbound <= 16) {
1271 for (DataContainer::const_single_iterator single_it =
container_.single_map_.begin();
1272 single_it !=
container_.single_map_.end(); ++single_it) {
1274 return single_it->first;
1282 return container_.sequence_map_.begin()->first;
1285 for (DataContainer::const_complex_iterator cmpl_it =
container_.complex_map_.begin();
1286 cmpl_it !=
container_.complex_map_.end(); ++cmpl_it) {
1288 return cmpl_it->first;
1298 const DDS::MemberDescriptor_var& md)
const 1303 if (!md->is_default_label()) {
1307 if (disc_val == labels[i]) {
1341 #ifdef DDS_HAS_WCHAR 1406 template<
typename MemberType>
1408 const MemberType& )
const 1413 template<TypeKind MemberTypeKind,
typename MemberType>
1418 DDS::DynamicType_var member_type;
1424 " Type %C cannot be used for union discriminator\n",
1432 const TypeKind member_tk = member_type->get_kind();
1433 if (member_tk != MemberTypeKind && member_tk != enum_or_bitmask) {
1437 if (member_tk == enum_or_bitmask) {
1438 DDS::TypeDescriptor_var member_td;
1443 if (bit_bound < lower || bit_bound > upper) {
1455 DDS::DynamicTypeMember_var selected_member;
1459 DDS::MemberDescriptor_var selected_md;
1460 if (selected_member->get_descriptor(selected_md) !=
DDS::RETCODE_OK) {
1467 " Discriminator value %d does not select the activated member (ID %u)\n",
1468 disc_value, selected_id));
1482 " Can't directly set a discriminator that selects a member." 1483 " Activate the member first!\n"));
1492 DDS::DynamicTypeMember_var member;
1496 DDS::MemberDescriptor_var md;
1502 const TypeKind member_tk = member_type->get_kind();
1503 if (member_tk != MemberTypeKind && member_tk != enum_or_bitmask) {
1516 DDS::DynamicTypeMember_var member;
1520 if (member->get_id() ==
DISCRIMINATOR_ID || member->get_id() == memberSelected->
id()) {
1523 DDS::MemberDescriptor_var mdesc;
1529 used.
add(lseq[lbl]);
1541 DDS::DynamicTypeMember_var member;
1545 DDS::MemberDescriptor_var descriptor;
1549 DDS::DynamicType_var discType =
get_base_type(descriptor->type());
1550 switch (discType ? discType->get_kind() :
TK_NONE) {
1557 #ifdef DDS_HAS_WCHAR 1593 if (bound == 0 ||
id < bound) {
1607 template<TypeKind ElementTypeKind,
typename ElementType>
1612 const TypeKind elem_tk = elem_type->get_kind();
1614 if (elem_tk != ElementTypeKind && elem_tk != enum_or_bitmask) {
1617 " Could not write a value of type %C to %C with element type %C\n",
1624 if (elem_tk == enum_or_bitmask) {
1625 DDS::TypeDescriptor_var elem_td;
1630 if (bit_bound < lower || bit_bound > upper) {
1638 template<TypeKind ValueTypeKind,
typename ValueType>
1655 if (tk == enum_or_bitmask) {
1665 good = set_value_to_struct<ValueTypeKind>(id,
value);
1668 good = set_value_to_union<ValueTypeKind>(id,
value, enum_or_bitmask, lower, upper);
1673 good = set_value_to_collection<ValueTypeKind>(id,
value, tk, enum_or_bitmask, lower, upper);
1683 "Failed to write a value of %C to DynamicData object of type %C\n",
1691 return set_single_value<TK_INT32>(id,
value,
TK_ENUM, 17, 32);
1711 return set_single_value<TK_INT16>(id,
value,
TK_ENUM, 9, 16);
1721 return set_single_value<TK_INT64>(id,
value);
1731 return set_single_value<TK_FLOAT32>(id,
value);
1736 return set_single_value<TK_FLOAT64>(id,
value);
1741 return set_single_value<TK_FLOAT128>(id,
value);
1744 template<TypeKind CharKind, TypeKind StringKind,
typename FromCharT>
1764 good = set_value_to_struct<CharKind>(id,
value);
1767 good = set_value_to_union<CharKind>(id,
value);
1772 good = set_value_to_collection<CharKind>(id,
value, tk);
1793 #ifdef DDS_HAS_WCHAR 1841 " Failed to write boolean to DynamicData object of type %C\n",
1849 DDS::DynamicType_var mtype;
1854 if (mtype->get_kind() ==
TK_ENUM) {
1855 DDS::Int32 intValue;
1862 return set_single_value<TK_STRING8>(id,
value);
1867 #ifdef DDS_HAS_WCHAR 1868 return set_single_value<TK_STRING16>(id,
value);
1874 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 1878 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
1879 if (single_it !=
container_.single_map_.end()) {
1883 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
1884 if (complex_it !=
container_.complex_map_.end()) {
1889 DataContainer::const_single_iterator inner_it =
1891 if (inner_it != inner_dd->
container_.single_map_.end()) {
1902 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
1903 if (single_it !=
container_.single_map_.end()) {
1907 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
1908 if (complex_it !=
container_.complex_map_.end()) {
1913 DataContainer::const_single_iterator inner_it =
1915 if (inner_it != inner_dd->
container_.single_map_.end()) {
1923 template<
typename ValueType>
1927 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
1928 if (single_it !=
container_.single_map_.end()) {
1929 value = single_it->second.
get<ValueType>();
1932 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
1933 if (complex_it !=
container_.complex_map_.end()) {
1938 DataContainer::const_single_iterator inner_it =
1940 if (inner_it != inner_dd->
container_.single_map_.end()) {
1941 value = inner_it->second.
get<ValueType>();
1951 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
1952 if (single_it !=
container_.single_map_.end()) {
1953 value = single_it->second.
get<
const char*>();
1957 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
1958 if (complex_it !=
container_.complex_map_.end()) {
1974 DDS::DynamicType_var mtype;
1980 DDS::Int32 enumAsInteger;
1986 DDS::String8_var str;
1998 DDS::DynamicTypeMember_var dtm;
2002 DDS::MemberDescriptor_var md;
2006 DDS::DynamicType_var member_type =
get_base_type(md->type());
2007 const TypeKind member_kind = member_type->get_kind();
2008 switch (member_kind) {
2012 return get_simple_value_primitive<CORBA::Long>(
value, id);
2014 return get_simple_value_primitive<CORBA::ULong>(
value, id);
2016 return get_simple_value_primitive<CORBA::LongLong>(
value, id);
2018 return get_simple_value_primitive<CORBA::ULongLong>(
value, id);
2022 return get_simple_value_primitive<CORBA::Double>(
value, id);
2024 return get_simple_value_primitive<CORBA::LongDouble>(
value, id);
2032 " Member type %C is not supported by DCPS::Value\n",
2042 DDS::DynamicTypeMember_var member;
2046 DDS::MemberDescriptor_var md;
2051 const DDS::DynamicType_var member_type =
get_base_type(md->type());
2052 const DDS::DynamicType_var value_type = value->type();
2053 if (!member_type || !value_type || !member_type->equals(value_type)) {
2063 const DDS::DynamicType_var value_type = value->type();
2064 if (!disc_type->equals(value_type)) {
2076 DDS::DynamicTypeMember_var selected_member;
2080 DDS::MemberDescriptor_var selected_md;
2081 if (selected_member->get_descriptor(selected_md) !=
DDS::RETCODE_OK) {
2087 " Discriminator value %d does not select the activated member (ID %u)\n",
2088 disc_val, selected_id));
2099 " Can't directly set a discriminator that selects a member." 2100 " Activate the member first!\n"));
2109 DDS::DynamicTypeMember_var member;
2113 DDS::MemberDescriptor_var md;
2117 const DDS::DynamicType_var value_type = value->type();
2133 ACE_ERROR((
LM_NOTICE,
"(%P|%t) NOTICE: DynamicDataImpl::validate_member_id_collection::" 2134 " Map is currently not supported\n"));
2144 const DDS::DynamicType_var value_type = value->type();
2145 if (!elem_type->equals(value_type)) {
2154 DDS::DynamicData_var value_var = DDS::DynamicData::_duplicate(value);
2177 " Failed to write complex value for member with ID %d\n",
id));
2182 template<
typename SequenceType>
2185 if (
container_.complex_map_.erase(
id) == 0) {
2188 return container_.sequence_map_.insert(std::make_pair(
id, value)).second;
2191 template<TypeKind ElementTypeKind>
2195 DDS::DynamicTypeMember_var member;
2196 if (
type_->get_member(member,
id)) {
2199 DDS::MemberDescriptor_var md;
2204 const DDS::DynamicType_var member_type =
get_base_type(md->type());
2205 const TypeKind member_tk = member_type->get_kind();
2210 DDS::TypeDescriptor_var member_td;
2215 const DDS::DynamicType_var elem_type =
get_base_type(member_td->element_type());
2216 const TypeKind elem_tk = elem_type->get_kind();
2217 if (elem_tk != ElementTypeKind && elem_tk != enum_or_bitmask) {
2221 if (elem_tk == enum_or_bitmask) {
2222 DDS::TypeDescriptor_var elem_td;
2227 if (bit_bound < lower || bit_bound > upper) {
2234 template<TypeKind ElementTypeKind,
typename SequenceType>
2239 return check_seqmem_in_struct_and_union<ElementTypeKind>(id, enum_or_bitmask, lower, upper) &&
2243 template<TypeKind ElementTypeKind,
typename SequenceType>
2251 " Union discriminator cannot be a sequence\n"));
2257 if (!check_seqmem_in_struct_and_union<ElementTypeKind>(
id, enum_or_bitmask, lower, upper)) {
2263 DDS::DynamicTypeMember_var member;
2267 DDS::MemberDescriptor_var md;
2274 template<TypeKind ElementTypeKind>
2283 const TypeKind elem_tk = elem_type->get_kind();
2288 DDS::TypeDescriptor_var elem_td;
2293 const DDS::DynamicType_var nested_elem_type =
get_base_type(elem_td->element_type());
2294 const TypeKind nested_elem_tk = nested_elem_type->get_kind();
2295 if (nested_elem_tk != ElementTypeKind && nested_elem_tk != enum_or_bitmask) {
2298 if (nested_elem_tk == enum_or_bitmask) {
2299 DDS::TypeDescriptor_var nested_elem_td;
2300 if (nested_elem_type->get_descriptor(nested_elem_td) !=
DDS::RETCODE_OK) {
2303 const CORBA::ULong bit_bound = nested_elem_td->bound()[0];
2304 if (bit_bound < lower || bit_bound > upper) {
2311 template<TypeKind ElementTypeKind,
typename SequenceType>
2316 const DDS::UInt32 bound =
type_desc_->bound()[0];
2318 check_seqmem_in_sequence_and_array<ElementTypeKind>(id, bound, enum_or_bitmask, lower, upper) &&
2323 template<TypeKind ElementTypeKind,
typename SequenceType>
2330 check_seqmem_in_sequence_and_array<ElementTypeKind>(id, length, enum_or_bitmask, lower, upper) &&
2335 template<TypeKind ElementTypeKind,
typename SequenceType>
2349 good = set_values_to_struct<ElementTypeKind>(id,
value, enum_or_bitmask, lower, upper);
2352 good = set_values_to_union<ElementTypeKind>(id,
value, enum_or_bitmask, lower, upper);
2355 good = set_values_to_sequence<ElementTypeKind>(id,
value, enum_or_bitmask, lower, upper);
2358 good = set_values_to_array<ElementTypeKind>(id,
value, enum_or_bitmask, lower, upper);
2363 " Map is currently not supported\n"));
2376 " Failed to write sequence of %C to member with ID %d\n",
2384 return set_sequence_values<TK_INT32>(id,
value,
TK_ENUM, 17, 32);
2394 return set_sequence_values<TK_INT8>(id,
value,
TK_ENUM, 1, 8);
2404 return set_sequence_values<TK_INT16>(id,
value,
TK_ENUM, 9, 16);
2414 return set_sequence_values<TK_INT64>(id,
value);
2424 return set_sequence_values<TK_FLOAT32>(id,
value);
2429 return set_sequence_values<TK_FLOAT64>(id,
value);
2434 return set_sequence_values<TK_FLOAT128>(id,
value);
2439 return set_sequence_values<TK_CHAR8>(id,
value);
2444 #ifdef DDS_HAS_WCHAR 2445 return set_sequence_values<TK_CHAR16>(id,
value);
2453 return set_sequence_values<TK_BYTE>(id,
value);
2458 return set_sequence_values<TK_BOOLEAN>(id,
value);
2463 return set_sequence_values<TK_STRING8>(id,
value);
2468 #ifdef DDS_HAS_WCHAR 2469 return set_sequence_values<TK_STRING16>(id,
value);
2535 #ifdef DDS_HAS_WCHAR 2567 value = str_var.
_retn();
2575 #ifdef DDS_HAS_WCHAR 2591 value = wstr_var.
_retn();
2600 template<
typename ValueType>
2603 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
2604 if (single_it !=
container_.single_map_.end()) {
2605 value = single_it->second.get<ValueType>();
2614 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
2615 if (single_it !=
container_.single_map_.end()) {
2617 value = single_it->second.get_string();
2626 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
2627 if (single_it !=
container_.single_map_.end()) {
2629 value = single_it->second.get_wstring();
2635 template<
typename ValueType>
2638 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
2639 if (complex_it !=
container_.complex_map_.end()) {
2646 template<
typename ValueType>
2664 template<
typename ValueType>
2673 value = it->second.get<ValueType>();
2694 template<TypeKind ValueTypeKind,
typename ValueType>
2704 value = it->second.get<ValueType>();
2726 template<TypeKind ValueTypeKind,
typename ValueType>
2737 value = it->second.get<ValueType>();
2750 bool DynamicDataImpl::get_value_from_bitmask<TK_STRING16>(CORBA::WChar*&,
DDS::MemberId)
2755 template<TypeKind ValueTypeKind,
typename ValueType>
2758 DDS::MemberDescriptor_var md;
2759 DDS::DynamicType_var member_type;
2761 md, member_type,
"DynamicDataImpl::get_value_from_struct",
"get",
id, ValueTypeKind);
2770 if (md->is_optional()) {
2773 " Optional member Id %u is not present\n",
id));
2781 template<TypeKind ValueTypeKind,
typename ValueType>
2784 DDS::MemberDescriptor_var md;
2785 DDS::DynamicType_var member_type;
2787 md, member_type,
"DynamicDataImpl::get_value_from_union",
"get",
id, ValueTypeKind);
2805 bool found_selected_member =
false;
2806 DDS::MemberDescriptor_var selected_md;
2817 if (found_selected_member && !selected_md->is_optional()) {
2818 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
2826 const bool has_disc = single_it !=
container_.single_map_.end() ||
2831 " Branch Id %u is not the active branch in the union\n",
id));
2836 DDS::DynamicTypeMember_var dtm;
2840 DDS::MemberDescriptor_var md;
2871 template<
typename ValueType>
2875 template<TypeKind ValueTypeKind,
typename ValueType>
2883 const TypeKind elem_tk = elem_type->get_kind();
2898 if (treat_as_tk != ValueTypeKind) {
2913 template<TypeKind ValueTypeKind,
typename ValueType>
2927 good = get_value_from_enum<ValueTypeKind>(
value, id);
2930 good = get_value_from_bitmask<ValueTypeKind>(
value, id);
2933 good = get_value_from_struct<ValueTypeKind>(
value, id);
2936 good = get_value_from_union<ValueTypeKind>(
value, id);
2940 good = get_value_from_collection<ValueTypeKind>(
value, id);
2945 " Map is currently not supported\n"));
2956 " Failed to read a value of type %C from a DynamicData object of type %C\n",
2967 value = from_int8.val_;
2977 value = from_uint8.val_;
2984 return get_single_value<TK_INT16>(
value, id);
2989 return get_single_value<TK_UINT16>(
value, id);
2994 return get_single_value<TK_INT32>(
value, id);
2999 return get_single_value<TK_UINT32>(
value, id);
3004 return get_single_value<TK_INT64>(
value, id);
3009 return get_single_value<TK_UINT64>(
value, id);
3014 return get_single_value<TK_FLOAT32>(
value, id);
3019 return get_single_value<TK_FLOAT64>(
value, id);
3024 return get_single_value<TK_FLOAT128>(
value, id);
3027 template<TypeKind CharKind, TypeKind StringKind,
typename FromCharT,
typename CharT>
3038 DataContainer::const_single_iterator it =
container_.single_map_.find(
id);
3040 FromCharT from_char = it->second.get<FromCharT>();
3041 value = from_char.val_;
3043 FromCharT from_char(
'\0');
3045 value = from_char.val_;
3050 FromCharT from_char(
'\0');
3053 value = from_char.val_;
3058 FromCharT from_char(
'\0');
3059 good = get_value_from_struct<CharKind>(from_char, id);
3061 value = from_char.val_;
3066 FromCharT from_char(
'\0');
3067 good = get_value_from_union<CharKind>(from_char, id);
3069 value = from_char.val_;
3075 FromCharT from_char(
'\0');
3076 good = get_value_from_collection<CharKind>(from_char, id);
3078 value = from_char.val_;
3085 " Map is currently not supported\n"));
3096 " Failed to read a value of type %C from a DynamicData object of type %C\n",
3104 return get_char_common<TK_CHAR8, TK_STRING8, ACE_OutputCDR::from_char>(
value, id);
3109 #ifdef DDS_HAS_WCHAR 3110 return get_char_common<TK_CHAR16, TK_STRING16, ACE_OutputCDR::from_wchar>(
value, id);
3121 value = from_octet.val_;
3126 template<
typename UIntType>
3133 value = (1ULL << index) & bitmask;
3144 value = ((1 << index) & bitmask.
val_) ? true :
false;
3158 DataContainer::const_single_iterator it =
container_.single_map_.find(
id);
3161 value = from_bool.
val_;
3165 value = from_bool.
val_;
3176 if (bitbound >= 1 && bitbound <= 8) {
3177 good = get_boolean_from_bitmask<CORBA::UInt8>(index,
value);
3178 }
else if (bitbound >= 9 && bitbound <= 16) {
3179 good = get_boolean_from_bitmask<CORBA::UShort>(index,
value);
3180 }
else if (bitbound >= 17 && bitbound <= 32) {
3181 good = get_boolean_from_bitmask<CORBA::ULong>(index,
value);
3183 good = get_boolean_from_bitmask<CORBA::ULongLong>(index,
value);
3189 good = get_value_from_struct<TK_BOOLEAN>(from_bool, id);
3191 value = from_bool.val_;
3197 good = get_value_from_union<TK_BOOLEAN>(from_bool, id);
3199 value = from_bool.val_;
3206 good = get_value_from_collection<TK_BOOLEAN>(from_bool, id);
3208 value = from_bool.val_;
3215 " Map is currently not supported\n"));
3226 " Failed to read a boolean value from a DynamicData object of type %C\n",
3238 return get_single_value<TK_STRING8>(
value, id);
3243 #ifdef DDS_HAS_WCHAR 3244 return get_single_value<TK_STRING16>(
value, id);
3253 DDS::DynamicType_var member_type = data->
type();
3254 const TypeKind member_tk = member_type->get_kind();
3328 #ifdef DDS_HAS_WCHAR 3346 const char* str = it->second.get<
const char*>();
3353 #ifdef DDS_HAS_WCHAR 3355 const CORBA::WChar* wstr = it->second.get<
const CORBA::WChar*>();
3369 template<
typename SequenceType>
3373 const SequenceType& values = it->second.get<SequenceType>();
3381 void DynamicDataImpl::move_sequence_helper<DDS::StringSeq>(
const DataContainer::const_sequence_iterator& it,
3386 data->insert_single(i, values[i].in());
3390 #ifdef DDS_HAS_WCHAR 3392 void DynamicDataImpl::move_sequence_helper<DDS::WstringSeq>(
const DataContainer::const_sequence_iterator& it,
3397 data->insert_single(i, values[i].in());
3403 void DynamicDataImpl::move_sequence_helper<DDS::Int8Seq>(
const DataContainer::const_sequence_iterator& it,
3413 void DynamicDataImpl::move_sequence_helper<DDS::UInt8Seq>(
const DataContainer::const_sequence_iterator& it,
3423 void DynamicDataImpl::move_sequence_helper<DDS::CharSeq>(
const DataContainer::const_sequence_iterator& it,
3433 void DynamicDataImpl::move_sequence_helper<DDS::ByteSeq>(
const DataContainer::const_sequence_iterator& it,
3443 void DynamicDataImpl::move_sequence_helper<DDS::BooleanSeq>(
const DataContainer::const_sequence_iterator& it,
3452 #ifdef DDS_HAS_WCHAR 3454 void DynamicDataImpl::move_sequence_helper<DDS::WcharSeq>(
const DataContainer::const_sequence_iterator& it,
3467 DDS::DynamicType_var seq_type = data->
type();
3468 DDS::TypeDescriptor_var seq_td;
3472 DDS::DynamicType_var elem_type =
get_base_type(seq_td->element_type());
3474 switch (elem_type->get_kind()) {
3476 move_sequence_helper<DDS::Int8Seq>(it, data);
3480 move_sequence_helper<DDS::UInt8Seq>(it, data);
3484 move_sequence_helper<DDS::Int16Seq>(it, data);
3488 move_sequence_helper<DDS::UInt16Seq>(it, data);
3492 move_sequence_helper<DDS::Int32Seq>(it, data);
3496 move_sequence_helper<DDS::UInt32Seq>(it, data);
3500 move_sequence_helper<DDS::Int64Seq>(it, data);
3504 move_sequence_helper<DDS::UInt64Seq>(it, data);
3508 move_sequence_helper<DDS::Float32Seq>(it, data);
3512 move_sequence_helper<DDS::Float64Seq>(it, data);
3516 move_sequence_helper<DDS::Float128Seq>(it, data);
3520 move_sequence_helper<DDS::CharSeq>(it, data);
3523 #ifdef DDS_HAS_WCHAR 3525 move_sequence_helper<DDS::WcharSeq>(it, data);
3530 move_sequence_helper<DDS::ByteSeq>(it, data);
3534 move_sequence_helper<DDS::BooleanSeq>(it, data);
3538 move_sequence_helper<DDS::StringSeq>(it, data);
3541 #ifdef DDS_HAS_WCHAR 3543 move_sequence_helper<DDS::WstringSeq>(it, data);
3556 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
3557 if (complex_it !=
container_.complex_map_.end()) {
3558 value = DDS::DynamicData::_duplicate(complex_it->second);
3563 DDS::DynamicTypeMember_var dtm;
3567 DDS::MemberDescriptor_var md;
3571 DDS::DynamicType_var member_type =
get_base_type(md->type());
3573 DDS::DynamicData_var dd_var = dd_impl;
3575 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
3576 if (single_it !=
container_.single_map_.end()) {
3582 DataContainer::const_sequence_iterator sequence_it =
container_.sequence_map_.find(
id);
3583 if (sequence_it !=
container_.sequence_map_.end()) {
3599 DDS::DynamicData_var dd_var;
3608 value = DDS::DynamicData::_duplicate(dd_var);
3621 #ifdef DDS_HAS_WCHAR 3661 DDS::DynamicData_var dd_var;
3670 value = DDS::DynamicData::_duplicate(dd_var);
3681 bool found_selected_member =
false;
3682 DDS::MemberDescriptor_var selected_md;
3693 DDS::DynamicData_var dd_var = dd_impl;
3696 if (found_selected_member && !selected_md->is_optional()) {
3697 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
3703 value = DDS::DynamicData::_duplicate(dd_var);
3707 const bool has_disc = single_it !=
container_.single_map_.end() ||
3712 " Branch Id %u is not the active branch in the union\n",
id));
3716 DDS::DynamicTypeMember_var dtm;
3720 DDS::MemberDescriptor_var md;
3726 DDS::DynamicData_var dd_var = dd_impl;
3732 value = DDS::DynamicData::_duplicate(dd_var);
3739 DataContainer::const_complex_iterator complex_it =
container_.complex_map_.find(
id);
3740 if (complex_it !=
container_.complex_map_.end()) {
3742 value = DDS::DynamicData::_duplicate(complex_it->second);
3751 DDS::DynamicData_var dd_var = dd_impl;
3753 DataContainer::const_single_iterator single_it =
container_.single_map_.find(
id);
3754 if (single_it !=
container_.single_map_.end()) {
3759 DataContainer::const_sequence_iterator sequence_it =
container_.sequence_map_.find(
id);
3760 if (sequence_it !=
container_.sequence_map_.end()) {
3768 value = DDS::DynamicData::_duplicate(dd_var);
3790 " Map is currently not supported\n"));
3801 " Failed to read a complex value from a DynamicData object of type %C\n",
3809 ACE_UNUSED_ARG(value);
3816 ACE_UNUSED_ARG(value);
3823 ACE_UNUSED_ARG(value);
3830 ACE_UNUSED_ARG(value);
3837 ACE_UNUSED_ARG(value);
3844 ACE_UNUSED_ARG(value);
3851 ACE_UNUSED_ARG(value);
3858 ACE_UNUSED_ARG(value);
3865 ACE_UNUSED_ARG(value);
3872 ACE_UNUSED_ARG(value);
3879 ACE_UNUSED_ARG(value);
3886 ACE_UNUSED_ARG(value);
3893 ACE_UNUSED_ARG(value);
3900 ACE_UNUSED_ARG(value);
3907 ACE_UNUSED_ARG(value);
3914 ACE_UNUSED_ARG(value);
3921 ACE_UNUSED_ARG(value);
3928 single_map_.clear();
3929 complex_map_.clear();
3930 sequence_map_.clear();
3942 return data_->get_index_from_id(single_map_.rbegin()->first, largest_index, bound);
3950 return data_->get_index_from_id(sequence_map_.rbegin()->first, largest_index, bound);
3958 return data_->get_index_from_id(complex_map_.rbegin()->first, largest_index, bound);
3964 if (!single_map_.empty() && !get_largest_single_index(largest_index)) {
3967 if (!complex_map_.empty()) {
3969 if (!get_largest_complex_index(index)) {
3972 largest_index = std::max(index, largest_index);
3980 if (!sequence_map_.empty() && !get_largest_sequence_index(largest_index)) {
3983 if (!complex_map_.empty()) {
3985 if (!get_largest_complex_index(index)) {
3988 largest_index = std::max(index, largest_index);
4026 return ser << sv.
get<
const char*>();
4027 #ifdef DDS_HAS_WCHAR 4031 return ser << sv.
get<
const CORBA::WChar*>();
4038 template<
typename PrimitiveType>
4040 PrimitiveType default_value)
const 4043 if (it != single_map_.end()) {
4044 return serialize_single_value(ser, it->second);
4048 set_default_basic_value(default_value);
4049 return ser << default_value;
4053 size_t& size,
const DDS::DynamicType_var& enum_type)
const 4055 DDS::TypeDescriptor_var enum_td;
4060 if (bit_bound >= 1 && bit_bound <= 8) {
4061 primitive_serialized_size_int8(encoding, size);
4063 }
else if (bit_bound >= 9 && bit_bound <= 16) {
4065 }
else if (bit_bound >= 17 && bit_bound <= 32) {
4072 const DDS::DynamicType_var& enum_type)
const 4075 DDS::DynamicTypeMember_var first_dtm;
4076 if (enum_type->get_member_by_index(first_dtm, 0) !=
DDS::RETCODE_OK) {
4079 DDS::MemberDescriptor_var first_md;
4083 DDS::TypeDescriptor_var descriptor;
4089 if (bit_bound >= 1 && bit_bound <= 8) {
4090 return ser << static_cast<CORBA::Int8>(first_md->id());
4091 }
else if (bit_bound >= 9 && bit_bound <= 16) {
4092 return ser << static_cast<CORBA::Short>(first_md->id());
4093 }
else if (bit_bound >= 17 && bit_bound <= 32) {
4094 return ser << static_cast<CORBA::Long>(first_md->id());
4102 if (it != single_map_.end()) {
4103 return serialize_single_value(ser, it->second);
4105 return serialize_enum_default_value(ser,
type_);
4109 size_t& size,
const DDS::DynamicType_var& bitmask_type)
const 4111 DDS::TypeDescriptor_var bitmask_td;
4116 if (bit_bound >= 1 && bit_bound <= 8) {
4117 primitive_serialized_size_uint8(encoding, size);
4119 }
else if (bit_bound >= 9 && bit_bound <= 16) {
4121 }
else if (bit_bound >= 17 && bit_bound <= 32) {
4123 }
else if (bit_bound >= 33 && bit_bound <= 64) {
4130 const DDS::DynamicType_var& bitmask_type)
const 4132 DDS::TypeDescriptor_var descriptor;
4139 if (bit_bound >= 1 && bit_bound <= 8) {
4140 return ser << static_cast<CORBA::UInt8>(0);
4141 }
else if (bit_bound >= 9 && bit_bound <= 16) {
4142 return ser << static_cast<CORBA::UShort>(0);
4143 }
else if (bit_bound >= 17 && bit_bound <= 32) {
4144 return ser << static_cast<CORBA::ULong>(0);
4145 }
else if (bit_bound >= 33 && bit_bound <= 64) {
4146 return ser << static_cast<CORBA::ULongLong>(0);
4154 if (it != single_map_.end()) {
4155 return serialize_single_value(ser, it->second);
4157 return serialize_bitmask_default_value(ser,
type_);
4163 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4165 if (!data_->get_index_from_id(it->first, index, bound)) {
4170 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4172 if (!data_->get_index_from_id(it->first, index, bound)) {
4182 if (elem_it != elem_dd->
container_.single_map_.end()) {
4186 set_default_basic_value(from_char);
4187 str[index] = from_char.
val_;
4196 const bool is_empty = single_map_.empty() && complex_map_.empty();
4199 if (!get_largest_index_basic(largest_index)) {
4203 size += largest_index + 2;
4215 return data_->read_basic_value(str) && (ser << str);
4218 #ifdef DDS_HAS_WCHAR 4222 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4224 if (!data_->get_index_from_id(it->first, index, bound)) {
4229 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4231 if (!data_->get_index_from_id(it->first, index, bound)) {
4239 if (elem_it != elem_dd->
container_.single_map_.end()) {
4243 set_default_basic_value(from_wchar);
4244 wstr[index] = from_wchar.
val_;
4253 const bool is_empty = single_map_.empty() && complex_map_.empty();
4256 if (!get_largest_index_basic(largest_index)) {
4270 CORBA::WChar* wstr = 0;
4271 return data_->read_basic_value(wstr) && (ser << wstr);
4298 primitive_serialized_size_int8(encoding, size, length);
4305 primitive_serialized_size_uint8(encoding, size, length);
4363 #ifdef DDS_HAS_WCHAR 4444 #if ACE_SIZEOF_LONG_DOUBLE == 16 4477 #ifdef DDS_HAS_WCHAR 4499 DDS::DynamicTypeMember_var first_dtm;
4500 if (enum_type->get_member_by_index(first_dtm, 0) !=
DDS::RETCODE_OK) {
4503 DDS::MemberDescriptor_var first_md;
4531 template<
typename Type>
4539 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4541 set_default_basic_value(value);
4542 collection[i] = value.
val_;
4548 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4550 set_default_basic_value(value);
4551 collection[i] = value.
val_;
4557 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4559 set_default_basic_value(value);
4560 collection[i] = value.
val_;
4566 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4568 set_default_basic_value(value);
4569 collection[i] = value.
val_;
4575 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4577 set_default_basic_value(value);
4578 collection[i] = value.
val_;
4582 #ifdef DDS_HAS_WCHAR 4585 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4587 set_default_basic_value(value);
4588 collection[i] = value.
val_;
4593 template<
typename CollectionType>
4596 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
4597 set_default_basic_value(collection[i]);
4606 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4608 if (!data_->get_index_from_id(it->first, index, bound)) {
4614 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4616 if (!data_->get_index_from_id(it->first, index, bound)) {
4624 if (elem_it != elem_dd->
container_.single_map_.end()) {
4635 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4637 if (!data_->get_index_from_id(it->first, index, bound)) {
4643 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4645 if (!data_->get_index_from_id(it->first, index, bound)) {
4653 if (elem_it != elem_dd->
container_.single_map_.end()) {
4664 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4666 if (!data_->get_index_from_id(it->first, index, bound)) {
4672 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4674 if (!data_->get_index_from_id(it->first, index, bound)) {
4682 if (elem_it != elem_dd->
container_.single_map_.end()) {
4693 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4695 if (!data_->get_index_from_id(it->first, index, bound)) {
4701 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4703 if (!data_->get_index_from_id(it->first, index, bound)) {
4711 if (elem_it != elem_dd->
container_.single_map_.end()) {
4722 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4724 if (!data_->get_index_from_id(it->first, index, bound)) {
4730 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4732 if (!data_->get_index_from_id(it->first, index, bound)) {
4740 if (elem_it != elem_dd->
container_.single_map_.end()) {
4747 #ifdef DDS_HAS_WCHAR 4752 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4754 if (!data_->get_index_from_id(it->first, index, bound)) {
4760 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4762 if (!data_->get_index_from_id(it->first, index, bound)) {
4770 if (elem_it != elem_dd->
container_.single_map_.end()) {
4778 template<
typename ElementType,
typename CollectionType>
4782 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4784 if (!data_->get_index_from_id(it->first, index, bound)) {
4787 collection[index] = it->second.get<ElementType>();
4790 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4792 if (!data_->get_index_from_id(it->first, index, bound)) {
4800 if (elem_it != elem_dd->
container_.single_map_.end()) {
4801 collection[index] = elem_it->second.get<ElementType>();
4809 template<
typename ElementType,
typename CollectionType>
4813 collection.length(size);
4814 set_default_primitive_values(collection);
4815 return set_primitive_values(collection, bound, elem_tag);
4827 return reconstruct_primitive_collection(int32seq, size, bound,
CORBA::Long()) &&
4832 return reconstruct_primitive_collection(uint32seq, size, bound,
CORBA::ULong()) &&
4847 return reconstruct_primitive_collection(int16seq, size, bound,
CORBA::Short()) &&
4852 return reconstruct_primitive_collection(uint16seq, size, bound,
CORBA::UShort()) &&
4857 return reconstruct_primitive_collection(int64seq, size, bound,
CORBA::LongLong()) &&
4862 return reconstruct_primitive_collection(uint64seq, size, bound,
CORBA::ULongLong()) &&
4867 return reconstruct_primitive_collection(float32seq, size, bound,
CORBA::Float()) &&
4868 (ser << float32seq);
4872 return reconstruct_primitive_collection(float64seq, size, bound,
CORBA::Double()) &&
4873 (ser << float64seq);
4877 return reconstruct_primitive_collection(float128seq, size, bound,
CORBA::LongDouble()) &&
4878 (ser << float128seq);
4885 #ifdef DDS_HAS_WCHAR 4910 size_t& size,
const char* str)
const 4918 #ifdef DDS_HAS_WCHAR 4920 size_t& size,
const CORBA::WChar* wstr)
const 4933 serialized_size_string_common(encoding, size, sv.
str_);
4935 #ifdef DDS_HAS_WCHAR 4937 serialized_size_string_common(encoding, size, sv.wstr_);
4942 template<
typename StringType>
4944 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 4946 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
4949 const_single_iterator single_it = single_map_.find(
id);
4950 if (single_it != single_map_.end()) {
4951 serialized_size_string_common(encoding, size, single_it->second);
4952 }
else if (!serialized_size_complex_member_i(encoding, size,
id,
DCPS::Sample::Full)) {
4956 StringType default_value;
4957 set_default_basic_value(default_value);
4958 serialized_size_string_common(encoding, size, default_value);
4964 template<
typename StringType>
4966 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 4970 if (index_to_id.empty()) {
4973 return serialized_size_generic_string_collection<StringType>(
encoding, size, index_to_id);
4977 template<
typename StringType>
4979 const IndexToIdMap& index_to_id)
const 4981 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
4984 const_single_iterator single_it = single_map_.find(
id);
4985 if (single_it != single_map_.end()) {
4986 if (!serialize_single_value(ser, single_it->second)) {
4993 StringType default_value;
4994 set_default_basic_value(default_value);
4995 if (!(ser << default_value)) {
5003 template<
typename StringType>
5008 if (!get_index_to_id_map(index_to_id, bound)) {
5014 size_t total_size = 0;
5015 if (!serialized_size_generic_string_sequence<StringType>(encoding, total_size, index_to_id) ||
5020 if (!(ser << length)) {
5026 return serialize_generic_string_collection<StringType>(ser, index_to_id);
5029 template<
typename ElementType,
typename CollectionType>
5031 const DDS::DynamicType_var& enum_type)
const 5034 if (!set_default_enum_value(enum_type, value)) {
5037 for (
CORBA::ULong i = 0; i < collection.length(); ++i) {
5038 collection[i] =
static_cast<ElementType
>(
value);
5043 template<
typename ElementType,
typename WrapElementType,
typename CollectionType>
5046 const WrapElementType& elem_tag)
const 5048 collection.length(size);
5049 if (!set_default_enum_values<ElementType>(collection, enum_type)) {
5052 return set_primitive_values(collection, bound, elem_tag);
5064 primitive_serialized_size_int8(encoding, size, length);
5070 serialized_size_enum_sequence_as_int8s(encoding, size, seq.length());
5077 size_t total_size = 0;
5079 serialized_size_enum_sequence_as_int8s(encoding, total_size, enumseq.length());
5085 if (!(ser << length)) {
5091 return ser.write_int8_array(enumseq.get_buffer(), length);
5099 serialize_enum_sequence_as_ints_i(ser, enumseq);
5117 serialized_size_enum_sequence_as_int16s(encoding, size, seq.length());
5124 size_t total_size = 0;
5126 serialized_size_enum_sequence_as_int16s(encoding, total_size, enumseq.length());
5132 if (!(ser << length)) {
5145 return reconstruct_enum_collection<CORBA::Short>(enumseq, size, bound, enum_type,
CORBA::Short()) &&
5146 serialize_enum_sequence_as_ints_i(ser, enumseq);
5164 serialized_size_enum_sequence_as_int32s(encoding, size, seq.length());
5171 size_t total_size = 0;
5173 serialized_size_enum_sequence_as_int32s(encoding, total_size, enumseq.length());
5179 if (!(ser << length)) {
5192 return reconstruct_enum_collection<CORBA::Long>(enumseq, size, bound, enum_type,
CORBA::Long()) &&
5193 serialize_enum_sequence_as_ints_i(ser, enumseq);
5199 if (bitbound >= 1 && bitbound <= 8) {
5200 serialized_size_enum_sequence_as_int8s(encoding, size, length);
5201 }
else if (bitbound >= 9 && bitbound <= 16) {
5202 serialized_size_enum_sequence_as_int16s(encoding, size, length);
5204 serialized_size_enum_sequence_as_int32s(encoding, size, length);
5210 const DDS::DynamicType_var& enum_type)
const 5212 if (bitbound >= 1 && bitbound <= 8) {
5213 return serialize_enum_sequence_as_int8s(ser, size, seqbound, enum_type);
5214 }
else if (bitbound >= 9 && bitbound <= 16) {
5215 return serialize_enum_sequence_as_int16s(ser, size, seqbound, enum_type);
5216 }
else if (bitbound >= 17 && bitbound <= 32) {
5217 return serialize_enum_sequence_as_int32s(ser, size, seqbound, enum_type);
5222 template<
typename CollectionType>
5231 template<
typename WrapElementType,
typename CollectionType>
5235 collection.length(size);
5236 set_default_bitmask_values(collection);
5237 return set_primitive_values(collection, bound, elem_tag);
5249 primitive_serialized_size_uint8(encoding, size, length);
5255 serialized_size_bitmask_sequence_as_uint8s(encoding, size, seq.length());
5262 size_t total_size = 0;
5264 serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5270 if (!(ser << length)) {
5276 return ser.write_uint8_array(bitmask_seq.get_buffer(), length);
5284 serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5302 serialized_size_bitmask_sequence_as_uint16s(encoding, size, seq.length());
5309 size_t total_size = 0;
5311 serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5317 if (!(ser << length)) {
5330 return reconstruct_bitmask_collection(bitmask_seq, size, bound,
CORBA::UShort()) &&
5331 serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5349 serialized_size_bitmask_sequence_as_uint32s(encoding, size, seq.length());
5356 size_t total_size = 0;
5358 serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5364 if (!(ser << length)) {
5377 return reconstruct_bitmask_collection(bitmask_seq, size, bound,
CORBA::ULong()) &&
5378 serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5396 serialized_size_bitmask_sequence_as_uint64s(encoding, size, seq.length());
5403 size_t total_size = 0;
5405 serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5411 if (!(ser << length)) {
5424 return reconstruct_bitmask_collection(bitmask_seq, size, bound,
CORBA::ULongLong()) &&
5425 serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5431 if (bitbound >= 1 && bitbound <= 8) {
5432 serialized_size_bitmask_sequence_as_uint8s(encoding, size, length);
5433 }
else if (bitbound >= 9 && bitbound <= 16) {
5434 serialized_size_bitmask_sequence_as_uint16s(encoding, size, length);
5435 }
else if (bitbound >= 17 && bitbound <= 32) {
5436 serialized_size_bitmask_sequence_as_uint32s(encoding, size, length);
5438 serialized_size_bitmask_sequence_as_uint64s(encoding, size, length);
5445 if (bitbound >= 1 && bitbound <= 8) {
5446 return serialize_bitmask_sequence_as_uint8s(ser, size, seqbound);
5447 }
else if (bitbound >= 9 && bitbound <= 16) {
5448 return serialize_bitmask_sequence_as_uint16s(ser, size, seqbound);
5449 }
else if (bitbound >= 17 && bitbound <= 32) {
5450 return serialize_bitmask_sequence_as_uint32s(ser, size, seqbound);
5451 }
else if (bitbound >= 33 && bitbound <= 64) {
5452 return serialize_bitmask_sequence_as_uint64s(ser, size, seqbound);
5507 #ifdef DDS_HAS_WCHAR 5554 #ifdef DDS_HAS_WCHAR 5569 for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
5571 if (!data_->get_index_from_id(it->first, index, bound)) {
5574 index_to_id[index] = it->first;
5576 for (const_sequence_iterator it = sequence_map_.begin(); it != sequence_map_.end(); ++it) {
5578 if (!data_->get_index_from_id(it->first, index, bound)) {
5581 index_to_id[index] = it->first;
5583 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
5585 if (!data_->get_index_from_id(it->first, index, bound)) {
5588 index_to_id[index] = it->first;
5596 const DDS::DynamicData_var& dd_var = complex_map_.at(
id);
5604 template<
typename SequenceType>
5606 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id,
5607 SequenceType protoseq)
const 5609 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5612 const_sequence_iterator it = sequence_map_.find(
id);
5613 if (it != sequence_map_.end()) {
5614 serialized_size_sequence_value(encoding, size, it->second);
5615 }
else if (!serialized_size_complex_member_i(encoding, size,
id,
DCPS::Sample::Full)) {
5626 template<
typename SequenceType>
5628 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id,
5629 SequenceType protoseq)
const 5633 if (index_to_id.empty()) {
5636 return serialized_size_nested_basic_sequences(encoding, size, index_to_id, protoseq);
5643 const DDS::DynamicData_var& dd_var = complex_map_.at(
id);
5651 template<
typename SequenceType>
5653 const IndexToIdMap& index_to_id, SequenceType protoseq)
const 5655 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5658 const_sequence_iterator it = sequence_map_.find(
id);
5659 if (it != sequence_map_.end()) {
5660 if (!serialize_sequence_value(ser, it->second)) {
5669 if (!(ser << protoseq)) {
5677 template<
typename SequenceType>
5684 if (!get_index_to_id_map(index_to_id, bound)) {
5689 size_t total_size = 0;
5691 if (!serialized_size_nesting_basic_sequence(encoding, total_size, index_to_id, protoseq) ||
5698 if (!(ser << size)) {
5704 return serialize_nested_basic_sequences(ser, index_to_id, protoseq);
5709 const IndexToIdMap& index_to_id)
const 5711 switch (nested_elem_tk) {
5713 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Int32Seq());
5715 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::UInt32Seq());
5717 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Int8Seq());
5719 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::UInt8Seq());
5721 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Int16Seq());
5723 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::UInt16Seq());
5725 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Int64Seq());
5727 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::UInt64Seq());
5729 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Float32Seq());
5731 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Float64Seq());
5733 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::Float128Seq());
5735 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::CharSeq());
5737 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::StringSeq());
5738 #ifdef DDS_HAS_WCHAR 5740 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::WcharSeq());
5742 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::WstringSeq());
5745 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::ByteSeq());
5747 return serialized_size_nesting_basic_sequence(encoding, size, index_to_id,
DDS::BooleanSeq());
5755 switch (nested_elem_tk) {
5757 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Int32Seq());
5759 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::UInt32Seq());
5761 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Int8Seq());
5763 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::UInt8Seq());
5765 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Int16Seq());
5767 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::UInt16Seq());
5769 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Int64Seq());
5771 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::UInt64Seq());
5773 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Float32Seq());
5775 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Float64Seq());
5777 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::Float128Seq());
5779 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::CharSeq());
5781 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::StringSeq());
5782 #ifdef DDS_HAS_WCHAR 5784 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::WcharSeq());
5786 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::WstringSeq());
5789 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::ByteSeq());
5791 return serialize_nesting_basic_sequence_i(ser, size, bound,
DDS::BooleanSeq());
5797 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 5799 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5802 const_sequence_iterator it = sequence_map_.find(
id);
5803 if (it != sequence_map_.end()) {
5804 serialized_size_enum_sequence(encoding, size, it);
5805 }
else if (!serialized_size_complex_member_i(encoding, size,
id,
DCPS::Sample::Full)) {
5817 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 5821 if (index_to_id.empty()) {
5824 return serialized_size_nested_enum_sequences(encoding, size, index_to_id);
5830 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5833 const_sequence_iterator it = sequence_map_.find(
id);
5834 if (it != sequence_map_.end()) {
5835 if (!serialize_enum_sequence(ser, it)) {
5847 if (!(ser << static_cast<CORBA::ULong>(0))) {
5859 if (!get_index_to_id_map(index_to_id, bound)) {
5864 size_t total_size = 0;
5866 if (!serialized_size_nesting_enum_sequence(encoding, total_size, index_to_id) ||
5872 if (!(ser << size)) {
5878 return serialize_nested_enum_sequences(ser, index_to_id);
5882 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 5884 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5887 const_sequence_iterator it = sequence_map_.find(
id);
5888 if (it != sequence_map_.end()) {
5889 serialized_size_bitmask_sequence(encoding, size, it);
5890 }
else if (!serialized_size_complex_member_i(encoding, size,
id,
DCPS::Sample::Full)) {
5902 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 5906 if (index_to_id.empty()) {
5909 return serialized_size_nested_bitmask_sequences(encoding, size, index_to_id);
5913 const IndexToIdMap& index_to_id)
const 5915 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5918 const_sequence_iterator it = sequence_map_.find(
id);
5919 if (it != sequence_map_.end()) {
5920 if (!serialize_bitmask_sequence(ser, it)) {
5932 if (!(ser << static_cast<CORBA::ULong>(0))) {
5944 if (!get_index_to_id_map(index_to_id, bound)) {
5949 size_t total_size = 0;
5951 if (!serialized_size_nesting_bitmask_sequence(encoding, total_size, index_to_id) ||
5957 if (!(ser << size)) {
5963 return serialize_nested_bitmask_sequences(ser, index_to_id);
5970 return serialized_size_complex_member_i(encoding, size,
id, ext);
5972 return DynamicDataImpl(elem_type).serialized_size_i(encoding, size, ext);
5977 size_t& size,
const IndexToIdMap& index_to_id,
const DDS::DynamicType_var& elem_type,
DCPS::Sample::Extent ext)
const 5981 if (index_to_id.empty()) {
5984 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5985 if (!serialized_size_complex_member(encoding, size, index_to_id[i], elem_type, ext)) {
5993 const IndexToIdMap& index_to_id,
const DDS::DynamicType_var& elem_type,
DCPS::Sample::Extent ext)
const 5995 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5998 if (!serialize_complex_member_i(ser,
id, ext)) {
6014 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6016 if (!data_->get_index_from_id(it->first, index, bound)) {
6019 index_to_id[index] = it->first;
6023 size_t total_size = 0;
6025 if (!serialized_size_complex_sequence(encoding, total_size, index_to_id, elem_type, ext) ||
6031 if (!(ser << size)) {
6037 return serialize_complex_sequence_i(ser, index_to_id, elem_type, ext);
6044 if (!complex_map_.empty()) {
6046 if (!get_largest_complex_index(largest_index)) {
6049 length = largest_index + 1;
6052 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6054 if (!data_->get_index_from_id(it->first, index, bound)) {
6057 index_to_id[index] = it->first;
6069 const TypeKind elem_tk = elem_type->get_kind();
6070 DDS::TypeDescriptor_var elem_td;
6076 const bool is_empty = single_map_.empty() && complex_map_.empty();
6080 if (!get_largest_index_basic(largest_index)) {
6083 length = largest_index + 1;
6086 serialized_size_primitive_sequence(encoding, size, elem_tk, length);
6090 if (!get_index_to_id_map(index_to_id, bound)) {
6093 return serialized_size_generic_string_sequence<const char*>(
encoding, size, index_to_id);
6095 #ifdef DDS_HAS_WCHAR 6097 if (!get_index_to_id_map(index_to_id, bound)) {
6100 return serialized_size_generic_string_sequence<const CORBA::WChar*>(
encoding, size, index_to_id);
6104 }
else if (elem_tk ==
TK_ENUM) {
6106 serialized_size_enum_sequence(encoding, size, length, bit_bound);
6110 serialized_size_bitmask_sequence(encoding, size, length, bit_bound);
6113 const DDS::DynamicType_var nested_elem_type =
get_base_type(elem_td->element_type());
6114 const TypeKind nested_elem_tk = nested_elem_type->get_kind();
6117 const bool is_empty = sequence_map_.empty() && complex_map_.empty();
6121 if (!get_largest_index_basic_sequence(largest_index)) {
6124 length = largest_index + 1;
6127 if (!get_index_to_id_map(index_to_id, bound)) {
6131 return serialized_size_nesting_basic_sequence(encoding, size, nested_elem_tk, index_to_id);
6132 }
else if (nested_elem_tk ==
TK_ENUM) {
6133 return serialized_size_nesting_enum_sequence(encoding, size, index_to_id);
6135 return serialized_size_nesting_bitmask_sequence(encoding, size, index_to_id);
6141 IndexToIdMap index_to_id;
6142 if (!get_index_to_id_from_complex(index_to_id, bound)) {
6145 return serialized_size_complex_sequence(encoding, size, index_to_id, elem_type, ext);
6153 const TypeKind elem_tk = elem_type->get_kind();
6154 DDS::TypeDescriptor_var elem_td;
6160 const bool is_empty = single_map_.empty() && complex_map_.empty();
6164 if (!get_largest_index_basic(largest_index)) {
6167 length = largest_index + 1;
6170 return serialize_primitive_sequence(ser, elem_tk, length, bound);
6172 return serialize_generic_string_sequence<const char*>(ser, length, bound);
6174 #ifdef DDS_HAS_WCHAR 6175 return serialize_generic_string_sequence<const CORBA::WChar*>(ser, length, bound);
6179 }
else if (elem_tk ==
TK_ENUM) {
6181 return serialize_enum_sequence(ser, length, bit_bound, bound, elem_type);
6184 return serialize_bitmask_sequence(ser, length, bit_bound, bound);
6187 const DDS::DynamicType_var nested_elem_type =
get_base_type(elem_td->element_type());
6188 const TypeKind nested_elem_tk = nested_elem_type->get_kind();
6191 const bool is_empty = sequence_map_.empty() && complex_map_.empty();
6195 if (!get_largest_index_basic_sequence(largest_index)) {
6198 length = largest_index + 1;
6201 return serialize_nesting_basic_sequence(ser, nested_elem_tk, length, bound);
6202 }
else if (nested_elem_tk ==
TK_ENUM) {
6203 return serialize_nesting_enum_sequence(ser, length, bound);
6205 return serialize_nesting_bitmask_sequence(ser, length, bound);
6212 if (!complex_map_.empty()) {
6214 if (!get_largest_complex_index(largest_index)) {
6217 length = largest_index + 1;
6219 return serialize_complex_sequence(ser, length, bound, elem_type, ext);
6233 primitive_serialized_size_int8(encoding, size, length);
6236 primitive_serialized_size_uint8(encoding, size, length);
6262 #ifdef DDS_HAS_WCHAR 6282 return reconstruct_primitive_collection(int32arr, length, length,
CORBA::Long()) &&
6287 return reconstruct_primitive_collection(uint32arr, length, length,
CORBA::ULong()) &&
6293 ser.write_int8_array(int8arr.get_buffer(), length);
6298 ser.write_uint8_array(uint8arr.get_buffer(), length);
6302 return reconstruct_primitive_collection(int16arr, length, length,
CORBA::Short()) &&
6307 return reconstruct_primitive_collection(uint16arr, length, length,
CORBA::UShort()) &&
6312 return reconstruct_primitive_collection(int64arr, length, length,
CORBA::LongLong()) &&
6317 return reconstruct_primitive_collection(uint64arr, length, length,
CORBA::ULongLong()) &&
6322 return reconstruct_primitive_collection(float32arr, length, length,
CORBA::Float()) &&
6327 return reconstruct_primitive_collection(float64arr, length, length,
CORBA::Double()) &&
6332 return reconstruct_primitive_collection(float128arr, length, length,
CORBA::LongDouble()) &&
6340 #ifdef DDS_HAS_WCHAR 6361 template<
typename StringType>
6363 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 6366 return serialized_size_generic_string_collection<StringType>(
encoding, size, index_to_id);
6369 template<
typename StringType>
6374 if (!get_index_to_id_map(index_to_id, length)) {
6380 size_t total_size = 0;
6381 if (!serialized_size_generic_string_array<StringType>(encoding, total_size, index_to_id) ||
6386 return serialize_generic_string_collection<StringType>(ser, index_to_id);
6394 primitive_serialized_size_int8(encoding, size, length);
6401 size_t total_size = 0;
6403 serialized_size_enum_array_as_int8s(encoding, total_size, enumarr.length());
6408 return ser.write_int8_array(enumarr.get_buffer(), enumarr.length());
6412 CORBA::ULong length,
const DDS::DynamicType_var& enum_type)
const 6415 return reconstruct_enum_collection<CORBA::Int8>(enumarr, length, length, enum_type,
ACE_OutputCDR::from_int8(0)) &&
6416 serialize_enum_array_as_ints_i(ser, enumarr);
6431 size_t total_size = 0;
6433 serialized_size_enum_array_as_int16s(encoding, total_size, enumarr.length());
6442 CORBA::ULong length,
const DDS::DynamicType_var& enum_type)
const 6445 return reconstruct_enum_collection<CORBA::Short>(enumarr, length, length, enum_type,
CORBA::Short()) &&
6446 serialize_enum_array_as_ints_i(ser, enumarr);
6461 size_t total_size = 0;
6463 serialized_size_enum_array_as_int32s(encoding, total_size, enumarr.length());
6472 CORBA::ULong length,
const DDS::DynamicType_var& enum_type)
const 6475 return reconstruct_enum_collection<CORBA::Long>(enumarr, length, length, enum_type,
CORBA::Long()) &&
6476 serialize_enum_array_as_ints_i(ser, enumarr);
6482 if (bitbound >= 1 && bitbound <= 8) {
6483 serialized_size_enum_array_as_int8s(encoding, size, length);
6484 }
else if (bitbound >= 9 && bitbound <= 16) {
6485 serialized_size_enum_array_as_int16s(encoding, size, length);
6487 serialized_size_enum_array_as_int32s(encoding, size, length);
6494 if (bitbound >= 1 && bitbound <= 8) {
6495 return serialize_enum_array_as_int8s(ser, length, enum_type);
6496 }
else if (bitbound >= 9 && bitbound <= 16) {
6497 return serialize_enum_array_as_int16s(ser, length, enum_type);
6498 }
else if (bitbound >= 17 && bitbound <= 32) {
6499 return serialize_enum_array_as_int32s(ser, length, enum_type);
6509 primitive_serialized_size_uint8(encoding, size, length);
6516 size_t total_size = 0;
6518 serialized_size_bitmask_array_as_uint8s(encoding, total_size, bitmask_arr.length());
6523 return ser.write_uint8_array(bitmask_arr.get_buffer(), bitmask_arr.length());
6531 serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6546 size_t total_size = 0;
6548 serialized_size_bitmask_array_as_uint16s(encoding, total_size, bitmask_arr.length());
6560 return reconstruct_bitmask_collection(bitmask_arr, length, length,
CORBA::UShort()) &&
6561 serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6576 size_t total_size = 0;
6578 serialized_size_bitmask_array_as_uint32s(encoding, total_size, bitmask_arr.length());
6590 return reconstruct_bitmask_collection(bitmask_arr, length, length,
CORBA::ULong()) &&
6591 serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6606 size_t total_size = 0;
6608 serialized_size_bitmask_array_as_uint64s(encoding, total_size, bitmask_arr.length());
6620 return reconstruct_bitmask_collection(bitmask_arr, length, length,
CORBA::ULongLong()) &&
6621 serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6627 if (bitbound >= 1 && bitbound <= 8) {
6628 serialized_size_bitmask_array_as_uint8s(encoding, size, length);
6629 }
else if (bitbound >= 9 && bitbound <= 16) {
6630 serialized_size_bitmask_array_as_uint16s(encoding, size, length);
6631 }
else if (bitbound >= 17 && bitbound <= 32) {
6632 serialized_size_bitmask_array_as_uint32s(encoding, size, length);
6634 serialized_size_bitmask_array_as_uint64s(encoding, size, length);
6641 if (bitbound >= 1 && bitbound <= 8) {
6642 return serialize_bitmask_array_as_uint8s(ser, length);
6643 }
else if (bitbound >= 9 && bitbound <= 16) {
6644 return serialize_bitmask_array_as_uint16s(ser, length);
6645 }
else if (bitbound >= 17 && bitbound <= 32) {
6646 return serialize_bitmask_array_as_uint32s(ser, length);
6647 }
else if (bitbound >= 33 && bitbound <= 64) {
6648 return serialize_bitmask_array_as_uint64s(ser, length);
6653 template<
typename SequenceType>
6655 size_t& size,
const IndexToIdMap& index_to_id, SequenceType protoseq)
const 6658 return serialized_size_nested_basic_sequences(encoding, size, index_to_id, protoseq);
6661 template<
typename SequenceType>
6666 if (!get_index_to_id_map(index_to_id, length)) {
6671 size_t total_size = 0;
6673 if (!serialized_size_nesting_basic_array(encoding, total_size, index_to_id, protoseq) ||
6678 return serialize_nested_basic_sequences(ser, index_to_id, protoseq);
6683 const IndexToIdMap& index_to_id)
const 6685 switch (nested_elem_tk) {
6687 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Int32Seq());
6689 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::UInt32Seq());
6691 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Int8Seq());
6693 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::UInt8Seq());
6695 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Int16Seq());
6697 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::UInt16Seq());
6699 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Int64Seq());
6701 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::UInt64Seq());
6703 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Float32Seq());
6705 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Float64Seq());
6707 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::Float128Seq());
6709 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::CharSeq());
6711 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::StringSeq());
6712 #ifdef DDS_HAS_WCHAR 6714 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::WcharSeq());
6716 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::WstringSeq());
6719 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::ByteSeq());
6721 return serialized_size_nesting_basic_array(encoding, size, index_to_id,
DDS::BooleanSeq());
6729 switch (nested_elem_tk) {
6731 return serialize_nesting_basic_array_i(ser, length,
DDS::Int32Seq());
6733 return serialize_nesting_basic_array_i(ser, length,
DDS::UInt32Seq());
6735 return serialize_nesting_basic_array_i(ser, length,
DDS::Int8Seq());
6737 return serialize_nesting_basic_array_i(ser, length,
DDS::UInt8Seq());
6739 return serialize_nesting_basic_array_i(ser, length,
DDS::Int16Seq());
6741 return serialize_nesting_basic_array_i(ser, length,
DDS::UInt16Seq());
6743 return serialize_nesting_basic_array_i(ser, length,
DDS::Int64Seq());
6745 return serialize_nesting_basic_array_i(ser, length,
DDS::UInt64Seq());
6747 return serialize_nesting_basic_array_i(ser, length,
DDS::Float32Seq());
6749 return serialize_nesting_basic_array_i(ser, length,
DDS::Float64Seq());
6753 return serialize_nesting_basic_array_i(ser, length,
DDS::CharSeq());
6755 return serialize_nesting_basic_array_i(ser, length,
DDS::StringSeq());
6756 #ifdef DDS_HAS_WCHAR 6758 return serialize_nesting_basic_array_i(ser, length,
DDS::WcharSeq());
6760 return serialize_nesting_basic_array_i(ser, length,
DDS::WstringSeq());
6763 return serialize_nesting_basic_array_i(ser, length,
DDS::ByteSeq());
6765 return serialize_nesting_basic_array_i(ser, length,
DDS::BooleanSeq());
6771 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 6774 return serialized_size_nested_enum_sequences(encoding, size, index_to_id);
6781 if (!get_index_to_id_map(index_to_id, length)) {
6786 size_t total_size = 0;
6788 if (!serialized_size_nesting_enum_array(encoding, total_size, index_to_id) ||
6793 return serialize_nested_enum_sequences(ser, index_to_id);
6797 const DCPS::Encoding& encoding,
size_t& size,
const IndexToIdMap& index_to_id)
const 6800 return serialized_size_nested_bitmask_sequences(encoding, size, index_to_id);
6807 if (!get_index_to_id_map(index_to_id, length)) {
6812 size_t total_size = 0;
6814 if (!serialized_size_nesting_bitmask_array(encoding, total_size, index_to_id) ||
6819 return serialize_nested_bitmask_sequences(ser, index_to_id);
6823 size_t& size,
const IndexToIdMap& index_to_id,
const DDS::DynamicType_var& elem_type,
6827 for (
CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
6828 if (!serialized_size_complex_member(encoding, size, index_to_id[i], elem_type, ext)) {
6839 for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6841 if (!data_->get_index_from_id(it->first, index, length)) {
6844 index_to_id[index] = it->first;
6848 size_t total_size = 0;
6850 if (!serialized_size_complex_array(encoding, total_size, index_to_id, elem_type, ext) ||
6855 return serialize_complex_sequence_i(ser, index_to_id, elem_type, ext);
6863 const TypeKind elem_tk = elem_type->get_kind();
6864 DDS::TypeDescriptor_var elem_td;
6871 serialized_size_primitive_array(encoding, size, elem_tk, length);
6875 if (!get_index_to_id_map(index_to_id, length)) {
6878 return serialized_size_generic_string_array<const char*>(
encoding, size, index_to_id);
6880 #ifdef DDS_HAS_WCHAR 6882 if (!get_index_to_id_map(index_to_id, length)) {
6885 return serialized_size_generic_string_array<const CORBA::WChar*>(
encoding, size, index_to_id);
6889 }
else if (elem_tk ==
TK_ENUM) {
6891 serialized_size_enum_array(encoding, size, length, bit_bound);
6895 serialized_size_bitmask_array(encoding, size, length, bit_bound);
6898 const DDS::DynamicType_var nested_elem_type =
get_base_type(elem_td->element_type());
6899 const TypeKind nested_elem_tk = nested_elem_type->get_kind();
6901 if (!get_index_to_id_map(index_to_id, length)) {
6905 return serialized_size_nesting_basic_array(encoding, size, nested_elem_tk, index_to_id);
6906 }
else if (nested_elem_tk ==
TK_ENUM) {
6907 return serialized_size_nesting_enum_array(encoding, size, index_to_id);
6909 return serialized_size_nesting_bitmask_array(encoding, size, index_to_id);
6914 IndexToIdMap index_to_id;
6915 if (!get_index_to_id_from_complex(index_to_id, length)) {
6918 return serialized_size_complex_array(encoding, size, index_to_id, elem_type, ext);
6924 const TypeKind elem_tk = elem_type->get_kind();
6925 DDS::TypeDescriptor_var elem_td;
6932 return serialize_primitive_array(ser, elem_tk, length);
6934 return serialize_generic_string_array<const char*>(ser, length);
6936 #ifdef DDS_HAS_WCHAR 6937 return serialize_generic_string_array<const CORBA::WChar*>(ser, length);
6941 }
else if (elem_tk ==
TK_ENUM) {
6943 return serialize_enum_array(ser, bit_bound, length, elem_type);
6946 return serialize_bitmask_array(ser, bit_bound, length);
6948 const DDS::DynamicType_var nested_elem_type =
get_base_type(elem_td->element_type());
6949 const TypeKind nested_elem_tk = nested_elem_type->get_kind();
6951 return serialize_nesting_basic_array(ser, nested_elem_tk, length);
6952 }
else if (nested_elem_tk ==
TK_ENUM) {
6953 return serialize_nesting_enum_array(ser, length);
6955 return serialize_nesting_bitmask_array(ser, length);
6958 return serialize_complex_array(ser, length, elem_type, ext);
6962 size_t& size,
TypeKind member_tk)
const 6966 switch (member_tk) {
6972 primitive_serialized_size_int8(encoding, size);
6975 primitive_serialized_size_uint8(encoding, size);
6994 #ifdef DDS_HAS_WCHAR 7013 return serialized_size_primitive_member(encoding, size, member_tk);
7015 const char* str_default;
7016 set_default_basic_value(str_default);
7017 serialized_size_string_common(encoding, size, str_default);
7020 #ifdef DDS_HAS_WCHAR 7022 const CORBA::WChar* wstr_default;
7023 set_default_basic_value(wstr_default);
7024 serialized_size_string_common(encoding, size, wstr_default);
7033 size_t& size,
TypeKind member_tk, const_single_iterator it)
const 7036 return serialized_size_primitive_member(encoding, size, member_tk);
7038 serialized_size_string_common(encoding, size, it->second);
7047 switch (member_tk) {
7050 set_default_basic_value(value);
7051 return ser <<
value;
7055 set_default_basic_value(value);
7056 return ser <<
value;
7060 set_default_basic_value(value);
7061 return ser <<
value;
7065 set_default_basic_value(value);
7066 return ser <<
value;
7070 set_default_basic_value(value);
7071 return ser <<
value;
7075 set_default_basic_value(value);
7076 return ser <<
value;
7080 set_default_basic_value(value);
7081 return ser <<
value;
7085 set_default_basic_value(value);
7086 return ser <<
value;
7090 set_default_basic_value(value);
7091 return ser <<
value;
7095 set_default_basic_value(value);
7096 return ser <<
value;
7100 set_default_basic_value(value);
7101 return ser <<
value;
7105 set_default_basic_value(value);
7106 return ser <<
value;
7110 set_default_basic_value(value);
7111 return ser <<
value;
7113 #ifdef DDS_HAS_WCHAR 7116 set_default_basic_value(value);
7117 return ser <<
value;
7120 const CORBA::WChar*
value;
7121 set_default_basic_value(value);
7122 return ser <<
value;
7127 set_default_basic_value(value);
7128 return ser <<
value;
7132 set_default_basic_value(value);
7133 return ser <<
value;
7142 const DCPS::Encoding& encoding,
size_t& size, const_single_iterator it,
7143 const DDS::DynamicType_var& member_type,
bool optional,
7151 const TypeKind member_tk = member_type->get_kind();
7153 return serialized_size_basic_member(encoding, size, member_tk, it);
7154 }
else if (member_tk ==
TK_ENUM) {
7155 return serialized_size_enum(encoding, size, member_type);
7157 return serialized_size_bitmask(encoding, size, member_type);
7162 const_single_iterator it,
const DDS::DynamicType_var& member_type,
bool optional,
7171 const TypeKind member_tk = member_type->get_kind();
7172 size_t member_size = 0;
7174 serialized_size_basic_member(encoding, member_size, member_tk, it);
7175 }
else if (member_tk ==
TK_ENUM) {
7176 serialized_size_enum(encoding, member_size, member_type);
7178 serialized_size_bitmask(encoding, member_size, member_type);
7186 return serialize_single_value(ser, it->second);
7193 const DCPS::Encoding& encoding,
size_t& size,
const DDS::DynamicType_var& member_type,
7207 return DynamicDataImpl(member_type).serialized_size_i(encoding, size, ext);
7224 size_t member_size = 0;
7236 const DCPS::Encoding& encoding,
size_t& size, const_complex_iterator it,
7240 const DDS::DynamicData_var& data_var = it->second;
7258 const DDS::DynamicData_var& data_var = it->second;
7269 size_t member_size = 0;
7282 const DDS::DynamicType_var& member_type,
bool optional,
7285 const TypeKind member_tk = member_type->get_kind();
7286 const_single_iterator single_it = single_map_.find(
id);
7287 const_complex_iterator complex_it = complex_map_.find(
id);
7288 if (single_it == single_map_.end() && complex_it == complex_map_.end()) {
7299 return serialized_size_basic_member_default_value(encoding, size, member_tk);
7300 }
else if (member_tk ==
TK_ENUM) {
7301 return serialized_size_enum(encoding, size, member_type);
7303 return serialized_size_bitmask(encoding, size, member_type);
7307 if (single_it != single_map_.end()) {
7308 return serialized_size_single_aggregated_member_xcdr2(encoding, size, single_it, member_type,
7309 optional, extensibility, mutable_running_total);
7311 return serialized_size_complex_aggregated_member_xcdr2(encoding, size, complex_it, optional,
7312 extensibility, mutable_running_total,
7317 DDS::MemberId id,
const DDS::DynamicType_var& member_type,
bool optional,
7320 const TypeKind member_tk = member_type->get_kind();
7322 const_single_iterator single_it = single_map_.find(
id);
7323 const_complex_iterator complex_it = complex_map_.find(
id);
7324 if (single_it == single_map_.end() && complex_it == complex_map_.end()) {
7332 size_t member_size = 0;
7334 serialized_size_basic_member_default_value(encoding, member_size, member_tk);
7335 }
else if (member_tk ==
TK_ENUM) {
7336 serialized_size_enum(encoding, member_size, member_type);
7338 serialized_size_bitmask(encoding, member_size, member_type);
7347 return serialize_basic_member_default_value(ser, member_tk);
7348 }
else if (member_tk ==
TK_ENUM) {
7349 return serialize_enum_default_value(ser, member_type);
7351 return serialize_bitmask_default_value(ser, member_type);
7356 if (single_it != single_map_.end()) {
7357 return serialize_single_aggregated_member_xcdr2(ser, single_it, member_type, optional,
7358 must_understand, extensibility);
7360 return serialize_complex_aggregated_member_xcdr2(ser, complex_it, optional,
7361 must_understand, extensibility,
7385 return ser << static_cast<CORBA::ULong>(0);
7389 size_t& size, const_sequence_iterator it)
const 7391 switch (it->second.elem_kind_) {
7467 #ifdef DDS_HAS_WCHAR 7484 const_sequence_iterator it)
const 7486 switch (it->second.elem_kind_) {
7547 #ifdef DDS_HAS_WCHAR 7562 const DCPS::Encoding& encoding,
size_t& size, const_sequence_iterator it)
const 7564 switch (it->second.elem_kind_) {
7567 serialized_size_enum_sequence(encoding, size, seq);
7572 serialized_size_enum_sequence(encoding, size, seq);
7577 serialized_size_enum_sequence(encoding, size, seq);
7587 switch (it->second.elem_kind_) {
7590 return serialize_enum_sequence_as_ints_i(ser, seq);
7594 return serialize_enum_sequence_as_ints_i(ser, seq);
7598 return serialize_enum_sequence_as_ints_i(ser, seq);
7605 const DCPS::Encoding& encoding,
size_t& size, const_sequence_iterator it)
const 7607 switch (it->second.elem_kind_) {
7610 serialized_size_bitmask_sequence(encoding, size, seq);
7615 serialized_size_bitmask_sequence(encoding, size, seq);
7620 serialized_size_bitmask_sequence(encoding, size, seq);
7625 serialized_size_bitmask_sequence(encoding, size, seq);
7633 const_sequence_iterator it)
const 7635 switch (it->second.elem_kind_) {
7638 return serialize_bitmask_sequence_as_uints_i(ser, seq);
7642 return serialize_bitmask_sequence_as_uints_i(ser, seq);
7646 return serialize_bitmask_sequence_as_uints_i(ser, seq);
7650 return serialize_bitmask_sequence_as_uints_i(ser, seq);
7668 serialized_size_basic_sequence(encoding, size, it);
7669 }
else if (elem_tk ==
TK_ENUM) {
7670 serialized_size_enum_sequence(encoding, size, it);
7672 serialized_size_bitmask_sequence(encoding, size, it);
7677 const_sequence_iterator it,
TypeKind elem_tk,
bool optional,
7686 size_t member_size = 0;
7688 serialized_size_basic_sequence(encoding, member_size, it);
7689 }
else if (elem_tk ==
TK_ENUM) {
7690 serialized_size_enum_sequence(encoding, member_size, it);
7692 serialized_size_bitmask_sequence(encoding, member_size, it);
7701 return serialize_basic_sequence(ser, it);
7702 }
else if (elem_tk ==
TK_ENUM) {
7703 return serialize_enum_sequence(ser, it);
7705 return serialize_bitmask_sequence(ser, it);
7716 const_sequence_iterator seq_it = sequence_map_.find(
id);
7717 const_complex_iterator complex_it = complex_map_.find(
id);
7718 if (seq_it == sequence_map_.end() && complex_it == complex_map_.end()) {
7728 serialized_size_sequence_member_default_value(encoding, size, elem_tk);
7731 if (seq_it != sequence_map_.end()) {
7732 serialized_size_sequence_aggregated_member_xcdr2(encoding, size, seq_it, elem_tk, optional,
7733 extensibility, mutable_running_total);
7736 return serialized_size_complex_aggregated_member_xcdr2(encoding, size, complex_it, optional,
7737 extensibility, mutable_running_total,
7747 const_sequence_iterator seq_it = sequence_map_.find(
id);
7748 const_complex_iterator complex_it = complex_map_.find(
id);
7749 if (seq_it == sequence_map_.end() && complex_it == complex_map_.end()) {
7757 size_t member_size = 0;
7758 serialized_size_sequence_member_default_value(encoding, member_size, elem_tk);
7763 return serialize_sequence_member_default_value(ser, elem_tk);
7766 if (seq_it != sequence_map_.end()) {
7767 return serialize_sequence_aggregated_member_xcdr2(ser, seq_it, elem_tk, optional,
7768 must_understand, extensibility);
7770 return serialize_complex_aggregated_member_xcdr2(ser, complex_it, optional,
7771 must_understand, extensibility, ext);
7786 size_t mutable_running_total = 0;
7789 DDS::DynamicTypeMember_var dtm;
7793 DDS::MemberDescriptor_var md;
7804 const DDS::DynamicType_var member_type =
get_base_type(md->type());
7805 const TypeKind member_tk = member_type->get_kind();
7808 if (!serialized_size_basic_struct_member_xcdr2(encoding, size,
id, member_type, optional,
7809 extensibility, mutable_running_total)) {
7814 DDS::TypeDescriptor_var member_td;
7818 const DDS::DynamicType_var elem_type =
get_base_type(member_td->element_type());
7819 const TypeKind elem_tk = elem_type->get_kind();
7821 if (!serialized_size_sequence_struct_member_xcdr2(encoding, size,
id, elem_tk, optional,
7822 extensibility, mutable_running_total,
nested(ext))) {
7829 const_complex_iterator it = complex_map_.find(
id);
7830 if (it != complex_map_.end()) {
7831 if (!serialized_size_complex_aggregated_member_xcdr2(encoding, size, it, optional,
7832 extensibility, mutable_running_total,
7836 }
else if (!serialized_size_complex_aggregated_member_xcdr2_default(encoding, size, member_type, optional,
7837 extensibility, mutable_running_total,
7856 size_t total_size = 0;
7858 if (!data_->serialized_size_i(encoding, total_size, ext) || !ser.
write_delimiter(total_size)) {
7866 DDS::DynamicTypeMember_var dtm;
7870 DDS::MemberDescriptor_var md;
7881 const CORBA::Boolean must_understand = md->is_must_understand() || md->is_key();
7882 const DDS::DynamicType_var member_type =
get_base_type(md->type());
7883 const TypeKind member_tk = member_type->get_kind();
7886 if (!serialize_basic_struct_member_xcdr2(ser,
id, member_type, optional,
7887 must_understand, extensibility)) {
7892 DDS::TypeDescriptor_var member_td;
7896 const DDS::DynamicType_var elem_type =
get_base_type(member_td->element_type());
7897 const TypeKind elem_tk = elem_type->get_kind();
7899 if (!serialize_sequence_struct_member_xcdr2(ser,
id, elem_tk, optional,
7900 must_understand, extensibility,
nested(ext))) {
7907 const_complex_iterator it = complex_map_.find(
id);
7908 if (it != complex_map_.end()) {
7909 if (!serialize_complex_aggregated_member_xcdr2(ser, it, optional,
7910 must_understand, extensibility,
nested(ext))) {
7913 }
else if (!serialize_complex_aggregated_member_xcdr2_default(ser,
id, member_type, optional,
7914 must_understand, extensibility,
nested(ext))) {
7939 return serialized_size_structure_xcdr2(encoding, size, ext);
7941 return serialized_size_structure_xcdr1(encoding, size, ext);
7950 return serialize_structure_xcdr2(ser, ext);
7952 return serialize_structure_xcdr1(ser, ext);
7959 CORBA::Long& value,
const DDS::DynamicType_var& disc_type)
const 7961 const TypeKind disc_tk = disc_type->get_kind();
7965 set_default_basic_value(val);
7971 set_default_basic_value(val);
7977 set_default_basic_value(val);
7981 #ifdef DDS_HAS_WCHAR 7984 set_default_basic_value(val);
7991 set_default_basic_value(val);
7997 set_default_basic_value(val);
8003 set_default_basic_value(val);
8009 set_default_basic_value(val);
8014 set_default_basic_value(value);
8019 set_default_basic_value(val);
8025 set_default_basic_value(val);
8031 set_default_basic_value(val);
8036 return set_default_enum_value(disc_type, value);
8045 CORBA::Long& value, const_single_iterator single_it, const_complex_iterator complex_it,
8046 const DDS::DynamicType_var& disc_type)
const 8048 if (single_it != single_map_.end()) {
8049 data_->read_discriminator(value, disc_type, single_it);
8056 if (it != dd_impl->
container_.single_map_.end()) {
8057 data_->read_discriminator(value, disc_type, it);
8059 return set_default_discriminator_value(value, disc_type);
8066 const DCPS::Encoding& encoding,
size_t& size,
const DDS::DynamicType_var& disc_type,
8072 const TypeKind disc_tk = disc_type->get_kind();
8074 return serialized_size_primitive_member(encoding, size, disc_tk);
8076 return serialized_size_enum(encoding, size, disc_type);
8084 const TypeKind disc_tk = disc_type->get_kind();
8086 size_t disc_size = 0;
8088 serialized_size_primitive_member(encoding, disc_size, disc_tk);
8090 serialized_size_enum(encoding, disc_size, disc_type);
8100 return ser << static_cast<CORBA::Boolean>(
value);
8102 return ser << static_cast<CORBA::Octet>(
value);
8104 return ser << static_cast<CORBA::Char>(
value);
8105 #ifdef DDS_HAS_WCHAR 8107 return ser << static_cast<CORBA::WChar>(
value);
8110 return ser << static_cast<CORBA::Int8>(
value);
8112 return ser << static_cast<CORBA::UInt8>(
value);
8114 return ser << static_cast<CORBA::Short>(
value);
8116 return ser << static_cast<CORBA::UShort>(
value);
8118 return ser <<
value;
8120 return ser << static_cast<CORBA::ULong>(
value);
8122 return ser << static_cast<CORBA::LongLong>(
value);
8124 return ser << static_cast<CORBA::ULongLong>(
value);
8126 DDS::TypeDescriptor_var td;
8131 if (bitbound >= 1 && bitbound <= 8) {
8132 return ser << static_cast<CORBA::Int8>(
value);
8133 }
else if (bitbound >= 9 && bitbound <= 16) {
8134 return ser << static_cast<CORBA::Short>(
value);
8135 }
else if (bitbound >= 17 && bitbound <= 32) {
8136 return ser <<
value;
8147 DDS::DynamicTypeMember_var selected_dtm;
8151 DDS::MemberDescriptor_var selected_md;
8155 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
8156 const bool optional = selected_md->is_optional();
8158 const_single_iterator single_it = single_map_.find(selected_id);
8159 if (single_it != single_map_.end()) {
8160 return serialized_size_single_aggregated_member_xcdr2(encoding, size, single_it, selected_type, optional,
8161 extensibility, mutable_running_total);
8164 const_sequence_iterator seq_it = sequence_map_.find(selected_id);
8165 if (seq_it != sequence_map_.end()) {
8166 DDS::TypeDescriptor_var selected_td;
8171 serialized_size_sequence_aggregated_member_xcdr2(encoding, size, seq_it, elem_tk, optional,
8172 extensibility, mutable_running_total);
8176 const_complex_iterator complex_it = complex_map_.find(selected_id);
8177 if (complex_it != complex_map_.end()) {
8178 return serialized_size_complex_aggregated_member_xcdr2(encoding, size, complex_it, optional,
8179 extensibility, mutable_running_total,
8188 DDS::DynamicTypeMember_var selected_dtm;
8192 DDS::MemberDescriptor_var selected_md;
8196 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
8197 const bool optional = selected_md->is_optional();
8198 const bool must_understand = selected_md->is_must_understand();
8200 const_single_iterator single_it = single_map_.find(selected_id);
8201 if (single_it != single_map_.end()) {
8202 return serialize_single_aggregated_member_xcdr2(ser, single_it, selected_type, optional,
8203 must_understand, extensibility);
8206 const_sequence_iterator seq_it = sequence_map_.find(selected_id);
8207 if (seq_it != sequence_map_.end()) {
8208 DDS::TypeDescriptor_var selected_td;
8213 return serialize_sequence_aggregated_member_xcdr2(ser, seq_it, elem_tk, optional,
8214 must_understand, extensibility);
8217 const_complex_iterator complex_it = complex_map_.find(selected_id);
8218 if (complex_it != complex_map_.end()) {
8219 return serialize_complex_aggregated_member_xcdr2(ser, complex_it, optional,
8220 must_understand, extensibility,
8239 size_t mutable_running_total = 0;
8242 if (!serialized_size_discriminator_member_xcdr2(encoding, size, disc_type,
8243 extensibility, mutable_running_total)) {
8252 const bool has_disc = single_it != single_map_.end() || complex_it != complex_map_.end();
8253 const DDS::MemberId selected_id = data_->find_selected_member();
8257 if (!get_discriminator_value(disc_value, single_it, complex_it, disc_type)) {
8260 }
else if (!set_default_discriminator_value(disc_value, disc_type)) {
8265 bool found_selected_member =
false;
8266 DDS::MemberDescriptor_var selected_md;
8268 data_->get_selected_union_branch(disc_value, found_selected_member, selected_md);
8271 ACE_ERROR((
LM_NOTICE,
"(%P|%t) NOTICE: DynamicDataImpl::serialized_size_union_xcdr2:" 8276 if (!serialized_size_discriminator_member_xcdr2(encoding, size, disc_type,
8277 extensibility, mutable_running_total)) {
8283 if (found_selected_member) {
8284 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
8285 const bool optional = selected_md->is_optional();
8286 if (!serialized_size_complex_aggregated_member_xcdr2_default(encoding, size, selected_type, optional,
8287 extensibility, mutable_running_total,
8296 if (!serialized_size_discriminator_member_xcdr2(encoding, size, disc_type,
8297 extensibility, mutable_running_total)) {
8301 if (!serialized_size_selected_member_xcdr2(
8302 encoding, size, selected_id, extensibility, mutable_running_total)) {
8321 size_t total_size = 0;
8323 if (!data_->serialized_size_i(encoding, total_size, ext) || !ser.
write_delimiter(total_size)) {
8330 const bool has_disc = single_it != single_map_.end() || complex_it != complex_map_.end();
8331 const DDS::MemberId selected_id = data_->find_selected_member();
8333 const TypeKind disc_tk = disc_type->get_kind();
8339 if (!get_discriminator_value(disc_value, single_it, complex_it, disc_type)) {
8342 }
else if (!set_default_discriminator_value(disc_value, disc_type)) {
8349 bool found_selected_member =
false;
8350 DDS::MemberDescriptor_var selected_md;
8352 data_->get_selected_union_branch(disc_value, found_selected_member, selected_md);
8361 if (!serialize_discriminator_member_xcdr2(ser, disc_value, disc_type, extensibility)) {
8368 if (found_selected_member) {
8369 DDS::DynamicType_var selected_type =
get_base_type(selected_md->type());
8371 const bool optional = selected_md->is_optional();
8372 const bool must_understand = selected_md->is_must_understand();
8373 return serialize_complex_aggregated_member_xcdr2_default(ser,
id, selected_type, optional,
8374 must_understand, extensibility,
8381 if (single_it != single_map_.end()) {
8383 size_t disc_size = 0;
8385 serialized_size_primitive_member(encoding, disc_size, disc_tk);
8387 serialized_size_enum(encoding, disc_size, disc_type);
8394 if (!serialize_single_value(ser, single_it->second)) {
8399 size_t disc_size = 0;
8400 serialized_size_complex_member_i(encoding, disc_size, complex_it->first,
DCPS::Sample::Full);
8410 serialize_selected_member_xcdr2(ser, selected_id, extensibility);
8431 return serialized_size_union_xcdr2(encoding, size, ext);
8433 return serialized_size_union_xcdr1(encoding, size, ext);
8442 return serialize_union_xcdr2(ser, ext);
8444 return serialize_union_xcdr1(ser, ext);
8458 primitive_serialized_size_int8(encoding, size);
8461 primitive_serialized_size_uint8(encoding, size);
8480 #ifdef DDS_HAS_WCHAR 8497 #ifdef DDS_HAS_WCHAR 8511 ACE_ERROR((
LM_NOTICE,
"(%P|%t) NOTICE: DynamicDataImpl::serialized_size_i: Serialization of map types is not supported\n"));
8545 #ifdef DDS_HAS_WCHAR 8559 #ifdef DDS_HAS_WCHAR 8573 ACE_ERROR((
LM_NOTICE,
"(%P|%t) NOTICE: DynamicDataImpl::serialize_i: Serialization of map types is not supported\n"));
8598 bool operator<<(Serializer& ser, const KeyOnly<const XTypes::DynamicDataImpl>&
key)
8608 #endif // OPENDDS_SAFETY_PROFILE bool serialize_array(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
void set_default_bitmask_values(CollectionType &col) const
bool write_char_array(const ACE_CDR::Char *x, ACE_CDR::ULong length)
void serialized_size_bitmask_array_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool read_basic_in_single_map(ValueType &value, DDS::MemberId id)
Read a basic member from a containing type.
bool read_basic_member(ValueType &value, DDS::MemberId id)
DDS::ReturnCode_t set_int32_value(DDS::MemberId id, CORBA::Long value)
bool insert_discriminator(ACE_CDR::Long value)
bool serialize_nesting_basic_array_i(DCPS::Serializer &ser, CORBA::ULong length, SequenceType protoseq) const
bool serialized_size_nested_bitmask_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const TypeKind TK_SEQUENCE
void serialized_size_enum_array_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool serialize_primitive_array(DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong length) const
bool serialize_nesting_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
sequence< unsigned short > UInt16Seq
DDS::ReturnCode_t set_char_common(DDS::MemberId id, const FromCharT &value)
bool get_complex_from_union(DDS::DynamicData_ptr &value, DDS::MemberId id)
bool move_single_to_complex(const DataContainer::const_single_iterator &it, DynamicDataImpl *data)
bool serialized_size_nesting_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
void set_default_basic_value(CORBA::Long &value) const
sequence< long > Int32Seq
DDS::ReturnCode_t get_boolean_value(CORBA::Boolean &value, DDS::MemberId id)
SequenceValue(const DDS::Int32Seq &int32_seq)
char * get_string() const
sequence< wchar > WcharSeq
bool struct_has_explicit_keys(AST_Structure *node)
bool serialize_sequence_aggregated_member_xcdr2(DCPS::Serializer &ser, const_sequence_iterator it, TypeKind elem_tk, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility) const
const LogLevel::Value value
bool serialized_size_complex_aggregated_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, const_complex_iterator it, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t get_enumerator_value(DDS::Int32 &value, const char *name, DDS::DynamicType_ptr type)
bool serialized_size_generic_string_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool serialize_nesting_basic_array(DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong length) const
const TypeKind TK_STRING16
DDS::ReturnCode_t set_float32_value(DDS::MemberId id, CORBA::Float value)
DDS::ReturnCode_t get_float64_values(DDS::Float64Seq &value, DDS::MemberId id)
bool serialize_bitmask_array_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
const TypeKind TK_FLOAT128
DDS::ReturnCode_t set_uint16_value(DDS::MemberId id, CORBA::UShort value)
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
bool get_largest_single_index(CORBA::ULong &index) const
bool get_value_from_collection(ValueType &value, DDS::MemberId id)
DDS::ReturnCode_t get_member_type(DDS::DynamicType_var &member_type, DDS::DynamicType_ptr container_type, DDS::MemberId id)
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
void serialized_size_bitmask_sequence_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool insert_valid_discriminator(DDS::MemberDescriptor *memberSelected)
DDS::ReturnCode_t get_uint32_values(DDS::UInt32Seq &value, DDS::MemberId id)
DDS::ReturnCode_t get_simple_value_boolean(DCPS::Value &value, DDS::MemberId id) const
Object(TAO_Stub *p, CORBA::Boolean collocated=false, TAO_Abstract_ServantBase *servant=0, TAO_ORB_Core *orb_core=0)
bool serialized_size_complex_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
bool serialized_size(const Encoding &encoding, size_t &size, const KeyOnly< const XTypes::DynamicDataImpl > &key)
void wstring_free(WChar *const)
bool serialize_bitmask_array(DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length) const
bool write_discriminator_helper(CORBA::Long value, TypeKind treat_as)
bool serialize_bitmask_sequence_as_uint32s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
bool serialize_wstring_value(DCPS::Serializer &ser) const
bool write_ulonglong_array(const ACE_CDR::ULongLong *x, ACE_CDR::ULong length)
bool set_values_to_union(DDS::MemberId id, const SequenceType &value, TypeKind enum_or_bitmask, LBound lower, LBound upper)
DDS::ReturnCode_t set_float128_value(DDS::MemberId id, CORBA::LongDouble value)
bool serialize_union_xcdr2(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
sequence< long long > Int64Seq
DDS::ReturnCode_t set_complex_value(DDS::MemberId id, DDS::DynamicData_ptr value)
DDS::ReturnCode_t get_byte_value(CORBA::Octet &value, DDS::MemberId id)
ACE_CDR::LongLong LongLong
DDS::ReturnCode_t get_string_value(char *&value, DDS::MemberId id)
bool serialize_bitmask_array_as_uint64s(DCPS::Serializer &ser, CORBA::ULong length) const
char * string_alloc(ULong len)
DDS::ReturnCode_t get_simple_value_enum(DCPS::Value &value, DDS::MemberId id) const
DDS::ReturnCode_t set_uint32_values(DDS::MemberId id, const DDS::UInt32Seq &value)
void serialized_size_bitmask_array(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
bool is_type_supported(TypeKind tk, const char *func_name)
Verify that a given type is primitive or string or wstring.
OpenDDS_Dcps_Export void serialized_size_delimiter(const Encoding &encoding, size_t &size)
Add delimiter to the size of a serialized size if the encoding has them.
bool serialized_size_complex_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
bool write_parameter_id(const unsigned id, size_t size, bool must_understand=false)
DDS::ReturnCode_t set_uint32_value(DDS::MemberId id, CORBA::ULong value)
unsigned char uint8_[sizeof(ACE_OutputCDR::from_uint8)]
bool get_complex_from_struct(DDS::DynamicData_ptr &value, DDS::MemberId id)
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool serialized_size_union_xcdr2(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t get_float32_values(DDS::Float32Seq &value, DDS::MemberId id)
bool serialize_string_value(DCPS::Serializer &ser) const
bool set_complex_to_union(DDS::MemberId id, DDS::DynamicData_var value)
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
bool serialize_enum_value(DCPS::Serializer &ser) const
bool serialized_size_i(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool serialized_size_union(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t set_boolean_value(DDS::MemberId id, CORBA::Boolean value)
void serialized_size_enum_array_as_int16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool insert_sequence(DDS::MemberId id, const SequenceType &value)
DynamicDataImpl(DDS::DynamicType_ptr type)
void set_default_primitive_values(DDS::Int8Seq &collection) const
OpenDDS_Dcps_Export void primitive_serialized_size_octet(const Encoding &encoding, size_t &size, size_t count=1)
#define OPENDDS_ASSERT(C)
DDS::ReturnCode_t get_float128_value(CORBA::LongDouble &value, DDS::MemberId id)
DDS::ReturnCode_t clear_value_i(DDS::MemberId id, const DDS::DynamicType_var &member_type)
DDS::TypeDescriptor_var type_desc_
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialize_generic_string_array(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialize_nesting_basic_sequence(DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong size, CORBA::ULong bound) const
DDS::ReturnCode_t get_uint64_value_impl(CORBA::ULongLong &value, DDS::MemberId id)
bool serialize_primitive_value(DCPS::Serializer &ser, PrimitiveType default_value) const
bool set_default_enum_values(CollectionType &collection, const DDS::DynamicType_var &enum_type) const
DDS::ReturnCode_t set_float64_values(DDS::MemberId id, const DDS::Float64Seq &value)
void serialized_size_bitmask_array_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool reconstruct_enum_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type, const WrapElementType &elem_tag) const
DDS::ReturnCode_t get_int8_values(DDS::Int8Seq &value, DDS::MemberId id)
bool serialize_sequence_struct_member_xcdr2(DCPS::Serializer &ser, DDS::MemberId id, TypeKind elem_tk, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t set_boolean_values(DDS::MemberId id, const DDS::BooleanSeq &value)
DDS::ReturnCode_t set_char8_values(DDS::MemberId id, const DDS::CharSeq &value)
bool serialized_size_sequence_value(const DCPS::Encoding &encoding, size_t &size, const SequenceValue &sv) const
DDS::ReturnCode_t get_uint16_value(CORBA::UShort &value, DDS::MemberId id)
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
bool is_default_member_selected(CORBA::Long disc_val, DDS::MemberId default_id) const
DDS::ReturnCode_t set_string_value(DDS::MemberId id, const char *value)
const_iterator begin() const
void add(T lower, T upper)
CORBA::LongDouble float128_
DDS::ReturnCode_t set_int16_value(DDS::MemberId id, CORBA::Short value)
void serialized_size_enum_array_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool write_longlong_array(const ACE_CDR::LongLong *x, ACE_CDR::ULong length)
DDS::ReturnCode_t set_single_value(DDS::MemberId id, const ValueType &value, TypeKind enum_or_bitmask=TK_NONE, LBound lower=0, LBound upper=0)
DDS::ReturnCode_t get_simple_value(DCPS::Value &value, DDS::MemberId id)
bool serialize_nested_enum_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
bool is_primitive(TypeKind tk)
bool serialized_size_union_xcdr1(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
void serialized_size_sequence_aggregated_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it, TypeKind elem_tk, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total) const
bool serialize_bitmask_array_as_uint8s(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialized_size_sequence_struct_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, TypeKind elem_tk, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t get_char_common(CharT &value, DDS::MemberId id)
bool serialized_size_nesting_bitmask_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool serialize_enum_array(DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
bool serialize_bitmask_value(DCPS::Serializer &ser) const
DDS::ReturnCode_t get_single_value(ValueType &value, DDS::MemberId id)
bool write_wchar_array(const ACE_CDR::WChar *x, ACE_CDR::ULong length)
DDS::ReturnCode_t set_uint64_values(DDS::MemberId id, const DDS::UInt64Seq &value)
const size_t uint32_cdr_size
bool serialized_size_nesting_basic_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
bool validate_member_id_collection(DDS::MemberId id, TypeKind collection_tk) const
void serialized_size_primitive_sequence(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk, CORBA::ULong length) const
void move_sequence_helper(const DataContainer::const_sequence_iterator &it, DynamicDataImpl *data)
DDS::ReturnCode_t set_float32_values(DDS::MemberId id, const DDS::Float32Seq &value)
void serialized_size_enum_array(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
size_t strlen(const char *s)
bool get_value_from_struct(ValueType &value, DDS::MemberId id)
bool serialize_structure_xcdr2(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t set_wstring_values(DDS::MemberId id, const DDS::WstringSeq &value)
bool serialize_sequence(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
void set_default_bitmask_value(ACE_OutputCDR::from_uint8 &value) const
CORBA::ULong get_sequence_size() const
bool serialize_enum_sequence_as_int8s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
ACE_CDR::ULongLong ULongLong
bool cast_to_discriminator_value(CORBA::Long &disc_value, const ACE_OutputCDR::from_boolean &value) const
bool serialize_enum_array_as_int16s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
bool get_largest_sequence_index(CORBA::ULong &index) const
MemberId get_member_id_at_index(ACE_CDR::ULong index)
sequence< short > Int16Seq
DDS::ReturnCode_t set_int64_value(DDS::MemberId id, CORBA::LongLong value)
bool write_octet_array(const ACE_CDR::Octet *x, ACE_CDR::ULong length)
bool serialize_basic_struct_member_xcdr2(DCPS::Serializer &ser, DDS::MemberId id, const DDS::DynamicType_var &member_type, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility) const
bool serialize_bitmask_sequence_as_uint8s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
DDS::ReturnCode_t get_char8_value(CORBA::Char &value, DDS::MemberId id)
public UnionCaseLabelSeq label
DDS::ReturnCode_t get_int64_value_impl(CORBA::LongLong &value, DDS::MemberId id)
bool is_sequence_like(TypeKind tk)
bool write_short_array(const ACE_CDR::Short *x, ACE_CDR::ULong length)
bool serialize_basic_sequence(DCPS::Serializer &ser, const_sequence_iterator it) const
bool get_complex_from_aggregated(DDS::DynamicData_var &value, DDS::MemberId id, FoundStatus &found_status)
DDS::ReturnCode_t get_int32_values(DDS::Int32Seq &value, DDS::MemberId id)
bool serialize_bitmask_sequence_as_uint64s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
DDS::Boolean equals(DDS::DynamicData_ptr other)
bool insert_single(DDS::MemberId id, const ACE_OutputCDR::from_int8 &value)
char * string_dup(const char *)
DDS::ReturnCode_t get_int64_value(DDS::Int64 &value, DDS::MemberId id)
OpenDDS_Dcps_Export void primitive_serialized_size_char(const Encoding &encoding, size_t &size, size_t count=1)
bool write_discriminator(CORBA::Long value)
DDS::ReturnCode_t get_char16_values(DDS::WcharSeq &value, DDS::MemberId id)
DDS::ReturnCode_t set_int8_values(DDS::MemberId id, const DDS::Int8Seq &value)
DDS::DynamicData_ptr clone()
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
bool write_long_array(const ACE_CDR::Long *x, ACE_CDR::ULong length)
sequence< unsigned long long > UInt64Seq
sequence< uint8 > UInt8Seq
bool check_index_from_id(TypeKind tk, DDS::MemberId id, CORBA::ULong bound) const
sequence< boolean > BooleanSeq
DDS::ReturnCode_t set_int32_values(DDS::MemberId id, const DDS::Int32Seq &value)
bool set_values_to_struct(DDS::MemberId id, const SequenceType &value, TypeKind enum_or_bitmask, LBound lower, LBound upper)
Class to serialize and deserialize data for DDS.
bool serialized_size_wstring(const DCPS::Encoding &encoding, size_t &size) const
bool serialized_size_structure(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
DDS::ReturnCode_t get_int16_values(DDS::Int16Seq &value, DDS::MemberId id)
const TypeKind TK_BOOLEAN
const char * typekind_to_string(TypeKind tk)
DDS::ReturnCode_t get_enum_value(DDS::Int32 &value, DDS::DynamicType_ptr enum_type, DDS::DynamicData_ptr src, DDS::MemberId id)
static bool has_explicit_keys(DDS::DynamicType *dt)
sequence< uint8 > UInt8Seq
bool move_single_to_complex_i(const DataContainer::const_single_iterator &it, DynamicDataImpl *data, const TypeKind treat_as)
bool serialize_generic_string_collection(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
bool serialize_nesting_enum_array(DCPS::Serializer &ser, CORBA::ULong length) const
OpenDDS_Dcps_Export void primitive_serialized_size_wchar(const Encoding &encoding, size_t &size, size_t count=1)
bool operator<<(Serializer &ser, const KeyOnly< const XTypes::DynamicDataImpl > &key)
bool serialize_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound, const DDS::DynamicType_var &enum_type) const
sequence< octet > ByteSeq
bool move_sequence_to_complex(const DataContainer::const_sequence_iterator &it, DynamicDataImpl *data)
const TypeKind TK_BITMASK
bool reconstruct_string_value(CORBA::Char *str) const
void serialized_size_bitmask_array_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
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)
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
DDS::ReturnCode_t set_string_values(DDS::MemberId id, const DDS::StringSeq &value)
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
bool serialize_enum_array_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumarr) const
bool serialized_size_generic_string_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
SingleValue(CORBA::Long int32)
void erase_member(DDS::MemberId id)
void serialized_size_bitmask_array_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool serialized_size_nesting_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool serialize_nesting_bitmask_array(DCPS::Serializer &ser, CORBA::ULong length) const
WChar * wstring_dup(const WChar *const)
bool serialize_bitmask_default_value(DCPS::Serializer &ser, const DDS::DynamicType_var &bitmask_type) const
bool serialized_size_bitmask(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &bitmask_type) const
bool get_index_to_id_from_complex(IndexToIdMap &index_to_id, CORBA::ULong bound) const
sequence< unsigned long > UInt32Seq
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
bool get_complex_from_collection(DDS::DynamicData_ptr &value, DDS::MemberId id)
bool get_value_from_self(ValueType &value, DDS::MemberId id)
bool check_seqmem_in_struct_and_union(DDS::MemberId id, TypeKind enum_or_bitmask, LBound lower, LBound upper) const
WChar * wstring_alloc(ULong len)
void serialized_size_bitmask_sequence_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool serialize_i(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
bool serialize_generic_string_sequence(DCPS::Serializer &ser, CORBA::ULong length, CORBA::ULong bound) const
DDS::ReturnCode_t get_simple_value_string(DCPS::Value &value, DDS::MemberId id) const
sequence< long double > Float128Seq
DDS::ReturnCode_t set_sequence_values(DDS::MemberId id, const SequenceType &value, TypeKind enum_or_bitmask=TK_NONE, LBound lower=0, LBound upper=0)
unsigned char char8_[sizeof(ACE_OutputCDR::from_char)]
DDS::ReturnCode_t get_uint16_values(DDS::UInt16Seq &value, DDS::MemberId id)
const_iterator begin() const
DDS::ReturnCode_t set_uint16_values(DDS::MemberId id, const DDS::UInt16Seq &value)
DDS::UInt32 bound_total(DDS::TypeDescriptor_var descriptor)
bool serialize_nesting_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
static bool exclude_member(DCPS::Sample::Extent ext, bool is_key, bool has_explicit_keys)
bool get_value_from_union(ValueType &value, DDS::MemberId id)
bool serialized_size_basic_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk, const_single_iterator it) const
const ACE_CDR::ULong MEMBER_ID_INVALID
DDS::DynamicType_var type_
The actual (i.e., non-alias) DynamicType of the associated type.
void serialized_size_enum_sequence_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
sequence< float > Float32Seq
bool serialized_size_basic_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
bool serialized_size_complex_aggregated_member_xcdr2_default(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &member_type, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total, DCPS::Sample::Extent ext) const
bool serialize_primitive_sequence(DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong size, CORBA::ULong bound) const
unsigned char boolean_[sizeof(ACE_OutputCDR::from_boolean)]
DDS::ReturnCode_t clear_nonkey_values()
character_type *& inout(void)
bool serialize_enum_default_value(DCPS::Serializer &ser, const DDS::DynamicType_var &enum_type) const
DDS::ReturnCode_t get_wstring_value(CORBA::WChar *&value, DDS::MemberId id)
bool serialized_size_selected_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId selected_id, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total) const
bool read_basic_value(ACE_OutputCDR::from_int8 &value)
Group of functions to read a basic value represented by this DynamicData instance.
DDS::ReturnCode_t get_uint64_values(DDS::UInt64Seq &value, DDS::MemberId id)
bool set_value_to_collection(DDS::MemberId id, const ElementType &value, TypeKind coll_tk, TypeKind enum_or_bitmask=TK_NONE, LBound lower=0, LBound upper=0)
bool serialize_discriminator_member_xcdr2(DCPS::Serializer &ser, CORBA::Long value, const DDS::DynamicType_var &disc_type, DDS::ExtensibilityKind extensibility) const
bool write_boolean_array(const ACE_CDR::Boolean *x, ACE_CDR::ULong length)
bool get_value_from_bitmask(ValueType &value, DDS::MemberId id)
bool write_double_array(const ACE_CDR::Double *x, ACE_CDR::ULong length)
DDS::ReturnCode_t get_int16_value(CORBA::Short &value, DDS::MemberId id)
bool serialized_size_complex_member(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
const TypeKind TK_STRUCTURE
DDS::ReturnCode_t get_int8_value(CORBA::Int8 &value, DDS::MemberId id)
#define SEQUENCE_VALUE_DESTRUCT(T)
DDS::ReturnCode_t set_uint8_values(DDS::MemberId id, const DDS::UInt8Seq &value)
bool serialize_complex_aggregated_member_xcdr2(DCPS::Serializer &ser, const_complex_iterator it, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility, DCPS::Sample::Extent ext) const
#define SINGLE_VALUE_DESTRUCT(T)
bool serialize_union(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t get_uint8_values(DDS::UInt8Seq &value, DDS::MemberId id)
const TypeKind TK_FLOAT32
DDS::ReturnCode_t get_complex_value(DDS::DynamicData_ptr &value, DDS::MemberId id)
DDS::ReturnCode_t get_float128_values(DDS::Float128Seq &value, DDS::MemberId id)
character_type * _retn(void)
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
bool serialize_basic_member_default_value(DCPS::Serializer &ser, TypeKind member_tk) const
const TypeKind TK_STRING8
DDS::ReturnCode_t get_char8_values(DDS::CharSeq &value, DDS::MemberId id)
DDS::ReturnCode_t set_descriptor(MemberId id, DDS::MemberDescriptor *value)
bool set_primitive_values(CollectionType &collection, CORBA::ULong bound, const ElementType &elem_tag) const
bool get_boolean_from_bitmask(CORBA::ULong index, CORBA::Boolean &value)
DDS::ReturnCode_t clear_all_values()
bool set_values_to_sequence(DDS::MemberId id, const SequenceType &value, TypeKind enum_or_bitmask, LBound lower, LBound upper)
DDS::ReturnCode_t get_uint8_value(CORBA::UInt8 &value, DDS::MemberId id)
bool serialize_selected_member_xcdr2(DCPS::Serializer &ser, DDS::MemberId selected_id, DDS::ExtensibilityKind extensibility) const
bool serialize_nesting_basic_sequence_i(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, SequenceType protoseq) const
XcdrVersion xcdr_version() const
DDS::DynamicType_ptr type()
bool serialize_structure_xcdr1(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t set_byte_values(DDS::MemberId id, const DDS::ByteSeq &value)
bool get_discriminator_value(CORBA::Long &value, const_single_iterator single_it, const_complex_iterator complex_it, const DDS::DynamicType_var &disc_type) const
DDS::ReturnCode_t set_byte_value(DDS::MemberId id, CORBA::Octet value)
bool serialize_bitmask_array_as_uint16s(DCPS::Serializer &ser, CORBA::ULong length) const
bool set_complex_to_collection(DDS::MemberId id, DDS::DynamicData_var value, TypeKind tk)
bool get_largest_index_basic_sequence(CORBA::ULong &index) const
bool serialize_complex_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t get_wstring_values(DDS::WstringSeq &value, DDS::MemberId id)
sequence< string > StringSeq
bool serialize_complex_aggregated_member_xcdr2_default(DCPS::Serializer &ser, DDS::MemberId id, const DDS::DynamicType_var &member_type, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility, DCPS::Sample::Extent ext) const
bool write_ulong_array(const ACE_CDR::ULong *x, ACE_CDR::ULong length)
DDS::DynamicData * interface_from_this() const
OpenDDS_Dcps_Export LogLevel log_level
unsigned char byte_[sizeof(ACE_OutputCDR::from_octet)]
bool serialized_size_nesting_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
bool serialize_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound) const
sequence< wstring > WstringSeq
bool check_seqmem_in_sequence_and_array(DDS::MemberId id, CORBA::ULong bound, TypeKind enum_or_bitmask, LBound lower, LBound upper) const
DDS::ReturnCode_t set_char8_value(DDS::MemberId id, CORBA::Char value)
const size_t char16_cdr_size
static bool is_valid_discriminator_type(TypeKind tk)
bool get_largest_index_basic(CORBA::ULong &index) const
void * memset(void *s, int c, size_t len)
DDS::ReturnCode_t set_int16_values(DDS::MemberId id, const DDS::Int16Seq &value)
DDS::ReturnCode_t set_uint64_value(DDS::MemberId id, CORBA::ULongLong value)
bool reconstruct_primitive_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const ElementType &elem_tag) const
bool serialized_size_sequence(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool reconstruct_wstring_value(CORBA::WChar *wstr) const
DDS::ReturnCode_t enum_bound(DDS::DynamicType_ptr enum_type, DDS::TypeKind &bound_kind)
Char * string_dup(const Char *str)
void serialized_size_bitmask_sequence_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
ACE_CDR::ULong get_item_count()
public boolean is_default_label
DDS::ReturnCode_t set_int8_value(DDS::MemberId id, CORBA::Int8 value)
bool set_default_discriminator_value(CORBA::Long &value, const DDS::DynamicType_var &disc_type) const
bool serialize_sequence_value(DCPS::Serializer &ser, const SequenceValue &sv) const
bool serialize_complex_sequence_i(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
bool get_value_from_enum(ValueType &value, DDS::MemberId id)
const char * retcode_to_string(DDS::ReturnCode_t value)
DDS::ReturnCode_t clear_value(DDS::MemberId id)
unsigned char int8_[sizeof(ACE_OutputCDR::from_int8)]
bool serialize_complex_array(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
const Encoding & encoding() const
const ReturnCode_t RETCODE_ERROR
bool validate_discriminator(CORBA::Long disc_val, const DDS::MemberDescriptor_var &md) const
bool serialize_structure(DCPS::Serializer &ser, DCPS::Sample::Extent) const
#define SEQUENCE_VALUE_GETTERS(T)
bool get_largest_complex_index(CORBA::ULong &index) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
bool serialized_size_generic_string_collection(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const TypeKind TK_ANNOTATION
void serialized_size_bitmask_sequence_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
DDS::ReturnCode_t get_enumerator_name(DDS::String8_var &name, DDS::Int32 value, DDS::DynamicType_ptr type)
bool serialize_single_aggregated_member_xcdr2(DCPS::Serializer &ser, const_single_iterator it, const DDS::DynamicType_var &member_type, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility) const
bool serialized_size_nested_enum_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool set_value_to_struct(DDS::MemberId id, const MemberType &value)
static DCPS::Sample::Extent nested(DCPS::Sample::Extent ext)
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t get_uint64_value(DDS::UInt64 &value, DDS::MemberId id)
DDS::ReturnCode_t set_int64_values(DDS::MemberId id, const DDS::Int64Seq &value)
const ReturnCode_t RETCODE_UNSUPPORTED
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
bool write_ushort_array(const ACE_CDR::UShort *x, ACE_CDR::ULong length)
DDS::ReturnCode_t set_enum_value(DDS::DynamicType_ptr enum_type, DDS::DynamicData_ptr dest, DDS::MemberId id, DDS::Int32 value)
bool discriminator_selects_no_member(DDS::Int32 disc) const
sequence< boolean > BooleanSeq
DDS::MemberId find_selected_member() const
bool read_basic_in_complex_map(ValueType &value, DDS::MemberId id)
DDS::ReturnCode_t get_byte_values(DDS::ByteSeq &value, DDS::MemberId id)
bool serialize_bitmask_array_as_uint32s(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialize_bitmask_sequence_as_uint16s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
bool serialize_enum_array_as_int8s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
bool set_value_to_union(DDS::MemberId id, const MemberType &value, TypeKind enum_or_bitmask=TK_NONE, LBound lower=0, LBound upper=0)
void cast_to_enum_value(ACE_OutputCDR::from_int8 &dst, CORBA::Long src) const
bool serialized_size_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
bool serialize_enum_sequence_as_int16s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
DDS::ReturnCode_t get_float64_value(CORBA::Double &value, DDS::MemberId id)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_enum_sequence_as_int16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool set_complex_to_struct(DDS::MemberId id, DDS::DynamicData_var value)
bool serialized_size_structure_xcdr2(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool serialize_enum_sequence_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const
DDS::ReturnCode_t get_char16_value(CORBA::WChar &value, DDS::MemberId id)
bool serialized_size_nesting_enum_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
void serialized_size_primitive_array(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk, CORBA::ULong length) const
DDS::ReturnCode_t get_boolean_values(DDS::BooleanSeq &value, DDS::MemberId id)
DDS::ReturnCode_t set_float64_value(DDS::MemberId id, CORBA::Double value)
sequence< double > Float64Seq
bool serialize_enum_sequence_as_int32s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
DDS::ReturnCode_t bitmask_bound(DDS::DynamicType_ptr type, DDS::TypeKind &bound_kind)
DDS::ReturnCode_t get_int32_value(CORBA::Long &value, DDS::MemberId id)
bool write_delimiter(size_t size)
bool serialize_enum_array_as_int32s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
CORBA::WChar * get_wstring() const
DDS::ReturnCode_t set_uint8_value(DDS::MemberId id, CORBA::UInt8 value)
The Internal API and Implementation of OpenDDS.
void serialized_size_sequence_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk) const
bool serialized_size_basic_struct_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, const DDS::DynamicType_var &member_type, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total) const
bool insert_complex(DDS::MemberId id, const DDS::DynamicData_var &value)
bool serialize_union_xcdr1(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
bool enum_string_helper(char *&strInOut, MemberId id)
#define SEQUENCE_VALUE_PLACEMENT_NEW(T, N)
DDS::ReturnCode_t get_selected_union_branch(DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const
DDS::ReturnCode_t get_simple_value_primitive(DCPS::Value &value, DDS::MemberId id) const
bool serialized_size_structure_xcdr1(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
OpenDDS_Dcps_Export void serialized_size_list_end_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
ACE_CDR::ULong length() const
void serialized_size_string_common(const DCPS::Encoding &encoding, size_t &size, const char *str) const
bool serialized_size_nested_basic_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
const_iterator end() const
DDS::ReturnCode_t set_float128_values(DDS::MemberId id, const DDS::Float128Seq &value)
bool read_discriminator(CORBA::Long &disc_val) const
DDS::ReturnCode_t get_simple_value_char(DCPS::Value &value, DDS::MemberId id) const
const TypeKind TK_FLOAT64
bool serialize_nested_bitmask_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
bool write_float_array(const ACE_CDR::Float *x, ACE_CDR::ULong length)
bool serialized_size_array(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
DDS::ReturnCode_t set_char16_value(DDS::MemberId id, CORBA::WChar value)
bool set_default_enum_value(const DDS::DynamicType_var &dt, CORBA::Long &value) const
DDS::ReturnCode_t get_int64_values(DDS::Int64Seq &value, DDS::MemberId id)
DDS::ReturnCode_t set_char16_values(DDS::MemberId id, const DDS::WcharSeq &value)
DDS::ReturnCode_t get_float32_value(CORBA::Float &value, DDS::MemberId id)
sequence< string > StringSeq
extensibility(MUTABLE) struct TypeLookup_getTypes_In
void serialized_size_enum_sequence_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
bool serialized_size_discriminator_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &disc_type, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total) const
bool serialized_size_single_aggregated_member_xcdr2(const DCPS::Encoding &encoding, size_t &size, const_single_iterator it, const DDS::DynamicType_var &member_type, bool optional, DDS::ExtensibilityKind extensibility, size_t &mutable_running_total) const
bool is_basic(TypeKind tk)
bool serialized_size_string(const DCPS::Encoding &encoding, size_t &size) const
DDS::ReturnCode_t get_string_values(DDS::StringSeq &value, DDS::MemberId id)
bool serialize_sequence_member_default_value(DCPS::Serializer &ser, TypeKind elem_tk) const
bool set_values_to_array(DDS::MemberId id, const SequenceType &value, TypeKind enum_or_bitmask, LBound lower, LBound upper)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)
bool serialize_nested_basic_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, SequenceType protoseq) const
bool write_longdouble_array(const ACE_CDR::LongDouble *x, ACE_CDR::ULong length)
DDS::ReturnCode_t get_uint32_value(CORBA::ULong &value, DDS::MemberId)
const ReturnCode_t RETCODE_BAD_PARAMETER
DDS::ReturnCode_t set_wstring_value(DDS::MemberId id, const CORBA::WChar *value)
MapType::const_iterator const_iterator