OpenDDS  Snapshot(2023/04/28-20:55)
Public Types | Public Member Functions | Public Attributes | List of all members
OpenDDS::XTypes::DynamicDataImpl::DataContainer Struct Reference
Collaboration diagram for OpenDDS::XTypes::DynamicDataImpl::DataContainer:
Collaboration graph
[legend]

Public Types

typedef OPENDDS_MAP(DDS::MemberId, SingleValue) typedef OPENDDS_MAP(DDS::MemberId, SequenceValue) typedef OPENDDS_MAP(DDS::MemberId, DDS::DynamicData_var) DataContainer(const DDS::DynamicType_var &type, const DynamicDataImpl *data)
 

Public Member Functions

 DataContainer (const DataContainer &other, const DynamicDataImpl *data)
 
void clear ()
 
bool get_largest_single_index (CORBA::ULong &index) const
 
bool get_largest_sequence_index (CORBA::ULong &index) const
 
bool get_largest_complex_index (CORBA::ULong &index) const
 
bool get_largest_index_basic (CORBA::ULong &index) const
 
bool get_largest_index_basic_sequence (CORBA::ULong &index) const
 
bool serialize_single_value (DCPS::Serializer &ser, const SingleValue &sv) const
 
template<typename PrimitiveType >
bool serialize_primitive_value (DCPS::Serializer &ser, PrimitiveType default_value) const
 
bool serialized_size_enum (const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
 
bool serialize_enum_default_value (DCPS::Serializer &ser, const DDS::DynamicType_var &enum_type) const
 
bool serialize_enum_value (DCPS::Serializer &ser) const
 
bool serialized_size_bitmask (const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &bitmask_type) const
 
bool serialize_bitmask_default_value (DCPS::Serializer &ser, const DDS::DynamicType_var &bitmask_type) const
 
bool serialize_bitmask_value (DCPS::Serializer &ser) const
 
bool reconstruct_string_value (CORBA::Char *str) const
 
bool serialized_size_string (const DCPS::Encoding &encoding, size_t &size) const
 
bool serialize_string_value (DCPS::Serializer &ser) const
 
bool reconstruct_wstring_value (CORBA::WChar *wstr) const
 
bool serialized_size_wstring (const DCPS::Encoding &encoding, size_t &size) const
 
bool serialize_wstring_value (DCPS::Serializer &ser) const
 
void serialized_size_primitive_sequence (const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk, CORBA::ULong length) const
 
void set_default_basic_value (CORBA::Long &value) const
 
void set_default_basic_value (CORBA::ULong &value) const
 
void set_default_basic_value (ACE_OutputCDR::from_int8 &value) const
 
void set_default_basic_value (ACE_OutputCDR::from_uint8 &value) const
 
void set_default_basic_value (CORBA::Short &value) const
 
void set_default_basic_value (CORBA::UShort &value) const
 
void set_default_basic_value (CORBA::LongLong &value) const
 
void set_default_basic_value (CORBA::ULongLong &value) const
 
void set_default_basic_value (CORBA::Float &value) const
 
void set_default_basic_value (CORBA::Double &value) const
 
void set_default_basic_value (CORBA::LongDouble &value) const
 
void set_default_basic_value (ACE_OutputCDR::from_char &value) const
 
void set_default_basic_value (ACE_OutputCDR::from_octet &value) const
 
void set_default_basic_value (const char *&value) const
 
void set_default_basic_value (char *&value) const
 
void set_default_basic_value (ACE_OutputCDR::from_boolean &value) const
 
bool set_default_enum_value (const DDS::DynamicType_var &dt, CORBA::Long &value) const
 
void set_default_bitmask_value (ACE_OutputCDR::from_uint8 &value) const
 
void set_default_bitmask_value (CORBA::UShort &value) const
 
void set_default_bitmask_value (CORBA::ULong &value) const
 
void set_default_bitmask_value (CORBA::ULongLong &value) const
 
template<typename Type >
void set_default_bitmask_value (Type &value) const
 
void set_default_primitive_values (DDS::Int8Seq &collection) const
 
void set_default_primitive_values (DDS::UInt8Seq &collection) const
 
void set_default_primitive_values (DDS::CharSeq &collection) const
 
void set_default_primitive_values (DDS::ByteSeq &collection) const
 
void set_default_primitive_values (DDS::BooleanSeq &collection) const
 
template<typename CollectionType >
void set_default_primitive_values (CollectionType &collection) const
 
template<typename ElementType , typename CollectionType >
bool set_primitive_values (CollectionType &collection, CORBA::ULong bound, const ElementType &elem_tag) const
 
template<typename ElementType , typename CollectionType >
bool reconstruct_primitive_collection (CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const ElementType &elem_tag) const
 
bool serialize_primitive_sequence (DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong size, CORBA::ULong bound) const
 
void serialized_size_string_common (const DCPS::Encoding &encoding, size_t &size, const char *str) const
 
void serialized_size_string_common (const DCPS::Encoding &encoding, size_t &size, const SingleValue &sv) const
 
template<typename StringType >
bool serialized_size_generic_string_collection (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
template<typename StringType >
bool serialized_size_generic_string_sequence (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
template<typename StringType >
bool serialize_generic_string_collection (DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
 
template<typename StringType >
bool serialize_generic_string_sequence (DCPS::Serializer &ser, CORBA::ULong length, CORBA::ULong bound) const
 
template<typename ElementType , typename CollectionType >
bool set_default_enum_values (CollectionType &collection, const DDS::DynamicType_var &enum_type) const
 
template<typename ElementType , typename WrapElementType , typename CollectionType >
bool reconstruct_enum_collection (CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type, const WrapElementType &elem_tag) const
 
void serialized_size_enum_sequence_as_int8s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_enum_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
 
bool serialize_enum_sequence_as_ints_i (DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const
 
bool serialize_enum_sequence_as_int8s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_sequence_as_int16s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_enum_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::Int16Seq &seq) const
 
bool serialize_enum_sequence_as_ints_i (DCPS::Serializer &ser, const DDS::Int16Seq &enumseq) const
 
bool serialize_enum_sequence_as_int16s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_sequence_as_int32s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_enum_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::Int32Seq &seq) const
 
bool serialize_enum_sequence_as_ints_i (DCPS::Serializer &ser, const DDS::Int32Seq &enumseq) const
 
bool serialize_enum_sequence_as_int32s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_sequence (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
 
bool serialize_enum_sequence (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound, const DDS::DynamicType_var &enum_type) const
 
template<typename CollectionType >
void set_default_bitmask_values (CollectionType &col) const
 
template<typename WrapElementType , typename CollectionType >
bool reconstruct_bitmask_collection (CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
 
void serialized_size_bitmask_sequence_as_uint8s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
 
bool serialize_bitmask_sequence_as_uints_i (DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
 
bool serialize_bitmask_sequence_as_uint8s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
void serialized_size_bitmask_sequence_as_uint16s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::UInt16Seq &seq) const
 
bool serialize_bitmask_sequence_as_uints_i (DCPS::Serializer &ser, const DDS::UInt16Seq &bitmask_seq) const
 
bool serialize_bitmask_sequence_as_uint16s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
void serialized_size_bitmask_sequence_as_uint32s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::UInt32Seq &seq) const
 
bool serialize_bitmask_sequence_as_uints_i (DCPS::Serializer &ser, const DDS::UInt32Seq &bitmask_seq) const
 
bool serialize_bitmask_sequence_as_uint32s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
void serialized_size_bitmask_sequence_as_uint64s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
void serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const DDS::UInt64Seq &seq) const
 
bool serialize_bitmask_sequence_as_uints_i (DCPS::Serializer &ser, const DDS::UInt64Seq &bitmask_seq) const
 
bool serialize_bitmask_sequence_as_uint64s (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
void serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
 
bool serialize_bitmask_sequence (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound) const
 
bool serialized_size_sequence_value (const DCPS::Encoding &encoding, size_t &size, const SequenceValue &sv) const
 
bool serialize_sequence_value (DCPS::Serializer &ser, const SequenceValue &sv) const
 
bool get_index_to_id_map (IndexToIdMap &index_to_id, CORBA::ULong bound) const
 
bool serialized_size_complex_member_i (const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
 
template<typename SequenceType >
bool serialized_size_nested_basic_sequences (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
 
template<typename SequenceType >
bool serialized_size_nesting_basic_sequence (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
 
bool serialize_complex_member_i (DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
 
template<typename SequenceType >
bool serialize_nested_basic_sequences (DCPS::Serializer &ser, const IndexToIdMap &index_to_id, SequenceType protoseq) const
 
template<typename SequenceType >
bool serialize_nesting_basic_sequence_i (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, SequenceType protoseq) const
 
bool serialized_size_nesting_basic_sequence (const DCPS::Encoding &encoding, size_t &size, TypeKind nested_elem_tk, const IndexToIdMap &index_to_id) const
 
bool serialize_nesting_basic_sequence (DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong size, CORBA::ULong bound) const
 
bool serialized_size_nested_enum_sequences (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
bool serialized_size_nesting_enum_sequence (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
bool serialize_nested_enum_sequences (DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
 
bool serialize_nesting_enum_sequence (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
bool serialized_size_nested_bitmask_sequences (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
bool serialized_size_nesting_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
bool serialize_nested_bitmask_sequences (DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
 
bool serialize_nesting_bitmask_sequence (DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
 
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
 
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 serialize_complex_sequence_i (DCPS::Serializer &ser, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) 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
 
bool get_index_to_id_from_complex (IndexToIdMap &index_to_id, CORBA::ULong bound) const
 
bool serialized_size_sequence (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_sequence (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
void serialized_size_primitive_array (const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk, CORBA::ULong length) const
 
bool serialize_primitive_array (DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong length) const
 
template<typename StringType >
bool serialized_size_generic_string_array (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
template<typename StringType >
bool serialize_generic_string_array (DCPS::Serializer &ser, CORBA::ULong length) const
 
void serialized_size_enum_array_as_int8s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_enum_array_as_ints_i (DCPS::Serializer &ser, const DDS::Int8Seq &enumarr) const
 
bool serialize_enum_array_as_int8s (DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_array_as_int16s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_enum_array_as_ints_i (DCPS::Serializer &ser, const DDS::Int16Seq &enumarr) const
 
bool serialize_enum_array_as_int16s (DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_array_as_int32s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_enum_array_as_ints_i (DCPS::Serializer &ser, const DDS::Int32Seq &enumarr) const
 
bool serialize_enum_array_as_int32s (DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_enum_array (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
 
bool serialize_enum_array (DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
 
void serialized_size_bitmask_array_as_uint8s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_bitmask_array_as_uints_i (DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
 
bool serialize_bitmask_array_as_uint8s (DCPS::Serializer &ser, CORBA::ULong length) const
 
void serialized_size_bitmask_array_as_uint16s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_bitmask_array_as_uints_i (DCPS::Serializer &ser, const DDS::UInt16Seq &bitmask_arr) const
 
bool serialize_bitmask_array_as_uint16s (DCPS::Serializer &ser, CORBA::ULong length) const
 
void serialized_size_bitmask_array_as_uint32s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_bitmask_array_as_uints_i (DCPS::Serializer &ser, const DDS::UInt32Seq &bitmask_arr) const
 
bool serialize_bitmask_array_as_uint32s (DCPS::Serializer &ser, CORBA::ULong length) const
 
void serialized_size_bitmask_array_as_uint64s (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
 
bool serialize_bitmask_array_as_uints_i (DCPS::Serializer &ser, const DDS::UInt64Seq &bitmask_arr) const
 
bool serialize_bitmask_array_as_uint64s (DCPS::Serializer &ser, CORBA::ULong length) const
 
void serialized_size_bitmask_array (const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
 
bool serialize_bitmask_array (DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length) const
 
template<typename SequenceType >
bool serialized_size_nesting_basic_array (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
 
template<typename SequenceType >
bool serialize_nesting_basic_array_i (DCPS::Serializer &ser, CORBA::ULong length, SequenceType protoseq) const
 
bool serialized_size_nesting_basic_array (const DCPS::Encoding &encoding, size_t &size, TypeKind nested_elem_tk, const IndexToIdMap &index_to_id) const
 
bool serialize_nesting_basic_array (DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong length) const
 
bool serialized_size_nesting_enum_array (const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
 
bool serialize_nesting_enum_array (DCPS::Serializer &ser, CORBA::ULong length) const
 
bool serialized_size_nesting_bitmask_array (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
 
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 serialize_complex_array (DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
 
bool serialized_size_array (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_array (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
bool serialized_size_primitive_member (const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
 
bool serialized_size_basic_member_default_value (const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
 
bool serialized_size_basic_member (const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk, const_single_iterator it) const
 
bool serialize_basic_member_default_value (DCPS::Serializer &ser, TypeKind member_tk) 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 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_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_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 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
 
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
 
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 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
 
void serialized_size_sequence_member_default_value (const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk) const
 
bool serialize_sequence_member_default_value (DCPS::Serializer &ser, TypeKind elem_tk) const
 
bool serialized_size_basic_sequence (const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
 
bool serialize_basic_sequence (DCPS::Serializer &ser, const_sequence_iterator it) const
 
bool serialized_size_enum_sequence (const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
 
bool serialize_enum_sequence (DCPS::Serializer &ser, const_sequence_iterator it) const
 
bool serialized_size_bitmask_sequence (const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
 
bool serialize_bitmask_sequence (DCPS::Serializer &ser, const_sequence_iterator it) 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_sequence_aggregated_member_xcdr2 (DCPS::Serializer &ser, const_sequence_iterator it, TypeKind elem_tk, bool optional, bool must_understand, DDS::ExtensibilityKind extensibility) 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
 
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
 
bool serialized_size_structure_xcdr2 (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_structure_xcdr2 (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
bool serialized_size_structure_xcdr1 (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_structure_xcdr1 (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
bool serialized_size_structure (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_structure (DCPS::Serializer &ser, DCPS::Sample::Extent) const
 
bool set_default_discriminator_value (CORBA::Long &value, const DDS::DynamicType_var &disc_type) const
 
bool get_discriminator_value (CORBA::Long &value, const_single_iterator single_it, const_complex_iterator complex_it, const DDS::DynamicType_var &disc_type) 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 serialize_discriminator_member_xcdr2 (DCPS::Serializer &ser, CORBA::Long value, const DDS::DynamicType_var &disc_type, DDS::ExtensibilityKind extensibility) const
 
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 serialize_selected_member_xcdr2 (DCPS::Serializer &ser, DDS::MemberId selected_id, DDS::ExtensibilityKind extensibility) const
 
bool serialized_size_union_xcdr2 (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_union_xcdr2 (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
bool serialized_size_union_xcdr1 (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_union_xcdr1 (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
bool serialized_size_union (const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
 
bool serialize_union (DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
 
 OPENDDS_MAP (DDS::MemberId, SingleValue) single_map_
 
 OPENDDS_MAP (DDS::MemberId, SequenceValue) sequence_map_
 
 OPENDDS_MAP (DDS::MemberId, DDS::DynamicData_var) complex_map_
 
template<>
bool set_primitive_values (DDS::BooleanSeq &collection, CORBA::ULong bound, const ACE_OutputCDR::from_boolean &) const
 
template<>
bool set_primitive_values (DDS::ByteSeq &collection, CORBA::ULong bound, const ACE_OutputCDR::from_octet &) const
 
template<>
bool set_primitive_values (DDS::Int8Seq &collection, CORBA::ULong bound, const ACE_OutputCDR::from_int8 &) const
 
template<>
bool set_primitive_values (DDS::UInt8Seq &collection, CORBA::ULong bound, const ACE_OutputCDR::from_uint8 &) const
 
template<>
bool set_primitive_values (DDS::CharSeq &collection, CORBA::ULong bound, const ACE_OutputCDR::from_char &) const
 

Public Attributes

const DDS::DynamicType_var & type_
 
const DDS::TypeDescriptor_var & type_desc_
 
const DynamicDataImpldata_
 

Detailed Description

Definition at line 525 of file DynamicDataImpl.h.

Member Typedef Documentation

◆ DataContainer

typedef OPENDDS_MAP (DDS::MemberId, SingleValue) typedef OPENDDS_MAP (DDS::MemberId, SequenceValue) typedef OPENDDS_MAP (DDS::MemberId, DDS::DynamicData_var) OpenDDS::XTypes::DynamicDataImpl::DataContainer::DataContainer(const DDS::DynamicType_var &type, const DynamicDataImpl *data)
inline

Definition at line 530 of file DynamicDataImpl.h.

531  : type_(type)
532  , type_desc_(data->type_desc_)
533  , data_(data)
534  {}
const DDS::TypeDescriptor_var & type_desc_

Constructor & Destructor Documentation

◆ DataContainer()

OpenDDS::XTypes::DynamicDataImpl::DataContainer::DataContainer ( const DataContainer other,
const DynamicDataImpl data 
)
inline

Definition at line 536 of file DynamicDataImpl.h.

References OpenDDS::STUN::encoding(), OpenDDS::XTypes::extensibility(), and OpenDDS::XTypes::OPENDDS_MAP().

537  : single_map_(other.single_map_)
538  , sequence_map_(other.sequence_map_)
539  , complex_map_(other.complex_map_)
540  , type_(data->type_)
541  , type_desc_(data->type_desc_)
542  , data_(data)
543  {}
const DDS::TypeDescriptor_var & type_desc_

Member Function Documentation

◆ clear()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::clear ( void  )

Definition at line 3926 of file DynamicDataImpl.cpp.

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

3927 {
3928  single_map_.clear();
3929  complex_map_.clear();
3930  sequence_map_.clear();
3931 }

◆ get_discriminator_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_discriminator_value ( CORBA::Long value,
const_single_iterator  single_it,
const_complex_iterator  complex_it,
const DDS::DynamicType_var &  disc_type 
) const

Definition at line 8044 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

8047 {
8048  if (single_it != single_map_.end()) {
8049  data_->read_discriminator(value, disc_type, single_it);
8050  } else { // Find in complex map
8051  const DynamicDataImpl* dd_impl = dynamic_cast<const DynamicDataImpl*>(complex_it->second.in());
8052  if (!dd_impl) {
8053  return false;
8054  }
8055  const_single_iterator it = dd_impl->container_.single_map_.find(MEMBER_ID_INVALID);
8056  if (it != dd_impl->container_.single_map_.end()) {
8057  data_->read_discriminator(value, disc_type, it);
8058  } else {
8059  return set_default_discriminator_value(value, disc_type);
8060  }
8061  }
8062  return true;
8063 }
const LogLevel::Value value
Definition: debug.cpp:61
DynamicDataImpl(DDS::DynamicType_ptr type)
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool set_default_discriminator_value(CORBA::Long &value, const DDS::DynamicType_var &disc_type) const
bool read_discriminator(CORBA::Long &disc_val) const

◆ get_index_to_id_from_complex()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_index_to_id_from_complex ( IndexToIdMap &  index_to_id,
CORBA::ULong  bound 
) const

Definition at line 6040 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::MEMBER_ID_INVALID.

6042 {
6043  CORBA::ULong length = 0;
6044  if (!complex_map_.empty()) {
6045  CORBA::ULong largest_index;
6046  if (!get_largest_complex_index(largest_index)) {
6047  return false;
6048  }
6049  length = largest_index + 1;
6050  }
6051  index_to_id.resize(length, MEMBER_ID_INVALID);
6052  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6053  CORBA::ULong index;
6054  if (!data_->get_index_from_id(it->first, index, bound)) {
6055  return false;
6056  }
6057  index_to_id[index] = it->first;
6058  }
6059  return true;
6060 }
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool get_largest_complex_index(CORBA::ULong &index) const

◆ get_index_to_id_map()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_index_to_id_map ( IndexToIdMap &  index_to_id,
CORBA::ULong  bound 
) const

Definition at line 5566 of file DynamicDataImpl.cpp.

5568 {
5569  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
5570  CORBA::ULong index;
5571  if (!data_->get_index_from_id(it->first, index, bound)) {
5572  return false;
5573  }
5574  index_to_id[index] = it->first;
5575  }
5576  for (const_sequence_iterator it = sequence_map_.begin(); it != sequence_map_.end(); ++it) {
5577  CORBA::ULong index;
5578  if (!data_->get_index_from_id(it->first, index, bound)) {
5579  return false;
5580  }
5581  index_to_id[index] = it->first;
5582  }
5583  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
5584  CORBA::ULong index;
5585  if (!data_->get_index_from_id(it->first, index, bound)) {
5586  return false;
5587  }
5588  index_to_id[index] = it->first;
5589  }
5590  return true;
5591 }
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const

◆ get_largest_complex_index()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_complex_index ( CORBA::ULong index) const

Definition at line 3954 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::bound_total(), OpenDDS::XTypes::is_sequence_like(), OPENDDS_ASSERT, OpenDDS::XTypes::DynamicDataBase::type_, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

3955 {
3956  OPENDDS_ASSERT(is_sequence_like(type_->get_kind()));
3957  const DDS::UInt32 bound = bound_total(type_desc_);
3958  return data_->get_index_from_id(complex_map_.rbegin()->first, largest_index, bound);
3959 }
#define OPENDDS_ASSERT(C)
Definition: Definitions.h:72
bool is_sequence_like(TypeKind tk)
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
DDS::UInt32 bound_total(DDS::TypeDescriptor_var descriptor)
const DDS::TypeDescriptor_var & type_desc_

◆ get_largest_index_basic()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_index_basic ( CORBA::ULong index) const

Definition at line 3961 of file DynamicDataImpl.cpp.

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

3962 {
3963  largest_index = 0;
3964  if (!single_map_.empty() && !get_largest_single_index(largest_index)) {
3965  return false;
3966  }
3967  if (!complex_map_.empty()) {
3968  CORBA::ULong index;
3969  if (!get_largest_complex_index(index)) {
3970  return false;
3971  }
3972  largest_index = std::max(index, largest_index);
3973  }
3974  return true;
3975 }
bool get_largest_single_index(CORBA::ULong &index) const
ACE_CDR::ULong ULong
bool get_largest_complex_index(CORBA::ULong &index) const

◆ get_largest_index_basic_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_index_basic_sequence ( CORBA::ULong index) const

Definition at line 3977 of file DynamicDataImpl.cpp.

3978 {
3979  largest_index = 0;
3980  if (!sequence_map_.empty() && !get_largest_sequence_index(largest_index)) {
3981  return false;
3982  }
3983  if (!complex_map_.empty()) {
3984  CORBA::ULong index;
3985  if (!get_largest_complex_index(index)) {
3986  return false;
3987  }
3988  largest_index = std::max(index, largest_index);
3989  }
3990  return true;
3991 }
bool get_largest_sequence_index(CORBA::ULong &index) const
ACE_CDR::ULong ULong
bool get_largest_complex_index(CORBA::ULong &index) const

◆ get_largest_sequence_index()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_sequence_index ( CORBA::ULong index) const

Definition at line 3946 of file DynamicDataImpl.cpp.

References OPENDDS_ASSERT, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::DynamicDataBase::type_, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

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

3947 {
3948  OPENDDS_ASSERT(type_->get_kind() == TK_SEQUENCE);
3949  const CORBA::ULong bound = type_desc_->bound()[0];
3950  return data_->get_index_from_id(sequence_map_.rbegin()->first, largest_index, bound);
3951 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
#define OPENDDS_ASSERT(C)
Definition: Definitions.h:72
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const DDS::TypeDescriptor_var & type_desc_

◆ get_largest_single_index()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::get_largest_single_index ( CORBA::ULong index) const

Definition at line 3934 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::bound_total(), OpenDDS::XTypes::is_sequence_like(), OPENDDS_ASSERT, OpenDDS::XTypes::DynamicDataBase::type_, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

3935 {
3936  OPENDDS_ASSERT(is_sequence_like(type_->get_kind()));
3937  const DDS::UInt32 bound = bound_total(type_desc_);
3938 
3939  // Since ID is used as index in this implementation, the last element has largest index.
3940  // A different implementation (ID-to-index mapping) may need to iterate through all
3941  // stored elements to find the one with the largest index.
3942  return data_->get_index_from_id(single_map_.rbegin()->first, largest_index, bound);
3943 }
#define OPENDDS_ASSERT(C)
Definition: Definitions.h:72
bool is_sequence_like(TypeKind tk)
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
DDS::UInt32 bound_total(DDS::TypeDescriptor_var descriptor)
const DDS::TypeDescriptor_var & type_desc_

◆ OPENDDS_MAP() [1/3]

OpenDDS::XTypes::DynamicDataImpl::DataContainer::OPENDDS_MAP ( DDS::MemberId  ,
SingleValue   
)

◆ OPENDDS_MAP() [2/3]

OpenDDS::XTypes::DynamicDataImpl::DataContainer::OPENDDS_MAP ( DDS::MemberId  ,
SequenceValue   
)

◆ OPENDDS_MAP() [3/3]

OpenDDS::XTypes::DynamicDataImpl::DataContainer::OPENDDS_MAP ( DDS::MemberId  ,
DDS::DynamicData_var   
)

◆ reconstruct_bitmask_collection()

template<typename WrapElementType , typename CollectionType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_bitmask_collection ( CollectionType &  collection,
CORBA::ULong  size,
CORBA::ULong  bound,
const WrapElementType &  elem_tag 
) const

Definition at line 5232 of file DynamicDataImpl.cpp.

5234 {
5235  collection.length(size);
5236  set_default_bitmask_values(collection);
5237  return set_primitive_values(collection, bound, elem_tag);
5238 }
void set_default_bitmask_values(CollectionType &col) const
bool set_primitive_values(CollectionType &collection, CORBA::ULong bound, const ElementType &elem_tag) const

◆ reconstruct_enum_collection()

template<typename ElementType , typename WrapElementType , typename CollectionType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_enum_collection ( CollectionType &  collection,
CORBA::ULong  size,
CORBA::ULong  bound,
const DDS::DynamicType_var &  enum_type,
const WrapElementType &  elem_tag 
) const

Definition at line 5044 of file DynamicDataImpl.cpp.

5047 {
5048  collection.length(size);
5049  if (!set_default_enum_values<ElementType>(collection, enum_type)) {
5050  return false;
5051  }
5052  return set_primitive_values(collection, bound, elem_tag);
5053 }
bool set_primitive_values(CollectionType &collection, CORBA::ULong bound, const ElementType &elem_tag) const

◆ reconstruct_primitive_collection()

template<typename ElementType , typename CollectionType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_primitive_collection ( CollectionType &  collection,
CORBA::ULong  size,
CORBA::ULong  bound,
const ElementType &  elem_tag 
) const

Definition at line 4810 of file DynamicDataImpl.cpp.

4812 {
4813  collection.length(size);
4814  set_default_primitive_values(collection);
4815  return set_primitive_values(collection, bound, elem_tag);
4816 }
void set_default_primitive_values(DDS::Int8Seq &collection) const
bool set_primitive_values(CollectionType &collection, CORBA::ULong bound, const ElementType &elem_tag) const

◆ reconstruct_string_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_string_value ( CORBA::Char str) const

Definition at line 4160 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::XTypes::DynamicDataBase::type_desc_, and ACE_OutputCDR::from_char::val_.

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

4161 {
4162  const CORBA::ULong bound = type_desc_->bound()[0];
4163  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4164  CORBA::ULong index;
4165  if (!data_->get_index_from_id(it->first, index, bound)) {
4166  return false;
4167  }
4168  str[index] = it->second.get<ACE_OutputCDR::from_char>().val_;
4169  }
4170  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4171  CORBA::ULong index;
4172  if (!data_->get_index_from_id(it->first, index, bound)) {
4173  return false;
4174  }
4175  // The DynamicData object for this character may not contain any data.
4176  // Use default value for character if it is the case.
4177  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4178  if (!elem_dd) {
4179  return false;
4180  }
4181  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4182  if (elem_it != elem_dd->container_.single_map_.end()) {
4183  str[index] = elem_it->second.get<ACE_OutputCDR::from_char>().val_;
4184  } else {
4185  ACE_OutputCDR::from_char from_char('\0');
4186  set_default_basic_value(from_char);
4187  str[index] = from_char.val_;
4188  }
4189  }
4190  return true;
4191 }
void set_default_basic_value(CORBA::Long &value) const
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DDS::TypeDescriptor_var & type_desc_

◆ reconstruct_wstring_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::reconstruct_wstring_value ( CORBA::WChar wstr) const

◆ serialize_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_array ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 6921 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::bound_total(), OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::is_basic(), DDS::RETCODE_OK, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

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

6922 {
6923  const DDS::DynamicType_var elem_type = get_base_type(type_desc_->element_type());
6924  const TypeKind elem_tk = elem_type->get_kind();
6925  DDS::TypeDescriptor_var elem_td;
6926  if (elem_type->get_descriptor(elem_td) != DDS::RETCODE_OK) {
6927  return false;
6928  }
6929 
6930  const CORBA::ULong length = bound_total(type_desc_);
6931  if (is_basic(elem_tk)) {
6932  return serialize_primitive_array(ser, elem_tk, length);
6933  } else if (elem_tk == TK_STRING8) {
6934  return serialize_generic_string_array<const char*>(ser, length);
6935  } else if (elem_tk == TK_STRING16) {
6936 #ifdef DDS_HAS_WCHAR
6937  return serialize_generic_string_array<const CORBA::WChar*>(ser, length);
6938 #else
6939  return false;
6940 #endif
6941  } else if (elem_tk == TK_ENUM) {
6942  const CORBA::ULong bit_bound = elem_td->bound()[0];
6943  return serialize_enum_array(ser, bit_bound, length, elem_type);
6944  } else if (elem_tk == TK_BITMASK) {
6945  const CORBA::ULong bit_bound = elem_td->bound()[0];
6946  return serialize_bitmask_array(ser, bit_bound, length);
6947  } else if (elem_tk == TK_SEQUENCE) {
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();
6950  if (is_basic(nested_elem_tk)) {
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);
6954  } else if (nested_elem_tk == TK_BITMASK) {
6955  return serialize_nesting_bitmask_array(ser, length);
6956  }
6957  }
6958  return serialize_complex_array(ser, length, elem_type, ext);
6959 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
bool serialize_primitive_array(DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong length) const
bool serialize_nesting_basic_array(DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong length) const
const TypeKind TK_STRING16
Definition: TypeObject.h:232
bool serialize_bitmask_array(DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length) const
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool serialize_enum_array(DCPS::Serializer &ser, CORBA::ULong bitbound, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
bool serialize_nesting_enum_array(DCPS::Serializer &ser, CORBA::ULong length) const
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
bool serialize_nesting_bitmask_array(DCPS::Serializer &ser, CORBA::ULong length) const
DDS::UInt32 bound_total(DDS::TypeDescriptor_var descriptor)
const DDS::TypeDescriptor_var & type_desc_
const TypeKind TK_STRING8
Definition: TypeObject.h:231
bool serialize_complex_array(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
bool is_basic(TypeKind tk)

◆ serialize_basic_member_default_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_basic_member_default_value ( DCPS::Serializer ser,
TypeKind  member_tk 
) const

Definition at line 7044 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, and value.

7046 {
7047  switch (member_tk) {
7048  case TK_INT32: {
7050  set_default_basic_value(value);
7051  return ser << value;
7052  }
7053  case TK_UINT32: {
7055  set_default_basic_value(value);
7056  return ser << value;
7057  }
7058  case TK_INT8: {
7061  return ser << value;
7062  }
7063  case TK_UINT8: {
7066  return ser << value;
7067  }
7068  case TK_INT16: {
7070  set_default_basic_value(value);
7071  return ser << value;
7072  }
7073  case TK_UINT16: {
7075  set_default_basic_value(value);
7076  return ser << value;
7077  }
7078  case TK_INT64: {
7080  set_default_basic_value(value);
7081  return ser << value;
7082  }
7083  case TK_UINT64: {
7085  set_default_basic_value(value);
7086  return ser << value;
7087  }
7088  case TK_FLOAT32: {
7090  set_default_basic_value(value);
7091  return ser << value;
7092  }
7093  case TK_FLOAT64: {
7095  set_default_basic_value(value);
7096  return ser << value;
7097  }
7098  case TK_FLOAT128: {
7100  set_default_basic_value(value);
7101  return ser << value;
7102  }
7103  case TK_CHAR8: {
7106  return ser << value;
7107  }
7108  case TK_STRING8: {
7109  const char* value;
7110  set_default_basic_value(value);
7111  return ser << value;
7112  }
7113 #ifdef DDS_HAS_WCHAR
7114  case TK_CHAR16: {
7117  return ser << value;
7118  }
7119  case TK_STRING16: {
7120  const CORBA::WChar* value;
7121  set_default_basic_value(value);
7122  return ser << value;
7123  }
7124 #endif
7125  case TK_BYTE: {
7128  return ser << value;
7129  }
7130  case TK_BOOLEAN: {
7133  return ser << value;
7134  }
7135  }
7136  return false;
7137 }
ACE_CDR::Long Long
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
ACE_CDR::WChar WChar
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223

◆ serialize_basic_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_basic_sequence ( DCPS::Serializer ser,
const_sequence_iterator  it 
) const

Definition at line 7483 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

7485 {
7486  switch (it->second.elem_kind_) {
7487  case TK_INT32: {
7488  const DDS::Int32Seq& seq = it->second.get<DDS::Int32Seq>();
7489  return ser << seq;
7490  }
7491  case TK_UINT32: {
7492  const DDS::UInt32Seq& seq = it->second.get<DDS::UInt32Seq>();
7493  return ser << seq;
7494  }
7495  case TK_INT8: {
7496  const DDS::Int8Seq& seq = it->second.get<DDS::Int8Seq>();
7497  return ser << seq;
7498  }
7499  case TK_UINT8: {
7500  const DDS::UInt8Seq& seq = it->second.get<DDS::UInt8Seq>();
7501  return ser << seq;
7502  }
7503  case TK_INT16: {
7504  const DDS::Int16Seq& seq = it->second.get<DDS::Int16Seq>();
7505  return ser << seq;
7506  }
7507  case TK_UINT16: {
7508  const DDS::UInt16Seq& seq = it->second.get<DDS::UInt16Seq>();
7509  return ser << seq;
7510  }
7511  case TK_INT64: {
7512  const DDS::Int64Seq& seq = it->second.get<DDS::Int64Seq>();
7513  return ser << seq;
7514  }
7515  case TK_UINT64: {
7516  const DDS::UInt64Seq& seq = it->second.get<DDS::UInt64Seq>();
7517  return ser << seq;
7518  }
7519  case TK_FLOAT32: {
7520  const DDS::Float32Seq& seq = it->second.get<DDS::Float32Seq>();
7521  return ser << seq;
7522  }
7523  case TK_FLOAT64: {
7524  const DDS::Float64Seq& seq = it->second.get<DDS::Float64Seq>();
7525  return ser << seq;
7526  }
7527  case TK_FLOAT128: {
7528  const DDS::Float128Seq& seq = it->second.get<DDS::Float128Seq>();
7529  return ser << seq;
7530  }
7531  case TK_CHAR8: {
7532  const DDS::CharSeq& seq = it->second.get<DDS::CharSeq>();
7533  return ser << seq;
7534  }
7535  case TK_BYTE: {
7536  const DDS::ByteSeq& seq = it->second.get<DDS::ByteSeq>();
7537  return ser << seq;
7538  }
7539  case TK_BOOLEAN: {
7540  const DDS::BooleanSeq& seq = it->second.get<DDS::BooleanSeq>();
7541  return ser << seq;
7542  }
7543  case TK_STRING8: {
7544  const DDS::StringSeq& seq = it->second.get<DDS::StringSeq>();
7545  return ser << seq;
7546  }
7547 #ifdef DDS_HAS_WCHAR
7548  case TK_CHAR16: {
7549  const DDS::WcharSeq& seq = it->second.get<DDS::WcharSeq>();
7550  return ser << seq;
7551  }
7552  case TK_STRING16: {
7553  const DDS::WstringSeq& seq = it->second.get<DDS::WstringSeq>();
7554  return ser << seq;
7555  }
7556 #endif
7557  }
7558  return false;
7559 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialize_basic_struct_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7316 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, and OpenDDS::DCPS::Serializer::write_parameter_id().

7319 {
7320  const TypeKind member_tk = member_type->get_kind();
7321  const DCPS::Encoding& encoding = ser.encoding();
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()) {
7325  if (optional) {
7327  return ser << ACE_OutputCDR::from_boolean(false);
7328  }
7329  return true;
7330  }
7331  if (extensibility == DDS::MUTABLE) {
7332  size_t member_size = 0;
7333  if (is_basic(member_tk)) {
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);
7337  } else if (member_tk == TK_BITMASK) {
7338  serialized_size_bitmask(encoding, member_size, member_type);
7339  } else {
7340  return false;
7341  }
7342  if (!ser.write_parameter_id(id, member_size, must_understand)) {
7343  return false;
7344  }
7345  }
7346  if (is_basic(member_tk)) {
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);
7350  } else if (member_tk == TK_BITMASK) {
7351  return serialize_bitmask_default_value(ser, member_type);
7352  }
7353  return false;
7354  }
7355 
7356  if (single_it != single_map_.end()) {
7357  return serialize_single_aggregated_member_xcdr2(ser, single_it, member_type, optional,
7358  must_understand, extensibility);
7359  }
7360  return serialize_complex_aggregated_member_xcdr2(ser, complex_it, optional,
7361  must_understand, extensibility,
7363 }
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
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 serialized_size_basic_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
bool serialize_enum_default_value(DCPS::Serializer &ser, const DDS::DynamicType_var &enum_type) const
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
bool serialize_basic_member_default_value(DCPS::Serializer &ser, TypeKind member_tk) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
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_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialize_bitmask_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array ( DCPS::Serializer ser,
CORBA::ULong  bitbound,
CORBA::ULong  length 
) const

Definition at line 6638 of file DynamicDataImpl.cpp.

6640 {
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);
6649  }
6650  return false;
6651 }
bool serialize_bitmask_array_as_uint64s(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialize_bitmask_array_as_uint8s(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialize_bitmask_array_as_uint16s(DCPS::Serializer &ser, CORBA::ULong length) const
bool serialize_bitmask_array_as_uint32s(DCPS::Serializer &ser, CORBA::ULong length) const

◆ serialize_bitmask_array_as_uint16s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uint16s ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6556 of file DynamicDataImpl.cpp.

6558 {
6559  DDS::UInt16Seq bitmask_arr;
6560  return reconstruct_bitmask_collection(bitmask_arr, length, length, CORBA::UShort()) &&
6561  serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6562 }
sequence< unsigned short > UInt16Seq
bool serialize_bitmask_array_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
ACE_CDR::UShort UShort

◆ serialize_bitmask_array_as_uint32s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uint32s ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6586 of file DynamicDataImpl.cpp.

6588 {
6589  DDS::UInt32Seq bitmask_arr;
6590  return reconstruct_bitmask_collection(bitmask_arr, length, length, CORBA::ULong()) &&
6591  serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6592 }
bool serialize_bitmask_array_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
ACE_CDR::ULong ULong
sequence< unsigned long > UInt32Seq

◆ serialize_bitmask_array_as_uint64s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uint64s ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6616 of file DynamicDataImpl.cpp.

6618 {
6619  DDS::UInt64Seq bitmask_arr;
6620  return reconstruct_bitmask_collection(bitmask_arr, length, length, CORBA::ULongLong()) &&
6621  serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6622 }
bool serialize_bitmask_array_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
ACE_CDR::ULongLong ULongLong
sequence< unsigned long long > UInt64Seq

◆ serialize_bitmask_array_as_uint8s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uint8s ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6526 of file DynamicDataImpl.cpp.

6528 {
6529  DDS::UInt8Seq bitmask_arr;
6530  return reconstruct_bitmask_collection(bitmask_arr, length, length, ACE_OutputCDR::from_uint8(0)) &&
6531  serialize_bitmask_array_as_uints_i(ser, bitmask_arr);
6532 }
bool serialize_bitmask_array_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_arr) const
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
sequence< uint8 > UInt8Seq

◆ serialize_bitmask_array_as_uints_i() [1/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt8Seq bitmask_arr 
) const

Definition at line 6512 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6514 {
6515  const DCPS::Encoding& encoding = ser.encoding();
6516  size_t total_size = 0;
6517  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6518  serialized_size_bitmask_array_as_uint8s(encoding, total_size, bitmask_arr.length());
6519  if (!ser.write_delimiter(total_size)) {
6520  return false;
6521  }
6522  }
6523  return ser.write_uint8_array(bitmask_arr.get_buffer(), bitmask_arr.length());
6524 }
void serialized_size_bitmask_array_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_array_as_uints_i() [2/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt16Seq bitmask_arr 
) const

Definition at line 6542 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ushort_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6544 {
6545  const DCPS::Encoding& encoding = ser.encoding();
6546  size_t total_size = 0;
6547  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6548  serialized_size_bitmask_array_as_uint16s(encoding, total_size, bitmask_arr.length());
6549  if (!ser.write_delimiter(total_size)) {
6550  return false;
6551  }
6552  }
6553  return ser.write_ushort_array(bitmask_arr.get_buffer(), bitmask_arr.length());
6554 }
void serialized_size_bitmask_array_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_array_as_uints_i() [3/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt32Seq bitmask_arr 
) const

Definition at line 6572 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ulong_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6574 {
6575  const DCPS::Encoding& encoding = ser.encoding();
6576  size_t total_size = 0;
6577  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6578  serialized_size_bitmask_array_as_uint32s(encoding, total_size, bitmask_arr.length());
6579  if (!ser.write_delimiter(total_size)) {
6580  return false;
6581  }
6582  }
6583  return ser.write_ulong_array(bitmask_arr.get_buffer(), bitmask_arr.length());
6584 }
void serialized_size_bitmask_array_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_array_as_uints_i() [4/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt64Seq bitmask_arr 
) const

Definition at line 6602 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ulonglong_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6604 {
6605  const DCPS::Encoding& encoding = ser.encoding();
6606  size_t total_size = 0;
6607  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6608  serialized_size_bitmask_array_as_uint64s(encoding, total_size, bitmask_arr.length());
6609  if (!ser.write_delimiter(total_size)) {
6610  return false;
6611  }
6612  }
6613  return ser.write_ulonglong_array(bitmask_arr.get_buffer(), bitmask_arr.length());
6614 }
void serialized_size_bitmask_array_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_default_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_default_value ( DCPS::Serializer ser,
const DDS::DynamicType_var &  bitmask_type 
) const

Definition at line 4129 of file DynamicDataImpl.cpp.

References DDS::RETCODE_OK.

4131 {
4132  DDS::TypeDescriptor_var descriptor;
4133  if (bitmask_type->get_descriptor(descriptor) != DDS::RETCODE_OK) {
4134  return false;
4135  }
4136  const CORBA::ULong bit_bound = descriptor->bound()[0];
4137 
4138  // Table 9 doesn't mention default value for bitmask. Use 0 as default here.
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);
4147  }
4148  return false;
4149 }
ACE_CDR::ULong ULong
const ReturnCode_t RETCODE_OK

◆ serialize_bitmask_sequence() [1/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bitbound,
CORBA::ULong  seqbound 
) const

Definition at line 5442 of file DynamicDataImpl.cpp.

5444 {
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);
5453  }
5454  return false;
5455 }
bool serialize_bitmask_sequence_as_uint32s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
bool serialize_bitmask_sequence_as_uint8s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
bool serialize_bitmask_sequence_as_uint64s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
bool serialize_bitmask_sequence_as_uint16s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const

◆ serialize_bitmask_sequence() [2/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence ( DCPS::Serializer ser,
const_sequence_iterator  it 
) const

Definition at line 7632 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

7634 {
7635  switch (it->second.elem_kind_) {
7636  case TK_UINT8: {
7637  const DDS::UInt8Seq& seq = it->second.get<DDS::UInt8Seq>();
7638  return serialize_bitmask_sequence_as_uints_i(ser, seq);
7639  }
7640  case TK_UINT16: {
7641  const DDS::UInt16Seq& seq = it->second.get<DDS::UInt16Seq>();
7642  return serialize_bitmask_sequence_as_uints_i(ser, seq);
7643  }
7644  case TK_UINT32: {
7645  const DDS::UInt32Seq& seq = it->second.get<DDS::UInt32Seq>();
7646  return serialize_bitmask_sequence_as_uints_i(ser, seq);
7647  }
7648  case TK_UINT64: {
7649  const DDS::UInt64Seq& seq = it->second.get<DDS::UInt64Seq>();
7650  return serialize_bitmask_sequence_as_uints_i(ser, seq);
7651  }
7652  }
7653  return false;
7654 }
sequence< unsigned short > UInt16Seq
const TypeKind TK_UINT16
Definition: TypeObject.h:219
sequence< unsigned long long > UInt64Seq
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
sequence< uint8 > UInt8Seq
sequence< unsigned long > UInt32Seq
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226

◆ serialize_bitmask_sequence_as_uint16s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uint16s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5326 of file DynamicDataImpl.cpp.

5328 {
5329  DDS::UInt16Seq bitmask_seq;
5330  return reconstruct_bitmask_collection(bitmask_seq, size, bound, CORBA::UShort()) &&
5331  serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5332 }
sequence< unsigned short > UInt16Seq
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
ACE_CDR::UShort UShort

◆ serialize_bitmask_sequence_as_uint32s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uint32s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5373 of file DynamicDataImpl.cpp.

5375 {
5376  DDS::UInt32Seq bitmask_seq;
5377  return reconstruct_bitmask_collection(bitmask_seq, size, bound, CORBA::ULong()) &&
5378  serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5379 }
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
ACE_CDR::ULong ULong
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
sequence< unsigned long > UInt32Seq

◆ serialize_bitmask_sequence_as_uint64s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uint64s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5420 of file DynamicDataImpl.cpp.

5422 {
5423  DDS::UInt64Seq bitmask_seq;
5424  return reconstruct_bitmask_collection(bitmask_seq, size, bound, CORBA::ULongLong()) &&
5425  serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5426 }
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
ACE_CDR::ULongLong ULongLong
sequence< unsigned long long > UInt64Seq
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const

◆ serialize_bitmask_sequence_as_uint8s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uint8s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5279 of file DynamicDataImpl.cpp.

5281 {
5282  DDS::UInt8Seq bitmask_seq;
5283  return reconstruct_bitmask_collection(bitmask_seq, size, bound, ACE_OutputCDR::from_uint8(0)) &&
5284  serialize_bitmask_sequence_as_uints_i(ser, bitmask_seq);
5285 }
bool reconstruct_bitmask_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const WrapElementType &elem_tag) const
bool serialize_bitmask_sequence_as_uints_i(DCPS::Serializer &ser, const DDS::UInt8Seq &bitmask_seq) const
sequence< uint8 > UInt8Seq

◆ serialize_bitmask_sequence_as_uints_i() [1/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt8Seq bitmask_seq 
) const

Definition at line 5258 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5260 {
5261  const DCPS::Encoding& encoding = ser.encoding();
5262  size_t total_size = 0;
5263  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5264  serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5265  if (!ser.write_delimiter(total_size)) {
5266  return false;
5267  }
5268  }
5269  const CORBA::ULong length = bitmask_seq.length();
5270  if (!(ser << length)) {
5271  return false;
5272  }
5273  if (length == 0) {
5274  return true;
5275  }
5276  return ser.write_uint8_array(bitmask_seq.get_buffer(), length);
5277 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_sequence_as_uints_i() [2/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt16Seq bitmask_seq 
) const

Definition at line 5305 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ushort_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5307 {
5308  const DCPS::Encoding& encoding = ser.encoding();
5309  size_t total_size = 0;
5310  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5311  serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5312  if (!ser.write_delimiter(total_size)) {
5313  return false;
5314  }
5315  }
5316  const CORBA::ULong length = bitmask_seq.length();
5317  if (!(ser << length)) {
5318  return false;
5319  }
5320  if (length == 0) {
5321  return true;
5322  }
5323  return ser.write_ushort_array(bitmask_seq.get_buffer(), length);
5324 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_sequence_as_uints_i() [3/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt32Seq bitmask_seq 
) const

Definition at line 5352 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ulong_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5354 {
5355  const DCPS::Encoding& encoding = ser.encoding();
5356  size_t total_size = 0;
5357  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5358  serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5359  if (!ser.write_delimiter(total_size)) {
5360  return false;
5361  }
5362  }
5363  const CORBA::ULong length = bitmask_seq.length();
5364  if (!(ser << length)) {
5365  return false;
5366  }
5367  if (length == 0) {
5368  return true;
5369  }
5370  return ser.write_ulong_array(bitmask_seq.get_buffer(), length);
5371 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_sequence_as_uints_i() [4/4]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uints_i ( DCPS::Serializer ser,
const DDS::UInt64Seq bitmask_seq 
) const

Definition at line 5399 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_ulonglong_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5401 {
5402  const DCPS::Encoding& encoding = ser.encoding();
5403  size_t total_size = 0;
5404  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5405  serialized_size_bitmask_sequence(encoding, total_size, bitmask_seq);
5406  if (!ser.write_delimiter(total_size)) {
5407  return false;
5408  }
5409  }
5410  const CORBA::ULong length = bitmask_seq.length();
5411  if (!(ser << length)) {
5412  return false;
5413  }
5414  if (length == 0) {
5415  return true;
5416  }
5417  return ser.write_ulonglong_array(bitmask_seq.get_buffer(), length);
5418 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_bitmask_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_value ( DCPS::Serializer ser) const

Definition at line 4151 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::MEMBER_ID_INVALID, and OpenDDS::XTypes::DynamicDataBase::type_.

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

4152 {
4153  const_single_iterator it = single_map_.find(MEMBER_ID_INVALID);
4154  if (it != single_map_.end()) {
4155  return serialize_single_value(ser, it->second);
4156  }
4158 }
bool serialize_bitmask_default_value(DCPS::Serializer &ser, const DDS::DynamicType_var &bitmask_type) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const

◆ serialize_complex_aggregated_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7254 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, DDS::MUTABLE, OpenDDS::XTypes::DynamicDataImpl::serialize_i(), OpenDDS::XTypes::DynamicDataImpl::serialized_size_i(), and OpenDDS::DCPS::Serializer::write_parameter_id().

7257 {
7258  const DDS::DynamicData_var& data_var = it->second;
7259  const DynamicDataImpl* data_impl = dynamic_cast<DynamicDataImpl*>(data_var.in());
7260  if (!data_impl) {
7261  return false;
7262  }
7263 
7264  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7265  if (!(ser << ACE_OutputCDR::from_boolean(true))) {
7266  return false;
7267  }
7268  } else if (extensibility == DDS::MUTABLE) {
7269  size_t member_size = 0;
7270  if (!data_impl->serialized_size_i(ser.encoding(), member_size, ext) ||
7271  !ser.write_parameter_id(it->first, member_size, must_understand)) {
7272  return false;
7273  }
7274  }
7275  return data_impl->serialize_i(ser, ext);
7276 }
DynamicDataImpl(DDS::DynamicType_ptr type)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialize_complex_aggregated_member_xcdr2_default()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7210 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, DDS::MUTABLE, OpenDDS::XTypes::DynamicDataImpl::serialize_i(), OpenDDS::XTypes::DynamicDataImpl::serialized_size_i(), and OpenDDS::DCPS::Serializer::write_parameter_id().

7214 {
7215  if (optional) {
7217  return ser << ACE_OutputCDR::from_boolean(false);
7218  }
7219  return true;
7220  }
7221  // Use default value if the member is not optional.
7222  const DynamicDataImpl default_value(member_type);
7223  if (extensibility == DDS::MUTABLE) {
7224  size_t member_size = 0;
7225  default_value.serialized_size_i(ser.encoding(), member_size, ext);
7226  if (!ser.write_parameter_id(id, member_size, must_understand)) {
7227  return false;
7228  }
7229  }
7230  return default_value.serialize_i(ser, ext);
7231 }
DynamicDataImpl(DDS::DynamicType_ptr type)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialize_complex_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_array ( DCPS::Serializer ser,
CORBA::ULong  length,
const DDS::DynamicType_var &  elem_type,
DCPS::Sample::Extent  ext 
) const

Definition at line 6835 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6837 {
6838  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6839  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6840  CORBA::ULong index;
6841  if (!data_->get_index_from_id(it->first, index, length)) {
6842  return false;
6843  }
6844  index_to_id[index] = it->first;
6845  }
6846 
6847  const DCPS::Encoding& encoding = ser.encoding();
6848  size_t total_size = 0;
6849  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6850  if (!serialized_size_complex_array(encoding, total_size, index_to_id, elem_type, ext) ||
6851  !ser.write_delimiter(total_size)) {
6852  return false;
6853  }
6854  }
6855  return serialize_complex_sequence_i(ser, index_to_id, elem_type, ext);
6856 }
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
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_complex_sequence_i(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_complex_member_i()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_member_i ( DCPS::Serializer ser,
DDS::MemberId  id,
DCPS::Sample::Extent  ext 
) const

Definition at line 5639 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::serialize_i().

5642 {
5643  const DDS::DynamicData_var& dd_var = complex_map_.at(id);
5644  const DynamicDataImpl* data_impl = dynamic_cast<const DynamicDataImpl*>(dd_var.in());
5645  if (!data_impl) {
5646  return false;
5647  }
5648  return data_impl->serialize_i(ser, ext);
5649 }
DynamicDataImpl(DDS::DynamicType_ptr type)

◆ serialize_complex_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_sequence ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound,
const DDS::DynamicType_var &  elem_type,
DCPS::Sample::Extent  ext 
) const

Definition at line 6010 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6012 {
6013  IndexToIdMap index_to_id(size, MEMBER_ID_INVALID);
6014  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
6015  CORBA::ULong index;
6016  if (!data_->get_index_from_id(it->first, index, bound)) {
6017  return false;
6018  }
6019  index_to_id[index] = it->first;
6020  }
6021 
6022  const DCPS::Encoding& encoding = ser.encoding();
6023  size_t total_size = 0;
6024  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6025  if (!serialized_size_complex_sequence(encoding, total_size, index_to_id, elem_type, ext) ||
6026  !ser.write_delimiter(total_size)) {
6027  return false;
6028  }
6029  }
6030 
6031  if (!(ser << size)) {
6032  return false;
6033  }
6034  if (size == 0) {
6035  return true;
6036  }
6037  return serialize_complex_sequence_i(ser, index_to_id, elem_type, ext);
6038 }
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
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_complex_sequence_i(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, const DDS::DynamicType_var &elem_type, DCPS::Sample::Extent ext) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_complex_sequence_i()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_sequence_i ( DCPS::Serializer ser,
const IndexToIdMap &  index_to_id,
const DDS::DynamicType_var &  elem_type,
DCPS::Sample::Extent  ext 
) const

Definition at line 5992 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::DynamicDataImpl(), and OpenDDS::XTypes::MEMBER_ID_INVALID.

5994 {
5995  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5996  const CORBA::ULong id = index_to_id[i];
5997  if (id != MEMBER_ID_INVALID) {
5998  if (!serialize_complex_member_i(ser, id, ext)) {
5999  return false;
6000  }
6001  } else {
6002  if (!DynamicDataImpl(elem_type).serialize_i(ser, ext)) {
6003  return false;
6004  }
6005  }
6006  }
6007  return true;
6008 }
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ serialize_discriminator_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_discriminator_member_xcdr2 ( DCPS::Serializer ser,
CORBA::Long  value,
const DDS::DynamicType_var &  disc_type,
DDS::ExtensibilityKind  extensibility 
) const

Definition at line 8079 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::is_primitive(), DDS::MUTABLE, DDS::RETCODE_OK, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, value, and OpenDDS::DCPS::Serializer::write_parameter_id().

8082 {
8083  const DCPS::Encoding& encoding = ser.encoding();
8084  const TypeKind disc_tk = disc_type->get_kind();
8085  if (extensibility == DDS::MUTABLE) {
8086  size_t disc_size = 0;
8087  if (is_primitive(disc_tk)) {
8088  serialized_size_primitive_member(encoding, disc_size, disc_tk);
8089  } else {
8090  serialized_size_enum(encoding, disc_size, disc_type);
8091  }
8092  // Use member Id 0 for discriminator?
8093  if (!ser.write_parameter_id(0, disc_size, false)) {
8094  return false;
8095  }
8096  }
8097 
8098  switch (disc_tk) {
8099  case TK_BOOLEAN:
8100  return ser << static_cast<CORBA::Boolean>(value);
8101  case TK_BYTE:
8102  return ser << static_cast<CORBA::Octet>(value);
8103  case TK_CHAR8:
8104  return ser << static_cast<CORBA::Char>(value);
8105 #ifdef DDS_HAS_WCHAR
8106  case TK_CHAR16:
8107  return ser << static_cast<CORBA::WChar>(value);
8108 #endif
8109  case TK_INT8:
8110  return ser << static_cast<CORBA::Int8>(value);
8111  case TK_UINT8:
8112  return ser << static_cast<CORBA::UInt8>(value);
8113  case TK_INT16:
8114  return ser << static_cast<CORBA::Short>(value);
8115  case TK_UINT16:
8116  return ser << static_cast<CORBA::UShort>(value);
8117  case TK_INT32:
8118  return ser << value;
8119  case TK_UINT32:
8120  return ser << static_cast<CORBA::ULong>(value);
8121  case TK_INT64:
8122  return ser << static_cast<CORBA::LongLong>(value);
8123  case TK_UINT64:
8124  return ser << static_cast<CORBA::ULongLong>(value);
8125  case TK_ENUM: {
8126  DDS::TypeDescriptor_var td;
8127  if (disc_type->get_descriptor(td) != DDS::RETCODE_OK) {
8128  return false;
8129  }
8130  const CORBA::ULong bitbound = td->bound()[0];
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;
8137  }
8138  }
8139  }
8140  return false;
8141 }
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_BYTE
Definition: TypeObject.h:215
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
bool is_primitive(TypeKind tk)
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialize_enum_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array ( DCPS::Serializer ser,
CORBA::ULong  bitbound,
CORBA::ULong  length,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 6491 of file DynamicDataImpl.cpp.

6493 {
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);
6500  }
6501  return false;
6502 }
bool serialize_enum_array_as_int16s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
bool serialize_enum_array_as_int8s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const
bool serialize_enum_array_as_int32s(DCPS::Serializer &ser, CORBA::ULong length, const DDS::DynamicType_var &enum_type) const

◆ serialize_enum_array_as_int16s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_int16s ( DCPS::Serializer ser,
CORBA::ULong  length,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 6441 of file DynamicDataImpl.cpp.

6443 {
6444  DDS::Int16Seq enumarr;
6445  return reconstruct_enum_collection<CORBA::Short>(enumarr, length, length, enum_type, CORBA::Short()) &&
6446  serialize_enum_array_as_ints_i(ser, enumarr);
6447 }
ACE_CDR::Short Short
sequence< short > Int16Seq
bool serialize_enum_array_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumarr) const

◆ serialize_enum_array_as_int32s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_int32s ( DCPS::Serializer ser,
CORBA::ULong  length,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 6471 of file DynamicDataImpl.cpp.

6473 {
6474  DDS::Int32Seq enumarr;
6475  return reconstruct_enum_collection<CORBA::Long>(enumarr, length, length, enum_type, CORBA::Long()) &&
6476  serialize_enum_array_as_ints_i(ser, enumarr);
6477 }
ACE_CDR::Long Long
sequence< long > Int32Seq
bool serialize_enum_array_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumarr) const

◆ serialize_enum_array_as_int8s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_int8s ( DCPS::Serializer ser,
CORBA::ULong  length,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 6411 of file DynamicDataImpl.cpp.

6413 {
6414  DDS::Int8Seq enumarr;
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);
6417 }
bool serialize_enum_array_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumarr) const
sequence< int8 > Int8Seq

◆ serialize_enum_array_as_ints_i() [1/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_ints_i ( DCPS::Serializer ser,
const DDS::Int8Seq enumarr 
) const

Definition at line 6397 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6399 {
6400  const DCPS::Encoding& encoding = ser.encoding();
6401  size_t total_size = 0;
6402  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6403  serialized_size_enum_array_as_int8s(encoding, total_size, enumarr.length());
6404  if (!ser.write_delimiter(total_size)) {
6405  return false;
6406  }
6407  }
6408  return ser.write_int8_array(enumarr.get_buffer(), enumarr.length());
6409 }
void serialized_size_enum_array_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_enum_array_as_ints_i() [2/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_ints_i ( DCPS::Serializer ser,
const DDS::Int16Seq enumarr 
) const

Definition at line 6427 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_short_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6429 {
6430  const DCPS::Encoding& encoding = ser.encoding();
6431  size_t total_size = 0;
6432  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6433  serialized_size_enum_array_as_int16s(encoding, total_size, enumarr.length());
6434  if (!ser.write_delimiter(total_size)) {
6435  return false;
6436  }
6437  }
6438  return ser.write_short_array(enumarr.get_buffer(), enumarr.length());
6439 }
void serialized_size_enum_array_as_int16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_enum_array_as_ints_i() [3/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_ints_i ( DCPS::Serializer ser,
const DDS::Int32Seq enumarr 
) const

Definition at line 6457 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_long_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6459 {
6460  const DCPS::Encoding& encoding = ser.encoding();
6461  size_t total_size = 0;
6462  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6463  serialized_size_enum_array_as_int32s(encoding, total_size, enumarr.length());
6464  if (!ser.write_delimiter(total_size)) {
6465  return false;
6466  }
6467  }
6468  return ser.write_long_array(enumarr.get_buffer(), enumarr.length());
6469 }
void serialized_size_enum_array_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_enum_default_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_default_value ( DCPS::Serializer ser,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 4071 of file DynamicDataImpl.cpp.

References DDS::RETCODE_OK.

4073 {
4074  // The first enumerator is used as the enum's default value (Table 9).
4075  DDS::DynamicTypeMember_var first_dtm;
4076  if (enum_type->get_member_by_index(first_dtm, 0) != DDS::RETCODE_OK) {
4077  return false;
4078  }
4079  DDS::MemberDescriptor_var first_md;
4080  if (first_dtm->get_descriptor(first_md) != DDS::RETCODE_OK) {
4081  return false;
4082  }
4083  DDS::TypeDescriptor_var descriptor;
4084  if (enum_type->get_descriptor(descriptor) != DDS::RETCODE_OK) {
4085  return false;
4086  }
4087  const CORBA::ULong bit_bound = descriptor->bound()[0];
4088 
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());
4095  }
4096  return false;
4097 }
ACE_CDR::ULong ULong
const ReturnCode_t RETCODE_OK

◆ serialize_enum_sequence() [1/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bitbound,
CORBA::ULong  seqbound,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 5208 of file DynamicDataImpl.cpp.

5211 {
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);
5218  }
5219  return false;
5220 }
bool serialize_enum_sequence_as_int8s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
bool serialize_enum_sequence_as_int16s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const
bool serialize_enum_sequence_as_int32s(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, const DDS::DynamicType_var &enum_type) const

◆ serialize_enum_sequence() [2/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence ( DCPS::Serializer ser,
const_sequence_iterator  it 
) const

Definition at line 7584 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, and OpenDDS::XTypes::TK_INT8.

7586 {
7587  switch (it->second.elem_kind_) {
7588  case TK_INT8: {
7589  const DDS::Int8Seq& seq = it->second.get<DDS::Int8Seq>();
7590  return serialize_enum_sequence_as_ints_i(ser, seq);
7591  }
7592  case TK_INT16: {
7593  const DDS::Int16Seq& seq = it->second.get<DDS::Int16Seq>();
7594  return serialize_enum_sequence_as_ints_i(ser, seq);
7595  }
7596  case TK_INT32: {
7597  const DDS::Int32Seq& seq = it->second.get<DDS::Int32Seq>();
7598  return serialize_enum_sequence_as_ints_i(ser, seq);
7599  }
7600  }
7601  return false;
7602 }
sequence< long > Int32Seq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< int8 > Int8Seq
bool serialize_enum_sequence_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const

◆ serialize_enum_sequence_as_int16s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_int16s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 5141 of file DynamicDataImpl.cpp.

5143 {
5144  DDS::Int16Seq enumseq;
5145  return reconstruct_enum_collection<CORBA::Short>(enumseq, size, bound, enum_type, CORBA::Short()) &&
5146  serialize_enum_sequence_as_ints_i(ser, enumseq);
5147 }
ACE_CDR::Short Short
sequence< short > Int16Seq
bool serialize_enum_sequence_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const

◆ serialize_enum_sequence_as_int32s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_int32s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 5188 of file DynamicDataImpl.cpp.

5190 {
5191  DDS::Int32Seq enumseq;
5192  return reconstruct_enum_collection<CORBA::Long>(enumseq, size, bound, enum_type, CORBA::Long()) &&
5193  serialize_enum_sequence_as_ints_i(ser, enumseq);
5194 }
ACE_CDR::Long Long
sequence< long > Int32Seq
bool serialize_enum_sequence_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const

◆ serialize_enum_sequence_as_int8s()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_int8s ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 5094 of file DynamicDataImpl.cpp.

5096 {
5097  DDS::Int8Seq enumseq;
5098  return reconstruct_enum_collection<CORBA::Int8>(enumseq, size, bound, enum_type, ACE_OutputCDR::from_int8(0)) &&
5099  serialize_enum_sequence_as_ints_i(ser, enumseq);
5100 }
sequence< int8 > Int8Seq
bool serialize_enum_sequence_as_ints_i(DCPS::Serializer &ser, const DDS::Int8Seq &enumseq) const

◆ serialize_enum_sequence_as_ints_i() [1/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_ints_i ( DCPS::Serializer ser,
const DDS::Int8Seq enumseq 
) const

Definition at line 5073 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5075 {
5076  const DCPS::Encoding& encoding = ser.encoding();
5077  size_t total_size = 0;
5078  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5079  serialized_size_enum_sequence_as_int8s(encoding, total_size, enumseq.length());
5080  if (!ser.write_delimiter(total_size)) {
5081  return false;
5082  }
5083  }
5084  const CORBA::ULong length = enumseq.length();
5085  if (!(ser << length)) {
5086  return false;
5087  }
5088  if (length == 0) {
5089  return true;
5090  }
5091  return ser.write_int8_array(enumseq.get_buffer(), length);
5092 }
ACE_CDR::ULong ULong
void serialized_size_enum_sequence_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_enum_sequence_as_ints_i() [2/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_ints_i ( DCPS::Serializer ser,
const DDS::Int16Seq enumseq 
) const

Definition at line 5120 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_short_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5122 {
5123  const DCPS::Encoding& encoding = ser.encoding();
5124  size_t total_size = 0;
5125  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5126  serialized_size_enum_sequence_as_int16s(encoding, total_size, enumseq.length());
5127  if (!ser.write_delimiter(total_size)) {
5128  return false;
5129  }
5130  }
5131  const CORBA::ULong length = enumseq.length();
5132  if (!(ser << length)) {
5133  return false;
5134  }
5135  if (length == 0) {
5136  return true;
5137  }
5138  return ser.write_short_array(enumseq.get_buffer(), length);
5139 }
ACE_CDR::ULong ULong
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

◆ serialize_enum_sequence_as_ints_i() [3/3]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_ints_i ( DCPS::Serializer ser,
const DDS::Int32Seq enumseq 
) const

Definition at line 5167 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_long_array(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5169 {
5170  const DCPS::Encoding& encoding = ser.encoding();
5171  size_t total_size = 0;
5172  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5173  serialized_size_enum_sequence_as_int32s(encoding, total_size, enumseq.length());
5174  if (!ser.write_delimiter(total_size)) {
5175  return false;
5176  }
5177  }
5178  const CORBA::ULong length = enumseq.length();
5179  if (!(ser << length)) {
5180  return false;
5181  }
5182  if (length == 0) {
5183  return true;
5184  }
5185  return ser.write_long_array(enumseq.get_buffer(), length);
5186 }
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_enum_sequence_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const

◆ serialize_enum_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_value ( DCPS::Serializer ser) const

Definition at line 4099 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::MEMBER_ID_INVALID, and OpenDDS::XTypes::DynamicDataBase::type_.

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

4100 {
4101  const_single_iterator it = single_map_.find(MEMBER_ID_INVALID);
4102  if (it != single_map_.end()) {
4103  return serialize_single_value(ser, it->second);
4104  }
4105  return serialize_enum_default_value(ser, type_);
4106 }
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_enum_default_value(DCPS::Serializer &ser, const DDS::DynamicType_var &enum_type) const
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const

◆ serialize_generic_string_array()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_generic_string_array ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6370 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6372 {
6373  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6374  if (!get_index_to_id_map(index_to_id, length)) {
6375  return false;
6376  }
6377 
6378  const DCPS::Encoding& encoding = ser.encoding();
6379  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6380  size_t total_size = 0;
6381  if (!serialized_size_generic_string_array<StringType>(encoding, total_size, index_to_id) ||
6382  !ser.write_delimiter(total_size)) {
6383  return false;
6384  }
6385  }
6386  return serialize_generic_string_collection<StringType>(ser, index_to_id);
6387 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_generic_string_collection()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_generic_string_collection ( DCPS::Serializer ser,
const IndexToIdMap &  index_to_id 
) const

Definition at line 4978 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4980 {
4981  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
4982  const DDS::MemberId id = index_to_id[i];
4983  if (id != MEMBER_ID_INVALID) {
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)) {
4987  return false;
4988  }
4989  } else if (!serialize_complex_member_i(ser, id, DCPS::Sample::Full)) {
4990  return false;
4991  }
4992  } else { // Not set by the user. Use default value.
4993  StringType default_value;
4994  set_default_basic_value(default_value);
4995  if (!(ser << default_value)) {
4996  return false;
4997  }
4998  }
4999  }
5000  return true;
5001 }
void set_default_basic_value(CORBA::Long &value) const
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
ACE_CDR::ULong ULong
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const

◆ serialize_generic_string_sequence()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_generic_string_sequence ( DCPS::Serializer ser,
CORBA::ULong  length,
CORBA::ULong  bound 
) const

Definition at line 5004 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5006 {
5007  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
5008  if (!get_index_to_id_map(index_to_id, bound)) {
5009  return false;
5010  }
5011 
5012  const DCPS::Encoding& encoding = ser.encoding();
5013  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5014  size_t total_size = 0;
5015  if (!serialized_size_generic_string_sequence<StringType>(encoding, total_size, index_to_id) ||
5016  !ser.write_delimiter(total_size)) {
5017  return false;
5018  }
5019  }
5020  if (!(ser << length)) {
5021  return false;
5022  }
5023  if (length == 0) {
5024  return true;
5025  }
5026  return serialize_generic_string_collection<StringType>(ser, index_to_id);
5027 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_nested_basic_sequences()

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nested_basic_sequences ( DCPS::Serializer ser,
const IndexToIdMap &  index_to_id,
SequenceType  protoseq 
) const

Definition at line 5652 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, and OpenDDS::XTypes::MEMBER_ID_INVALID.

5654 {
5655  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5656  const CORBA::ULong id = index_to_id[i];
5657  if (id != MEMBER_ID_INVALID) {
5658  const_sequence_iterator it = sequence_map_.find(id);
5659  if (it != sequence_map_.end()) {
5660  if (!serialize_sequence_value(ser, it->second)) {
5661  return false;
5662  }
5663  } else if (!serialize_complex_member_i(ser, id, DCPS::Sample::Full)) {
5664  return false;
5665  }
5666  } else {
5667  // Table 9: Use zero-length sequence of the same element type.
5668  protoseq.length(0);
5669  if (!(ser << protoseq)) {
5670  return false;
5671  }
5672  }
5673  }
5674  return true;
5675 }
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
ACE_CDR::ULong ULong
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_sequence_value(DCPS::Serializer &ser, const SequenceValue &sv) const

◆ serialize_nested_bitmask_sequences()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nested_bitmask_sequences ( DCPS::Serializer ser,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5912 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::uint32_cdr_size, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5914 {
5915  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5916  const CORBA::ULong id = index_to_id[i];
5917  if (id != MEMBER_ID_INVALID) {
5918  const_sequence_iterator it = sequence_map_.find(id);
5919  if (it != sequence_map_.end()) {
5920  if (!serialize_bitmask_sequence(ser, it)) {
5921  return false;
5922  }
5923  } else if (!serialize_complex_member_i(ser, id, DCPS::Sample::Full)) {
5924  return false;
5925  }
5926  } else { // Empty sequence of bitmasks
5927  if (ser.encoding().xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5928  if (!ser.write_delimiter(2 * DCPS::uint32_cdr_size)) {
5929  return false;
5930  }
5931  }
5932  if (!(ser << static_cast<CORBA::ULong>(0))) {
5933  return false;
5934  }
5935  }
5936  }
5937  return true;
5938 }
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
const size_t uint32_cdr_size
Definition: Serializer.h:96
ACE_CDR::ULong ULong
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound) const

◆ serialize_nested_enum_sequences()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nested_enum_sequences ( DCPS::Serializer ser,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5827 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::uint32_cdr_size, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5829 {
5830  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5831  const CORBA::ULong id = index_to_id[i];
5832  if (id != MEMBER_ID_INVALID) {
5833  const_sequence_iterator it = sequence_map_.find(id);
5834  if (it != sequence_map_.end()) {
5835  if (!serialize_enum_sequence(ser, it)) {
5836  return false;
5837  }
5838  } else if (!serialize_complex_member_i(ser, id, DCPS::Sample::Full)) {
5839  return false;
5840  }
5841  } else { // Empty sequence of enums
5842  if (ser.encoding().xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5843  if (!ser.write_delimiter(2 * DCPS::uint32_cdr_size)) {
5844  return false;
5845  }
5846  }
5847  if (!(ser << static_cast<CORBA::ULong>(0))) {
5848  return false;
5849  }
5850  }
5851  }
5852  return true;
5853 }
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
const size_t uint32_cdr_size
Definition: Serializer.h:96
ACE_CDR::ULong ULong
bool serialize_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound, const DDS::DynamicType_var &enum_type) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ serialize_nesting_basic_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_array ( DCPS::Serializer ser,
TypeKind  nested_elem_tk,
CORBA::ULong  length 
) const

Definition at line 6726 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

6728 {
6729  switch (nested_elem_tk) {
6730  case TK_INT32:
6731  return serialize_nesting_basic_array_i(ser, length, DDS::Int32Seq());
6732  case TK_UINT32:
6733  return serialize_nesting_basic_array_i(ser, length, DDS::UInt32Seq());
6734  case TK_INT8:
6735  return serialize_nesting_basic_array_i(ser, length, DDS::Int8Seq());
6736  case TK_UINT8:
6737  return serialize_nesting_basic_array_i(ser, length, DDS::UInt8Seq());
6738  case TK_INT16:
6739  return serialize_nesting_basic_array_i(ser, length, DDS::Int16Seq());
6740  case TK_UINT16:
6741  return serialize_nesting_basic_array_i(ser, length, DDS::UInt16Seq());
6742  case TK_INT64:
6743  return serialize_nesting_basic_array_i(ser, length, DDS::Int64Seq());
6744  case TK_UINT64:
6745  return serialize_nesting_basic_array_i(ser, length, DDS::UInt64Seq());
6746  case TK_FLOAT32:
6747  return serialize_nesting_basic_array_i(ser, length, DDS::Float32Seq());
6748  case TK_FLOAT64:
6749  return serialize_nesting_basic_array_i(ser, length, DDS::Float64Seq());
6750  case TK_FLOAT128:
6751  return serialize_nesting_basic_array_i(ser, length, DDS::Float128Seq());
6752  case TK_CHAR8:
6753  return serialize_nesting_basic_array_i(ser, length, DDS::CharSeq());
6754  case TK_STRING8:
6755  return serialize_nesting_basic_array_i(ser, length, DDS::StringSeq());
6756 #ifdef DDS_HAS_WCHAR
6757  case TK_CHAR16:
6758  return serialize_nesting_basic_array_i(ser, length, DDS::WcharSeq());
6759  case TK_STRING16:
6760  return serialize_nesting_basic_array_i(ser, length, DDS::WstringSeq());
6761 #endif
6762  case TK_BYTE:
6763  return serialize_nesting_basic_array_i(ser, length, DDS::ByteSeq());
6764  case TK_BOOLEAN:
6765  return serialize_nesting_basic_array_i(ser, length, DDS::BooleanSeq());
6766  }
6767  return false;
6768 }
bool serialize_nesting_basic_array_i(DCPS::Serializer &ser, CORBA::ULong length, SequenceType protoseq) const
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialize_nesting_basic_array_i()

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_array_i ( DCPS::Serializer ser,
CORBA::ULong  length,
SequenceType  protoseq 
) const

Definition at line 6662 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6664 {
6665  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6666  if (!get_index_to_id_map(index_to_id, length)) {
6667  return false;
6668  }
6669 
6670  const DCPS::Encoding& encoding = ser.encoding();
6671  size_t total_size = 0;
6672  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6673  if (!serialized_size_nesting_basic_array(encoding, total_size, index_to_id, protoseq) ||
6674  !ser.write_delimiter(total_size)) {
6675  return false;
6676  }
6677  }
6678  return serialize_nested_basic_sequences(ser, index_to_id, protoseq);
6679 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialized_size_nesting_basic_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialize_nested_basic_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, SequenceType protoseq) const

◆ serialize_nesting_basic_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_sequence ( DCPS::Serializer ser,
TypeKind  nested_elem_tk,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5752 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

5754 {
5755  switch (nested_elem_tk) {
5756  case TK_INT32:
5757  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Int32Seq());
5758  case TK_UINT32:
5759  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::UInt32Seq());
5760  case TK_INT8:
5761  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Int8Seq());
5762  case TK_UINT8:
5763  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::UInt8Seq());
5764  case TK_INT16:
5765  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Int16Seq());
5766  case TK_UINT16:
5767  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::UInt16Seq());
5768  case TK_INT64:
5769  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Int64Seq());
5770  case TK_UINT64:
5771  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::UInt64Seq());
5772  case TK_FLOAT32:
5773  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Float32Seq());
5774  case TK_FLOAT64:
5775  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Float64Seq());
5776  case TK_FLOAT128:
5777  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::Float128Seq());
5778  case TK_CHAR8:
5779  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::CharSeq());
5780  case TK_STRING8:
5781  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::StringSeq());
5782 #ifdef DDS_HAS_WCHAR
5783  case TK_CHAR16:
5784  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::WcharSeq());
5785  case TK_STRING16:
5786  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::WstringSeq());
5787 #endif
5788  case TK_BYTE:
5789  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::ByteSeq());
5790  case TK_BOOLEAN:
5791  return serialize_nesting_basic_sequence_i(ser, size, bound, DDS::BooleanSeq());
5792  }
5793  return false;
5794 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
bool serialize_nesting_basic_sequence_i(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound, SequenceType protoseq) const
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialize_nesting_basic_sequence_i()

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_sequence_i ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound,
SequenceType  protoseq 
) const

Definition at line 5678 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5680 {
5681  // Map from index to ID. Use MEMBER_ID_INVALID to indicate there is
5682  // no data for an element at a given index.
5683  IndexToIdMap index_to_id(size, MEMBER_ID_INVALID);
5684  if (!get_index_to_id_map(index_to_id, bound)) {
5685  return false;
5686  }
5687 
5688  const DCPS::Encoding& encoding = ser.encoding();
5689  size_t total_size = 0;
5690  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5691  if (!serialized_size_nesting_basic_sequence(encoding, total_size, index_to_id, protoseq) ||
5692  !ser.write_delimiter(total_size)) {
5693  return false;
5694  }
5695  }
5696 
5697  // Serialize the top-level sequence's length
5698  if (!(ser << size)) {
5699  return false;
5700  }
5701  if (size == 0) {
5702  return true;
5703  }
5704  return serialize_nested_basic_sequences(ser, index_to_id, protoseq);
5705 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialized_size_nesting_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialize_nested_basic_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id, SequenceType protoseq) const

◆ serialize_nesting_bitmask_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_bitmask_array ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6803 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6805 {
6806  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6807  if (!get_index_to_id_map(index_to_id, length)) {
6808  return false;
6809  }
6810 
6811  const DCPS::Encoding& encoding = ser.encoding();
6812  size_t total_size = 0;
6813  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6814  if (!serialized_size_nesting_bitmask_array(encoding, total_size, index_to_id) ||
6815  !ser.write_delimiter(total_size)) {
6816  return false;
6817  }
6818  }
6819  return serialize_nested_bitmask_sequences(ser, index_to_id);
6820 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialized_size_nesting_bitmask_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialize_nested_bitmask_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const

◆ serialize_nesting_bitmask_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_bitmask_sequence ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5940 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5942 {
5943  IndexToIdMap index_to_id(size, MEMBER_ID_INVALID);
5944  if (!get_index_to_id_map(index_to_id, bound)) {
5945  return false;
5946  }
5947 
5948  const DCPS::Encoding& encoding = ser.encoding();
5949  size_t total_size = 0;
5950  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5951  if (!serialized_size_nesting_bitmask_sequence(encoding, total_size, index_to_id) ||
5952  !ser.write_delimiter(total_size)) {
5953  return false;
5954  }
5955  }
5956 
5957  if (!(ser << size)) {
5958  return false;
5959  }
5960  if (size == 0) {
5961  return true;
5962  }
5963  return serialize_nested_bitmask_sequences(ser, index_to_id);
5964 }
bool serialized_size_nesting_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialize_nested_bitmask_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const

◆ serialize_nesting_enum_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_enum_array ( DCPS::Serializer ser,
CORBA::ULong  length 
) const

Definition at line 6777 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

6779 {
6780  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6781  if (!get_index_to_id_map(index_to_id, length)) {
6782  return false;
6783  }
6784 
6785  const DCPS::Encoding& encoding = ser.encoding();
6786  size_t total_size = 0;
6787  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
6788  if (!serialized_size_nesting_enum_array(encoding, total_size, index_to_id) ||
6789  !ser.write_delimiter(total_size)) {
6790  return false;
6791  }
6792  }
6793  return serialize_nested_enum_sequences(ser, index_to_id);
6794 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialize_nested_enum_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialized_size_nesting_enum_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const

◆ serialize_nesting_enum_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_enum_sequence ( DCPS::Serializer ser,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 5855 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

5857 {
5858  IndexToIdMap index_to_id(size, MEMBER_ID_INVALID);
5859  if (!get_index_to_id_map(index_to_id, bound)) {
5860  return false;
5861  }
5862 
5863  const DCPS::Encoding& encoding = ser.encoding();
5864  size_t total_size = 0;
5865  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
5866  if (!serialized_size_nesting_enum_sequence(encoding, total_size, index_to_id) ||
5867  !ser.write_delimiter(total_size)) {
5868  return false;
5869  }
5870  }
5871 
5872  if (!(ser << size)) {
5873  return false;
5874  }
5875  if (size == 0) {
5876  return true;
5877  }
5878  return serialize_nested_enum_sequences(ser, index_to_id);
5879 }
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialize_nested_enum_sequences(DCPS::Serializer &ser, const IndexToIdMap &index_to_id) const
bool serialized_size_nesting_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_primitive_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_primitive_array ( DCPS::Serializer ser,
TypeKind  elem_tk,
CORBA::ULong  length 
) const

Definition at line 6276 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, OpenDDS::DCPS::Serializer::write_boolean_array(), OpenDDS::DCPS::Serializer::write_char_array(), OpenDDS::DCPS::Serializer::write_double_array(), OpenDDS::DCPS::Serializer::write_float_array(), OpenDDS::DCPS::Serializer::write_long_array(), OpenDDS::DCPS::Serializer::write_longdouble_array(), OpenDDS::DCPS::Serializer::write_longlong_array(), OpenDDS::DCPS::Serializer::write_octet_array(), OpenDDS::DCPS::Serializer::write_short_array(), OpenDDS::DCPS::Serializer::write_ulong_array(), OpenDDS::DCPS::Serializer::write_ulonglong_array(), OpenDDS::DCPS::Serializer::write_ushort_array(), and OpenDDS::DCPS::Serializer::write_wchar_array().

6278 {
6279  switch (elem_tk) {
6280  case TK_INT32: {
6281  DDS::Int32Seq int32arr;
6282  return reconstruct_primitive_collection(int32arr, length, length, CORBA::Long()) &&
6283  ser.write_long_array(int32arr.get_buffer(), length);
6284  }
6285  case TK_UINT32: {
6286  DDS::UInt32Seq uint32arr;
6287  return reconstruct_primitive_collection(uint32arr, length, length, CORBA::ULong()) &&
6288  ser.write_ulong_array(uint32arr.get_buffer(), length);
6289  }
6290  case TK_INT8: {
6291  DDS::Int8Seq int8arr;
6292  return reconstruct_primitive_collection(int8arr, length, length, ACE_OutputCDR::from_int8(0)) &&
6293  ser.write_int8_array(int8arr.get_buffer(), length);
6294  }
6295  case TK_UINT8: {
6296  DDS::UInt8Seq uint8arr;
6297  return reconstruct_primitive_collection(uint8arr, length, length, ACE_OutputCDR::from_uint8(0)) &&
6298  ser.write_uint8_array(uint8arr.get_buffer(), length);
6299  }
6300  case TK_INT16: {
6301  DDS::Int16Seq int16arr;
6302  return reconstruct_primitive_collection(int16arr, length, length, CORBA::Short()) &&
6303  ser.write_short_array(int16arr.get_buffer(), length);
6304  }
6305  case TK_UINT16: {
6306  DDS::UInt16Seq uint16arr;
6307  return reconstruct_primitive_collection(uint16arr, length, length, CORBA::UShort()) &&
6308  ser.write_ushort_array(uint16arr.get_buffer(), length);
6309  }
6310  case TK_INT64: {
6311  DDS::Int64Seq int64arr;
6312  return reconstruct_primitive_collection(int64arr, length, length, CORBA::LongLong()) &&
6313  ser.write_longlong_array(int64arr.get_buffer(), length);
6314  }
6315  case TK_UINT64: {
6316  DDS::UInt64Seq uint64arr;
6317  return reconstruct_primitive_collection(uint64arr, length, length, CORBA::ULongLong()) &&
6318  ser.write_ulonglong_array(uint64arr.get_buffer(), length);
6319  }
6320  case TK_FLOAT32: {
6321  DDS::Float32Seq float32arr;
6322  return reconstruct_primitive_collection(float32arr, length, length, CORBA::Float()) &&
6323  ser.write_float_array(float32arr.get_buffer(), length);
6324  }
6325  case TK_FLOAT64: {
6326  DDS::Float64Seq float64arr;
6327  return reconstruct_primitive_collection(float64arr, length, length, CORBA::Double()) &&
6328  ser.write_double_array(float64arr.get_buffer(), length);
6329  }
6330  case TK_FLOAT128: {
6331  DDS::Float128Seq float128arr;
6332  return reconstruct_primitive_collection(float128arr, length, length, CORBA::LongDouble()) &&
6333  ser.write_longdouble_array(float128arr.get_buffer(), length);
6334  }
6335  case TK_CHAR8: {
6336  DDS::CharSeq chararr;
6337  return reconstruct_primitive_collection(chararr, length, length, ACE_OutputCDR::from_char('\0')) &&
6338  ser.write_char_array(chararr.get_buffer(), length);
6339  }
6340 #ifdef DDS_HAS_WCHAR
6341  case TK_CHAR16: {
6342  DDS::WcharSeq wchararr;
6343  return reconstruct_primitive_collection(wchararr, length, length, ACE_OutputCDR::from_wchar(0)) &&
6344  ser.write_wchar_array(wchararr.get_buffer(), length);
6345  }
6346 #endif
6347  case TK_BYTE: {
6348  DDS::ByteSeq bytearr;
6349  return reconstruct_primitive_collection(bytearr, length, length, ACE_OutputCDR::from_octet(0x00)) &&
6350  ser.write_octet_array(bytearr.get_buffer(), length);
6351  }
6352  case TK_BOOLEAN: {
6353  DDS::BooleanSeq boolarr;
6354  return reconstruct_primitive_collection(boolarr, length, length, ACE_OutputCDR::from_boolean(false)) &&
6355  ser.write_boolean_array(boolarr.get_buffer(), length);
6356  }
6357  }
6358  return false;
6359 }
ACE_CDR::Long Long
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
ACE_CDR::UShort UShort
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_UINT64
Definition: TypeObject.h:221
bool reconstruct_primitive_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const ElementType &elem_tag) const
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223

◆ serialize_primitive_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_primitive_sequence ( DCPS::Serializer ser,
TypeKind  elem_tk,
CORBA::ULong  size,
CORBA::ULong  bound 
) const

Definition at line 4821 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

4823 {
4824  switch (elem_tk) {
4825  case TK_INT32: {
4826  DDS::Int32Seq int32seq;
4827  return reconstruct_primitive_collection(int32seq, size, bound, CORBA::Long()) &&
4828  (ser << int32seq);
4829  }
4830  case TK_UINT32: {
4831  DDS::UInt32Seq uint32seq;
4832  return reconstruct_primitive_collection(uint32seq, size, bound, CORBA::ULong()) &&
4833  (ser << uint32seq);
4834  }
4835  case TK_INT8: {
4836  DDS::Int8Seq int8seq;
4837  return reconstruct_primitive_collection(int8seq, size, bound, ACE_OutputCDR::from_int8(0)) &&
4838  (ser << int8seq);
4839  }
4840  case TK_UINT8: {
4841  DDS::UInt8Seq uint8seq;
4842  return reconstruct_primitive_collection(uint8seq, size, bound, ACE_OutputCDR::from_uint8(0)) &&
4843  (ser << uint8seq);
4844  }
4845  case TK_INT16: {
4846  DDS::Int16Seq int16seq;
4847  return reconstruct_primitive_collection(int16seq, size, bound, CORBA::Short()) &&
4848  (ser << int16seq);
4849  }
4850  case TK_UINT16: {
4851  DDS::UInt16Seq uint16seq;
4852  return reconstruct_primitive_collection(uint16seq, size, bound, CORBA::UShort()) &&
4853  (ser << uint16seq);
4854  }
4855  case TK_INT64: {
4856  DDS::Int64Seq int64seq;
4857  return reconstruct_primitive_collection(int64seq, size, bound, CORBA::LongLong()) &&
4858  (ser << int64seq);
4859  }
4860  case TK_UINT64: {
4861  DDS::UInt64Seq uint64seq;
4862  return reconstruct_primitive_collection(uint64seq, size, bound, CORBA::ULongLong()) &&
4863  (ser << uint64seq);
4864  }
4865  case TK_FLOAT32: {
4866  DDS::Float32Seq float32seq;
4867  return reconstruct_primitive_collection(float32seq, size, bound, CORBA::Float()) &&
4868  (ser << float32seq);
4869  }
4870  case TK_FLOAT64: {
4871  DDS::Float64Seq float64seq;
4872  return reconstruct_primitive_collection(float64seq, size, bound, CORBA::Double()) &&
4873  (ser << float64seq);
4874  }
4875  case TK_FLOAT128: {
4876  DDS::Float128Seq float128seq;
4877  return reconstruct_primitive_collection(float128seq, size, bound, CORBA::LongDouble()) &&
4878  (ser << float128seq);
4879  }
4880  case TK_CHAR8: {
4881  DDS::CharSeq charseq;
4882  return reconstruct_primitive_collection(charseq, size, bound, ACE_OutputCDR::from_char('\0')) &&
4883  (ser << charseq);
4884  }
4885 #ifdef DDS_HAS_WCHAR
4886  case TK_CHAR16: {
4887  DDS::WcharSeq wcharseq;
4888  return reconstruct_primitive_collection(wcharseq, size, bound, ACE_OutputCDR::from_wchar(0)) &&
4889  (ser << wcharseq);
4890  }
4891 #endif
4892  case TK_BYTE: {
4893  DDS::ByteSeq byteseq;
4894  return reconstruct_primitive_collection(byteseq, size, bound, ACE_OutputCDR::from_octet(0x00)) &&
4895  (ser << byteseq);
4896  }
4897  case TK_BOOLEAN: {
4898  DDS::BooleanSeq boolseq;
4899  return reconstruct_primitive_collection(boolseq, size, bound, ACE_OutputCDR::from_boolean(false)) &&
4900  (ser << boolseq);
4901  }
4902  }
4903  return false;
4904 }
ACE_CDR::Long Long
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
ACE_CDR::UShort UShort
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_UINT64
Definition: TypeObject.h:221
bool reconstruct_primitive_collection(CollectionType &collection, CORBA::ULong size, CORBA::ULong bound, const ElementType &elem_tag) const
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223

◆ serialize_primitive_value()

template<typename PrimitiveType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_primitive_value ( DCPS::Serializer ser,
PrimitiveType  default_value 
) const

Definition at line 4039 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::MEMBER_ID_INVALID.

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

4041 {
4042  const_single_iterator it = single_map_.find(MEMBER_ID_INVALID);
4043  if (it != single_map_.end()) {
4044  return serialize_single_value(ser, it->second);
4045  }
4046 
4047  // No data stored. Use default value.
4048  set_default_basic_value(default_value);
4049  return ser << default_value;
4050 }
void set_default_basic_value(CORBA::Long &value) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const

◆ serialize_selected_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_selected_member_xcdr2 ( DCPS::Serializer ser,
DDS::MemberId  selected_id,
DDS::ExtensibilityKind  extensibility 
) const

Definition at line 8185 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::get_base_type(), DDS::RETCODE_OK, and OpenDDS::XTypes::DynamicDataBase::type_.

8187 {
8188  DDS::DynamicTypeMember_var selected_dtm;
8189  if (type_->get_member(selected_dtm, selected_id) != DDS::RETCODE_OK) {
8190  return false;
8191  }
8192  DDS::MemberDescriptor_var selected_md;
8193  if (selected_dtm->get_descriptor(selected_md) != DDS::RETCODE_OK) {
8194  return false;
8195  }
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();
8199 
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);
8204  }
8205 
8206  const_sequence_iterator seq_it = sequence_map_.find(selected_id);
8207  if (seq_it != sequence_map_.end()) {
8208  DDS::TypeDescriptor_var selected_td;
8209  if (selected_type->get_descriptor(selected_td) != DDS::RETCODE_OK) {
8210  return false;
8211  }
8212  const TypeKind elem_tk = get_base_type(selected_td->element_type())->get_kind();
8213  return serialize_sequence_aggregated_member_xcdr2(ser, seq_it, elem_tk, optional,
8214  must_understand, extensibility);
8215  }
8216 
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,
8222  }
8223  return false;
8224 }
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
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
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
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
const ReturnCode_t RETCODE_OK
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialize_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 6148 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::is_basic(), OpenDDS::XTypes::is_primitive(), DDS::RETCODE_OK, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

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

6149 {
6150  const CORBA::ULong bound = type_desc_->bound()[0];
6151 
6152  const DDS::DynamicType_var elem_type = get_base_type(type_desc_->element_type());
6153  const TypeKind elem_tk = elem_type->get_kind();
6154  DDS::TypeDescriptor_var elem_td;
6155  if (elem_type->get_descriptor(elem_td) != DDS::RETCODE_OK) {
6156  return false;
6157  }
6158 
6159  if (is_basic(elem_tk) || elem_tk == TK_ENUM || elem_tk == TK_BITMASK) {
6160  const bool is_empty = single_map_.empty() && complex_map_.empty();
6161  CORBA::ULong length = 0;
6162  if (!is_empty) {
6163  CORBA::ULong largest_index;
6164  if (!get_largest_index_basic(largest_index)) {
6165  return false;
6166  }
6167  length = largest_index + 1;
6168  }
6169  if (is_primitive(elem_tk)) {
6170  return serialize_primitive_sequence(ser, elem_tk, length, bound);
6171  } else if (elem_tk == TK_STRING8) {
6172  return serialize_generic_string_sequence<const char*>(ser, length, bound);
6173  } else if (elem_tk == TK_STRING16) {
6174 #ifdef DDS_HAS_WCHAR
6175  return serialize_generic_string_sequence<const CORBA::WChar*>(ser, length, bound);
6176 #else
6177  return false;
6178 #endif
6179  } else if (elem_tk == TK_ENUM) {
6180  const CORBA::ULong bit_bound = elem_td->bound()[0];
6181  return serialize_enum_sequence(ser, length, bit_bound, bound, elem_type);
6182  } else {
6183  const CORBA::ULong bit_bound = elem_td->bound()[0];
6184  return serialize_bitmask_sequence(ser, length, bit_bound, bound);
6185  }
6186  } else if (elem_tk == TK_SEQUENCE) {
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();
6189  if (is_basic(nested_elem_tk) || nested_elem_tk == TK_ENUM ||
6190  nested_elem_tk == TK_BITMASK) {
6191  const bool is_empty = sequence_map_.empty() && complex_map_.empty();
6192  CORBA::ULong length = 0;
6193  if (!is_empty) {
6194  CORBA::ULong largest_index;
6195  if (!get_largest_index_basic_sequence(largest_index)) {
6196  return false;
6197  }
6198  length = largest_index + 1;
6199  }
6200  if (is_basic(nested_elem_tk)) {
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);
6204  } else {
6205  return serialize_nesting_bitmask_sequence(ser, length, bound);
6206  }
6207  }
6208  }
6209 
6210  // Elements with all the other types are stored in the complex map.
6211  CORBA::ULong length = 0;
6212  if (!complex_map_.empty()) {
6213  CORBA::ULong largest_index;
6214  if (!get_largest_complex_index(largest_index)) {
6215  return false;
6216  }
6217  length = largest_index + 1;
6218  }
6219  return serialize_complex_sequence(ser, length, bound, elem_type, ext);
6220 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
bool serialize_nesting_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
const TypeKind TK_STRING16
Definition: TypeObject.h:232
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool serialize_nesting_basic_sequence(DCPS::Serializer &ser, TypeKind nested_elem_tk, CORBA::ULong size, CORBA::ULong bound) const
bool is_primitive(TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
bool serialize_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound, const DDS::DynamicType_var &enum_type) const
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
bool serialize_nesting_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bound) const
const DDS::TypeDescriptor_var & type_desc_
bool serialize_primitive_sequence(DCPS::Serializer &ser, TypeKind elem_tk, CORBA::ULong size, CORBA::ULong bound) const
const TypeKind TK_STRING8
Definition: TypeObject.h:231
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
bool serialize_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound) const
bool get_largest_index_basic(CORBA::ULong &index) const
bool get_largest_complex_index(CORBA::ULong &index) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
bool is_basic(TypeKind tk)

◆ serialize_sequence_aggregated_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence_aggregated_member_xcdr2 ( DCPS::Serializer ser,
const_sequence_iterator  it,
TypeKind  elem_tk,
bool  optional,
bool  must_understand,
DDS::ExtensibilityKind  extensibility 
) const

Definition at line 7676 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, and OpenDDS::DCPS::Serializer::write_parameter_id().

7679 {
7680  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7681  if (!(ser << ACE_OutputCDR::from_boolean(true))) {
7682  return false;
7683  }
7684  } else if (extensibility == DDS::MUTABLE) {
7685  const DCPS::Encoding& encoding = ser.encoding();
7686  size_t member_size = 0;
7687  if (is_basic(elem_tk)) {
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);
7691  } else if (elem_tk == TK_BITMASK) {
7692  serialized_size_bitmask_sequence(encoding, member_size, it);
7693  } else {
7694  return false;
7695  }
7696  if (!ser.write_parameter_id(it->first, member_size, must_understand)) {
7697  return false;
7698  }
7699  }
7700  if (is_basic(elem_tk)) {
7701  return serialize_basic_sequence(ser, it);
7702  } else if (elem_tk == TK_ENUM) {
7703  return serialize_enum_sequence(ser, it);
7704  } else if (elem_tk == TK_BITMASK) {
7705  return serialize_bitmask_sequence(ser, it);
7706  }
7707  return false;
7708 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
bool serialize_basic_sequence(DCPS::Serializer &ser, const_sequence_iterator it) const
bool serialize_enum_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound, const DDS::DynamicType_var &enum_type) const
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
bool serialize_bitmask_sequence(DCPS::Serializer &ser, CORBA::ULong size, CORBA::ULong bitbound, CORBA::ULong seqbound) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool serialized_size_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialize_sequence_member_default_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence_member_default_value ( DCPS::Serializer ser,
TypeKind  elem_tk 
) const

Definition at line 7375 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::is_primitive(), OpenDDS::DCPS::uint32_cdr_size, OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Encoding::xcdr_version(), and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

7377 {
7378  // Zero-length sequence
7379  const DCPS::Encoding& encoding = ser.encoding();
7380  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2 && !is_primitive(elem_tk)) {
7381  if (!ser.write_delimiter(2 * DCPS::uint32_cdr_size)) {
7382  return false;
7383  }
7384  }
7385  return ser << static_cast<CORBA::ULong>(0);
7386 }
bool is_primitive(TypeKind tk)
const size_t uint32_cdr_size
Definition: Serializer.h:96
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_sequence_struct_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7741 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, DDS::MUTABLE, and OpenDDS::DCPS::Serializer::write_parameter_id().

7745 {
7746  const DCPS::Encoding& encoding = ser.encoding();
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()) {
7750  if (optional) {
7752  return ser << ACE_OutputCDR::from_boolean(false);
7753  }
7754  return true;
7755  }
7756  if (extensibility == DDS::MUTABLE) {
7757  size_t member_size = 0;
7758  serialized_size_sequence_member_default_value(encoding, member_size, elem_tk);
7759  if (!ser.write_parameter_id(id, member_size, must_understand)) {
7760  return false;
7761  }
7762  }
7763  return serialize_sequence_member_default_value(ser, elem_tk);
7764  }
7765 
7766  if (seq_it != sequence_map_.end()) {
7767  return serialize_sequence_aggregated_member_xcdr2(ser, seq_it, elem_tk, optional,
7768  must_understand, extensibility);
7769  }
7770  return serialize_complex_aggregated_member_xcdr2(ser, complex_it, optional,
7771  must_understand, extensibility, ext);
7772 }
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
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
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_sequence_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk) const
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool serialize_sequence_member_default_value(DCPS::Serializer &ser, TypeKind elem_tk) const

◆ serialize_sequence_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence_value ( DCPS::Serializer ser,
const SequenceValue sv 
) const

Definition at line 5520 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::SequenceValue::elem_kind_, OpenDDS::XTypes::DynamicDataImpl::SequenceValue::get(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

5522 {
5523  switch (sv.elem_kind_) {
5524  case TK_INT32:
5525  return ser << sv.get<DDS::Int32Seq>();
5526  case TK_UINT32:
5527  return ser << sv.get<DDS::UInt32Seq>();
5528  case TK_INT8:
5529  return ser << sv.get<DDS::Int8Seq>();
5530  case TK_UINT8:
5531  return ser << sv.get<DDS::UInt8Seq>();
5532  case TK_INT16:
5533  return ser << sv.get<DDS::Int16Seq>();
5534  case TK_UINT16:
5535  return ser << sv.get<DDS::UInt16Seq>();
5536  case TK_INT64:
5537  return ser << sv.get<DDS::Int64Seq>();
5538  case TK_UINT64:
5539  return ser << sv.get<DDS::UInt64Seq>();
5540  case TK_FLOAT32:
5541  return ser << sv.get<DDS::Float32Seq>();
5542  case TK_FLOAT64:
5543  return ser << sv.get<DDS::Float64Seq>();
5544  case TK_FLOAT128:
5545  return ser << sv.get<DDS::Float128Seq>();
5546  case TK_CHAR8:
5547  return ser << sv.get<DDS::CharSeq>();
5548  case TK_BYTE:
5549  return ser << sv.get<DDS::ByteSeq>();
5550  case TK_BOOLEAN:
5551  return ser << sv.get<DDS::BooleanSeq>();
5552  case TK_STRING8:
5553  return ser << sv.get<DDS::StringSeq>();
5554 #ifdef DDS_HAS_WCHAR
5555  case TK_CHAR16:
5556  return ser << sv.get<DDS::WcharSeq>();
5557  case TK_STRING16:
5558  return ser << sv.get<DDS::WstringSeq>();
5559 #endif
5560  default:
5561  return false;
5562  }
5563 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialize_single_aggregated_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7161 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), DDS::FINAL, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, and OpenDDS::DCPS::Serializer::write_parameter_id().

7164 {
7165  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7166  if (!(ser << ACE_OutputCDR::from_boolean(true))) {
7167  return false;
7168  }
7169  } else if (extensibility == DDS::MUTABLE) {
7170  const DCPS::Encoding& encoding = ser.encoding();
7171  const TypeKind member_tk = member_type->get_kind();
7172  size_t member_size = 0;
7173  if (is_basic(member_tk)) {
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);
7177  } else if (member_tk == TK_BITMASK) {
7178  serialized_size_bitmask(encoding, member_size, member_type);
7179  } else {
7180  return false;
7181  }
7182  if (!ser.write_parameter_id(it->first, member_size, must_understand)) {
7183  return false;
7184  }
7185  }
7186  return serialize_single_value(ser, it->second);
7187 }
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
bool serialized_size_bitmask(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &bitmask_type) const
bool serialized_size_basic_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk, const_single_iterator it) const
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialize_single_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_single_value ( DCPS::Serializer ser,
const SingleValue sv 
) const

Definition at line 3993 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::SingleValue::get(), OpenDDS::XTypes::DynamicDataImpl::SingleValue::kind_, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

3995 {
3996  switch (sv.kind_) {
3997  case TK_INT32:
3998  return ser << sv.get<CORBA::Long>();
3999  case TK_UINT32:
4000  return ser << sv.get<CORBA::ULong>();
4001  case TK_INT8:
4002  return ser << sv.get<ACE_OutputCDR::from_int8>();
4003  case TK_UINT8:
4004  return ser << sv.get<ACE_OutputCDR::from_uint8>();
4005  case TK_INT16:
4006  return ser << sv.get<CORBA::Short>();
4007  case TK_UINT16:
4008  return ser << sv.get<CORBA::UShort>();
4009  case TK_INT64:
4010  return ser << sv.get<CORBA::LongLong>();
4011  case TK_UINT64:
4012  return ser << sv.get<CORBA::ULongLong>();
4013  case TK_FLOAT32:
4014  return ser << sv.get<CORBA::Float>();
4015  case TK_FLOAT64:
4016  return ser << sv.get<CORBA::Double>();
4017  case TK_FLOAT128:
4018  return ser << sv.get<CORBA::LongDouble>();
4019  case TK_CHAR8:
4020  return ser << sv.get<ACE_OutputCDR::from_char>();
4021  case TK_BYTE:
4022  return ser << sv.get<ACE_OutputCDR::from_octet>();
4023  case TK_BOOLEAN:
4024  return ser << sv.get<ACE_OutputCDR::from_boolean>();
4025  case TK_STRING8:
4026  return ser << sv.get<const char*>();
4027 #ifdef DDS_HAS_WCHAR
4028  case TK_CHAR16:
4029  return ser << sv.get<ACE_OutputCDR::from_wchar>();
4030  case TK_STRING16:
4031  return ser << sv.get<const CORBA::WChar*>();
4032 #endif
4033  default:
4034  return false;
4035  }
4036 }
ACE_CDR::Long Long
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
ACE_CDR::WChar WChar
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223

◆ serialize_string_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_string_value ( DCPS::Serializer ser) const

◆ serialize_structure()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 7946 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Encoding::xcdr_version(), OpenDDS::DCPS::Encoding::XCDR_VERSION_1, and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

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

7947 {
7948  const DCPS::Encoding& encoding = ser.encoding();
7949  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
7950  return serialize_structure_xcdr2(ser, ext);
7951  } else if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_1) {
7952  return serialize_structure_xcdr1(ser, ext);
7953  }
7954  return false;
7955 }
bool serialize_structure_xcdr2(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
bool serialize_structure_xcdr1(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialize_structure_xcdr1()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure_xcdr1 ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 7928 of file DynamicDataImpl.cpp.

7929 {
7930  // TODO: Support only Final & Mutable extensibility?
7931  return false;
7932 }

◆ serialize_structure_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure_xcdr2 ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 7849 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::DynamicDataBase::exclude_member(), OpenDDS::XTypes::extensibility(), OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::DynamicDataBase::has_explicit_keys(), OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::XTypes::DynamicDataBase::nested(), DDS::RETCODE_OK, struct_has_explicit_keys(), OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::DynamicDataBase::type_, OpenDDS::XTypes::DynamicDataBase::type_desc_, and OpenDDS::DCPS::Serializer::write_delimiter().

7850 {
7851  const DDS::ExtensibilityKind extensibility = type_desc_->extensibility_kind();
7853 
7854  // Delimiter
7855  const DCPS::Encoding& encoding = ser.encoding();
7856  size_t total_size = 0;
7857  if (extensibility == DDS::APPENDABLE || extensibility == DDS::MUTABLE) {
7858  if (!data_->serialized_size_i(encoding, total_size, ext) || !ser.write_delimiter(total_size)) {
7859  return false;
7860  }
7861  }
7862 
7863  // Members
7864  const CORBA::ULong member_count = type_->get_member_count();
7865  for (CORBA::ULong i = 0; i < member_count; ++i) {
7866  DDS::DynamicTypeMember_var dtm;
7867  if (type_->get_member_by_index(dtm, i) != DDS::RETCODE_OK) {
7868  return false;
7869  }
7870  DDS::MemberDescriptor_var md;
7871  if (dtm->get_descriptor(md) != DDS::RETCODE_OK) {
7872  return false;
7873  }
7874 
7875  if (exclude_member(ext, md->is_key(), struct_has_explicit_keys)) {
7876  continue;
7877  }
7878 
7879  const DDS::MemberId id = md->id();
7880  const CORBA::Boolean optional = md->is_optional();
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();
7884 
7885  if (is_basic(member_tk) || member_tk == TK_ENUM || member_tk == TK_BITMASK) {
7886  if (!serialize_basic_struct_member_xcdr2(ser, id, member_type, optional,
7887  must_understand, extensibility)) {
7888  return false;
7889  }
7890  continue;
7891  } else if (member_tk == TK_SEQUENCE) {
7892  DDS::TypeDescriptor_var member_td;
7893  if (member_type->get_descriptor(member_td) != DDS::RETCODE_OK) {
7894  return false;
7895  }
7896  const DDS::DynamicType_var elem_type = get_base_type(member_td->element_type());
7897  const TypeKind elem_tk = elem_type->get_kind();
7898  if (is_basic(elem_tk) || elem_tk == TK_ENUM || elem_tk == TK_BITMASK) {
7899  if (!serialize_sequence_struct_member_xcdr2(ser, id, elem_tk, optional,
7900  must_understand, extensibility, nested(ext))) {
7901  return false;
7902  }
7903  continue;
7904  }
7905  }
7906 
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))) {
7911  return false;
7912  }
7913  } else if (!serialize_complex_aggregated_member_xcdr2_default(ser, id, member_type, optional,
7914  must_understand, extensibility, nested(ext))) {
7915  return false;
7916  }
7917  }
7918  return true;
7919 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
bool struct_has_explicit_keys(AST_Structure *node)
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool serialized_size_i(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
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
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
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
static bool has_explicit_keys(DDS::DynamicType *dt)
ACE_CDR::Boolean Boolean
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
static bool exclude_member(DCPS::Sample::Extent ext, bool is_key, bool has_explicit_keys)
const DDS::TypeDescriptor_var & type_desc_
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
ExtensibilityKind
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
const TypeKind TK_ENUM
Definition: TypeObject.h:238
static DCPS::Sample::Extent nested(DCPS::Sample::Extent ext)
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialize_union()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 8438 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Encoding::xcdr_version(), OpenDDS::DCPS::Encoding::XCDR_VERSION_1, and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

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

8439 {
8440  const DCPS::Encoding& encoding = ser.encoding();
8441  if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_2) {
8442  return serialize_union_xcdr2(ser, ext);
8443  } else if (encoding.xcdr_version() == DCPS::Encoding::XCDR_VERSION_1) {
8444  return serialize_union_xcdr1(ser, ext);
8445  }
8446  return false;
8447 }
bool serialize_union_xcdr2(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialize_union_xcdr1(DCPS::Serializer &ser, DCPS::Sample::Extent ext) const

◆ serialize_union_xcdr1()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union_xcdr1 ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 8420 of file DynamicDataImpl.cpp.

8421 {
8422  // TODO:
8423  return false;
8424 }

◆ serialize_union_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union_xcdr2 ( DCPS::Serializer ser,
DCPS::Sample::Extent  ext 
) const

Definition at line 8310 of file DynamicDataImpl.cpp.

References ACE_ERROR, DDS::APPENDABLE, OpenDDS::XTypes::DISCRIMINATOR_ID, OpenDDS::DCPS::Serializer::encoding(), OpenDDS::XTypes::extensibility(), OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::DynamicDataBase::has_explicit_keys(), OpenDDS::XTypes::is_primitive(), OpenDDS::DCPS::Sample::KeyOnly, LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::XTypes::MEMBER_ID_INVALID, DDS::MUTABLE, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_OK, OpenDDS::DCPS::retcode_to_string(), OpenDDS::XTypes::DynamicDataBase::type_, OpenDDS::XTypes::DynamicDataBase::type_desc_, OpenDDS::DCPS::Serializer::write_delimiter(), and OpenDDS::DCPS::Serializer::write_parameter_id().

8311 {
8312  if (ext == DCPS::Sample::KeyOnly && !has_explicit_keys(type_)) {
8313  // nothing is serialized (not even a delimiter) for key-only serialization when there is no @key
8314  return true;
8315  }
8316 
8317  const DDS::ExtensibilityKind extensibility = type_desc_->extensibility_kind();
8318 
8319  // Delimiter
8320  const DCPS::Encoding& encoding = ser.encoding();
8321  size_t total_size = 0;
8322  if (extensibility == DDS::APPENDABLE || extensibility == DDS::MUTABLE) {
8323  if (!data_->serialized_size_i(encoding, total_size, ext) || !ser.write_delimiter(total_size)) {
8324  return false;
8325  }
8326  }
8327 
8328  const_single_iterator single_it = single_map_.find(DISCRIMINATOR_ID);
8329  const_complex_iterator complex_it = complex_map_.find(DISCRIMINATOR_ID);
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();
8332  DDS::DynamicType_var disc_type = get_base_type(type_desc_->discriminator_type());
8333  const TypeKind disc_tk = disc_type->get_kind();
8334 
8335  // Read the discriminator value if the user already set it. Otherwise,
8336  // set it to the default value of the corresponding type.
8337  CORBA::Long disc_value;
8338  if (has_disc) {
8339  if (!get_discriminator_value(disc_value, single_it, complex_it, disc_type)) {
8340  return false;
8341  }
8342  } else if (!set_default_discriminator_value(disc_value, disc_type)) {
8343  return false;
8344  }
8345 
8346  if (selected_id == MEMBER_ID_INVALID) {
8347  // If the defined discriminator value selects a member, serialize the member with
8348  // its default value. Otherwise, serialize only the discriminator.
8349  bool found_selected_member = false;
8350  DDS::MemberDescriptor_var selected_md;
8351  const DDS::ReturnCode_t rc =
8352  data_->get_selected_union_branch(disc_value, found_selected_member, selected_md);
8353  if (rc != DDS::RETCODE_OK) {
8354  if (log_level >= LogLevel::Notice) {
8355  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataImpl::serialize_union_xcdr2:"
8356  " get_selected_union_branch failed: %C\n", retcode_to_string(rc)));
8357  }
8358  return false;
8359  }
8360  // Discriminator
8361  if (!serialize_discriminator_member_xcdr2(ser, disc_value, disc_type, extensibility)) {
8362  return false;
8363  }
8364  if (ext == DCPS::Sample::KeyOnly) {
8365  return true;
8366  }
8367  // Selected member
8368  if (found_selected_member) {
8369  DDS::DynamicType_var selected_type = get_base_type(selected_md->type());
8370  const DDS::MemberId id = selected_md->id();
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,
8376  }
8377  return true;
8378  }
8379 
8380  // Both discriminator and a selected member exist in the data container.
8381  if (single_it != single_map_.end()) {
8382  if (extensibility == DDS::MUTABLE) {
8383  size_t disc_size = 0;
8384  if (is_primitive(disc_tk)) {
8385  serialized_size_primitive_member(encoding, disc_size, disc_tk);
8386  } else { // Enum is the only other type can be used for discriminator
8387  serialized_size_enum(encoding, disc_size, disc_type);
8388  }
8389  // Discriminator always has Id 0?
8390  if (!ser.write_parameter_id(0, disc_size, false)) {
8391  return false;
8392  }
8393  }
8394  if (!serialize_single_value(ser, single_it->second)) {
8395  return false;
8396  }
8397  } else {
8398  if (extensibility == DDS::MUTABLE) {
8399  size_t disc_size = 0;
8400  serialized_size_complex_member_i(encoding, disc_size, complex_it->first, DCPS::Sample::Full);
8401  if (!ser.write_parameter_id(0, disc_size, false)) {
8402  return false;
8403  }
8404  }
8405  if (!serialize_complex_member_i(ser, complex_it->first, DCPS::Sample::Full)) {
8406  return false;
8407  }
8408  }
8409  return ext == DCPS::Sample::KeyOnly ||
8410  serialize_selected_member_xcdr2(ser, selected_id, extensibility);
8411 }
ACE_CDR::Long Long
#define ACE_ERROR(X)
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
bool serialize_complex_member_i(DCPS::Serializer &ser, DDS::MemberId id, DCPS::Sample::Extent ext) const
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
bool serialized_size_i(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool is_primitive(TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
static bool has_explicit_keys(DDS::DynamicType *dt)
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DDS::TypeDescriptor_var & type_desc_
bool serialize_discriminator_member_xcdr2(DCPS::Serializer &ser, CORBA::Long value, const DDS::DynamicType_var &disc_type, DDS::ExtensibilityKind extensibility) const
bool serialize_single_value(DCPS::Serializer &ser, const SingleValue &sv) const
bool serialize_selected_member_xcdr2(DCPS::Serializer &ser, DDS::MemberId selected_id, DDS::ExtensibilityKind extensibility) const
ExtensibilityKind
bool get_discriminator_value(CORBA::Long &value, const_single_iterator single_it, const_complex_iterator complex_it, const DDS::DynamicType_var &disc_type) const
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
OpenDDS_Dcps_Export LogLevel log_level
bool set_default_discriminator_value(CORBA::Long &value, const DDS::DynamicType_var &disc_type) const
const char * retcode_to_string(DDS::ReturnCode_t value)
Definition: DCPS_Utils.cpp:29
const ReturnCode_t RETCODE_OK
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
DDS::MemberId find_selected_member() const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
DDS::ReturnCode_t get_selected_union_branch(DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialize_wstring_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_wstring_value ( DCPS::Serializer ser) const

◆ serialized_size_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_array ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 6858 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::bound_total(), OpenDDS::STUN::encoding(), OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::is_basic(), OpenDDS::XTypes::MEMBER_ID_INVALID, DDS::RETCODE_OK, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

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

6861 {
6862  const DDS::DynamicType_var elem_type = get_base_type(type_desc_->element_type());
6863  const TypeKind elem_tk = elem_type->get_kind();
6864  DDS::TypeDescriptor_var elem_td;
6865  if (elem_type->get_descriptor(elem_td) != DDS::RETCODE_OK) {
6866  return false;
6867  }
6868 
6869  const CORBA::ULong length = bound_total(type_desc_);
6870  if (is_basic(elem_tk)) {
6871  serialized_size_primitive_array(encoding, size, elem_tk, length);
6872  return true;
6873  } else if (elem_tk == TK_STRING8) {
6874  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6875  if (!get_index_to_id_map(index_to_id, length)) {
6876  return false;
6877  }
6878  return serialized_size_generic_string_array<const char*>(encoding, size, index_to_id);
6879  } else if (elem_tk == TK_STRING16) {
6880 #ifdef DDS_HAS_WCHAR
6881  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6882  if (!get_index_to_id_map(index_to_id, length)) {
6883  return false;
6884  }
6885  return serialized_size_generic_string_array<const CORBA::WChar*>(encoding, size, index_to_id);
6886 #else
6887  return false;
6888 #endif
6889  } else if (elem_tk == TK_ENUM) {
6890  const CORBA::ULong bit_bound = elem_td->bound()[0];
6891  serialized_size_enum_array(encoding, size, length, bit_bound);
6892  return true;
6893  } else if (elem_tk == TK_BITMASK) {
6894  const CORBA::ULong bit_bound = elem_td->bound()[0];
6895  serialized_size_bitmask_array(encoding, size, length, bit_bound);
6896  return true;
6897  } else if (elem_tk == TK_SEQUENCE) {
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();
6900  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6901  if (!get_index_to_id_map(index_to_id, length)) {
6902  return false;
6903  }
6904  if (is_basic(nested_elem_tk)) {
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);
6908  } else if (nested_elem_tk == TK_BITMASK) {
6909  return serialized_size_nesting_bitmask_array(encoding, size, index_to_id);
6910  }
6911  }
6912 
6913  // Elements stored in complex map
6914  IndexToIdMap index_to_id;
6915  if (!get_index_to_id_from_complex(index_to_id, length)) {
6916  return false;
6917  }
6918  return serialized_size_complex_array(encoding, size, index_to_id, elem_type, ext);
6919 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
const TypeKind TK_STRING16
Definition: TypeObject.h:232
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
void serialized_size_bitmask_array(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool serialized_size_nesting_bitmask_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool serialized_size_nesting_basic_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
void serialized_size_enum_array(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length, CORBA::ULong bitbound) const
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
bool get_index_to_id_from_complex(IndexToIdMap &index_to_id, CORBA::ULong bound) const
DDS::UInt32 bound_total(DDS::TypeDescriptor_var descriptor)
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DDS::TypeDescriptor_var & type_desc_
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
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
bool is_basic(TypeKind tk)

◆ serialized_size_basic_member()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_basic_member ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  member_tk,
const_single_iterator  it 
) const

Definition at line 7032 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::is_primitive(), OpenDDS::XTypes::TK_STRING16, and OpenDDS::XTypes::TK_STRING8.

7034 {
7035  if (is_primitive(member_tk)) {
7036  return serialized_size_primitive_member(encoding, size, member_tk);
7037  } else if (member_tk == TK_STRING8 || member_tk == TK_STRING16) {
7038  serialized_size_string_common(encoding, size, it->second);
7039  return true;
7040  }
7041  return false;
7042 }
const TypeKind TK_STRING16
Definition: TypeObject.h:232
bool is_primitive(TypeKind tk)
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_string_common(const DCPS::Encoding &encoding, size_t &size, const char *str) const

◆ serialized_size_basic_member_default_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_basic_member_default_value ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  member_tk 
) const

Definition at line 7009 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::is_primitive(), OpenDDS::XTypes::TK_STRING16, and OpenDDS::XTypes::TK_STRING8.

7011 {
7012  if (is_primitive(member_tk)) {
7013  return serialized_size_primitive_member(encoding, size, member_tk);
7014  } else if (member_tk == TK_STRING8) {
7015  const char* str_default;
7016  set_default_basic_value(str_default);
7017  serialized_size_string_common(encoding, size, str_default);
7018  return true;
7019  }
7020 #ifdef DDS_HAS_WCHAR
7021  else if (member_tk == TK_STRING16) {
7022  const CORBA::WChar* wstr_default;
7023  set_default_basic_value(wstr_default);
7024  serialized_size_string_common(encoding, size, wstr_default);
7025  return true;
7026  }
7027 #endif
7028  return false;
7029 }
void set_default_basic_value(CORBA::Long &value) const
const TypeKind TK_STRING16
Definition: TypeObject.h:232
bool is_primitive(TypeKind tk)
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
const TypeKind TK_STRING8
Definition: TypeObject.h:231
ACE_CDR::WChar WChar
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_string_common(const DCPS::Encoding &encoding, size_t &size, const char *str) const

◆ serialized_size_basic_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_basic_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const_sequence_iterator  it 
) const

Definition at line 7388 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

7390 {
7391  switch (it->second.elem_kind_) {
7392  case TK_INT32: {
7393  const DDS::Int32Seq& seq = it->second.get<DDS::Int32Seq>();
7394  serialized_size(encoding, size, seq);
7395  return true;
7396  }
7397  case TK_UINT32: {
7398  const DDS::UInt32Seq& seq = it->second.get<DDS::UInt32Seq>();
7399  serialized_size(encoding, size, seq);
7400  return true;
7401  }
7402  case TK_INT8: {
7403  const DDS::Int8Seq& seq = it->second.get<DDS::Int8Seq>();
7404  serialized_size(encoding, size, seq);
7405  return true;
7406  }
7407  case TK_UINT8: {
7408  const DDS::UInt8Seq& seq = it->second.get<DDS::UInt8Seq>();
7409  serialized_size(encoding, size, seq);
7410  return true;
7411  }
7412  case TK_INT16: {
7413  const DDS::Int16Seq& seq = it->second.get<DDS::Int16Seq>();
7414  serialized_size(encoding, size, seq);
7415  return true;
7416  }
7417  case TK_UINT16: {
7418  const DDS::UInt16Seq& seq = it->second.get<DDS::UInt16Seq>();
7419  serialized_size(encoding, size, seq);
7420  return true;
7421  }
7422  case TK_INT64: {
7423  const DDS::Int64Seq& seq = it->second.get<DDS::Int64Seq>();
7424  serialized_size(encoding, size, seq);
7425  return true;
7426  }
7427  case TK_UINT64: {
7428  const DDS::UInt64Seq& seq = it->second.get<DDS::UInt64Seq>();
7429  serialized_size(encoding, size, seq);
7430  return true;
7431  }
7432  case TK_FLOAT32: {
7433  const DDS::Float32Seq& seq = it->second.get<DDS::Float32Seq>();
7434  serialized_size(encoding, size, seq);
7435  return true;
7436  }
7437  case TK_FLOAT64: {
7438  const DDS::Float64Seq& seq = it->second.get<DDS::Float64Seq>();
7439  serialized_size(encoding, size, seq);
7440  return true;
7441  }
7442  case TK_FLOAT128: {
7443  const DDS::Float128Seq& seq = it->second.get<DDS::Float128Seq>();
7444  serialized_size(encoding, size, seq);
7445  return true;
7446  }
7447  case TK_CHAR8: {
7448  const DDS::CharSeq& seq = it->second.get<DDS::CharSeq>();
7449  serialized_size(encoding, size, seq);
7450  return true;
7451  }
7452  case TK_BYTE: {
7453  const DDS::ByteSeq& seq = it->second.get<DDS::ByteSeq>();
7454  serialized_size(encoding, size, seq);
7455  return true;
7456  }
7457  case TK_BOOLEAN: {
7458  const DDS::BooleanSeq& seq = it->second.get<DDS::BooleanSeq>();
7459  serialized_size(encoding, size, seq);
7460  return true;
7461  }
7462  case TK_STRING8: {
7463  const DDS::StringSeq& seq = it->second.get<DDS::StringSeq>();
7464  serialized_size(encoding, size, seq);
7465  return true;
7466  }
7467 #ifdef DDS_HAS_WCHAR
7468  case TK_CHAR16: {
7469  const DDS::WcharSeq& seq = it->second.get<DDS::WcharSeq>();
7470  serialized_size(encoding, size, seq);
7471  return true;
7472  }
7473  case TK_STRING16: {
7474  const DDS::WstringSeq& seq = it->second.get<DDS::WstringSeq>();
7475  serialized_size(encoding, size, seq);
7476  return true;
7477  }
7478 #endif
7479  }
7480  return false;
7481 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
bool serialized_size(const Encoding &encoding, size_t &size, const KeyOnly< const XTypes::DynamicDataImpl > &key)
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialized_size_basic_struct_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7280 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, DDS::FINAL, OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::serialized_size_parameter_id(), and OpenDDS::XTypes::TK_ENUM.

7284 {
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()) {
7289  if (optional) {
7292  }
7293  return true;
7294  }
7295  if (extensibility == DDS::MUTABLE) {
7296  serialized_size_parameter_id(encoding, size, mutable_running_total);
7297  }
7298  if (is_basic(member_tk)) {
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);
7302  } else { // Bitmask
7303  return serialized_size_bitmask(encoding, size, member_type);
7304  }
7305  }
7306 
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);
7310  }
7311  return serialized_size_complex_aggregated_member_xcdr2(encoding, size, complex_it, optional,
7312  extensibility, mutable_running_total,
7314 }
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
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
bool serialized_size_bitmask(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &bitmask_type) const
bool serialized_size_basic_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
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)

◆ serialized_size_bitmask()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::DynamicType_var &  bitmask_type 
) const

Definition at line 4108 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and DDS::RETCODE_OK.

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

4110 {
4111  DDS::TypeDescriptor_var bitmask_td;
4112  if (bitmask_type->get_descriptor(bitmask_td) != DDS::RETCODE_OK) {
4113  return false;
4114  }
4115  const CORBA::ULong bit_bound = bitmask_td->bound()[0];
4116  if (bit_bound >= 1 && bit_bound <= 8) {
4117  primitive_serialized_size_uint8(encoding, size);
4118  return true;
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) {
4125  }
4126  return false;
4127 }
ACE_CDR::ULongLong ULongLong
ACE_CDR::ULong ULong
ACE_CDR::UShort UShort
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_array()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_array ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length,
CORBA::ULong  bitbound 
) const

Definition at line 6624 of file DynamicDataImpl.cpp.

6626 {
6627  if (bitbound >= 1 && bitbound <= 8) {
6629  } else if (bitbound >= 9 && bitbound <= 16) {
6631  } else if (bitbound >= 17 && bitbound <= 32) {
6633  } else { // from 33 to 64
6635  }
6636 }
void serialized_size_bitmask_array_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_array_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_array_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_array_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_array_as_uint16s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_array_as_uint16s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6535 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and OpenDDS::DCPS::serialized_size_delimiter().

6537 {
6540 }
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.
ACE_CDR::UShort UShort
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_array_as_uint32s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_array_as_uint32s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6565 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and OpenDDS::DCPS::serialized_size_delimiter().

6567 {
6570 }
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.
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_array_as_uint64s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_array_as_uint64s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6595 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and OpenDDS::DCPS::serialized_size_delimiter().

6597 {
6600 }
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.
ACE_CDR::ULongLong ULongLong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_array_as_uint8s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_array_as_uint8s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6505 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6507 {
6509  primitive_serialized_size_uint8(encoding, size, length);
6510 }
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [1/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::UInt8Seq seq 
) const

Definition at line 5252 of file DynamicDataImpl.cpp.

5254 {
5256 }
void serialized_size_bitmask_sequence_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [2/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::UInt16Seq seq 
) const

Definition at line 5299 of file DynamicDataImpl.cpp.

5301 {
5303 }
void serialized_size_bitmask_sequence_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [3/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::UInt32Seq seq 
) const

Definition at line 5346 of file DynamicDataImpl.cpp.

5348 {
5350 }
void serialized_size_bitmask_sequence_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [4/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::UInt64Seq seq 
) const

Definition at line 5393 of file DynamicDataImpl.cpp.

5395 {
5397 }
void serialized_size_bitmask_sequence_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [5/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length,
CORBA::ULong  bitbound 
) const

Definition at line 5428 of file DynamicDataImpl.cpp.

5430 {
5431  if (bitbound >= 1 && bitbound <= 8) {
5433  } else if (bitbound >= 9 && bitbound <= 16) {
5435  } else if (bitbound >= 17 && bitbound <= 32) {
5437  } else { // from 33 to 64
5439  }
5440 }
void serialized_size_bitmask_sequence_as_uint32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_sequence_as_uint8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_sequence_as_uint64s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_bitmask_sequence_as_uint16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence() [6/6]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const_sequence_iterator  it 
) const

Definition at line 7604 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

7606 {
7607  switch (it->second.elem_kind_) {
7608  case TK_UINT8: {
7609  const DDS::UInt8Seq& seq = it->second.get<DDS::UInt8Seq>();
7611  return true;
7612  }
7613  case TK_UINT16: {
7614  const DDS::UInt16Seq& seq = it->second.get<DDS::UInt16Seq>();
7616  return true;
7617  }
7618  case TK_UINT32: {
7619  const DDS::UInt32Seq& seq = it->second.get<DDS::UInt32Seq>();
7621  return true;
7622  }
7623  case TK_UINT64: {
7624  const DDS::UInt64Seq& seq = it->second.get<DDS::UInt64Seq>();
7626  return true;
7627  }
7628  }
7629  return false;
7630 }
sequence< unsigned short > UInt16Seq
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
const TypeKind TK_UINT16
Definition: TypeObject.h:219
sequence< unsigned long long > UInt64Seq
sequence< uint8 > UInt8Seq
sequence< unsigned long > UInt32Seq
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_bitmask_sequence_as_uint16s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence_as_uint16s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5288 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5290 {
5293  if (length == 0) {
5294  return;
5295  }
5297 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::UShort UShort
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_sequence_as_uint32s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence_as_uint32s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5335 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5337 {
5340  if (length == 0) {
5341  return;
5342  }
5344 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::ULong ULong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_sequence_as_uint64s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence_as_uint64s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5382 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5384 {
5387  if (length == 0) {
5388  return;
5389  }
5391 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::ULongLong ULongLong
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_bitmask_sequence_as_uint8s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_bitmask_sequence_as_uint8s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5241 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5243 {
5246  if (length == 0) {
5247  return;
5248  }
5249  primitive_serialized_size_uint8(encoding, size, length);
5250 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_complex_aggregated_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7235 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, DDS::FINAL, DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::XTypes::DynamicDataImpl::serialized_size_i(), and OpenDDS::DCPS::serialized_size_parameter_id().

7239 {
7240  const DDS::DynamicData_var& data_var = it->second;
7241  const DynamicDataImpl* data_impl = dynamic_cast<DynamicDataImpl*>(data_var.in());
7242  if (!data_impl) {
7243  return false;
7244  }
7245 
7246  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7248  } else if (extensibility == DDS::MUTABLE) {
7249  serialized_size_parameter_id(encoding, size, mutable_running_total);
7250  }
7251  return data_impl->serialized_size_i(encoding, size, ext);
7252 }
DynamicDataImpl(DDS::DynamicType_ptr type)
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialized_size_complex_aggregated_member_xcdr2_default()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7192 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::XTypes::DynamicDataImpl::DynamicDataImpl(), DDS::FINAL, DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), and OpenDDS::DCPS::serialized_size_parameter_id().

7196 {
7197  if (optional) {
7200  }
7201  return true;
7202  }
7203  if (extensibility == DDS::MUTABLE) {
7204  serialized_size_parameter_id(encoding, size, mutable_running_total);
7205  }
7206 
7207  return DynamicDataImpl(member_type).serialized_size_i(encoding, size, ext);
7208 }
DynamicDataImpl(DDS::DynamicType_ptr type)
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialized_size_complex_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 6822 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6825 {
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)) {
6829  return false;
6830  }
6831  }
6832  return true;
6833 }
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.
ACE_CDR::ULong ULong
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 DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_complex_member()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 5966 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::DynamicDataImpl(), and OpenDDS::XTypes::MEMBER_ID_INVALID.

5968 {
5969  if (id != MEMBER_ID_INVALID) {
5970  return serialized_size_complex_member_i(encoding, size, id, ext);
5971  } else {
5972  return DynamicDataImpl(elem_type).serialized_size_i(encoding, size, ext);
5973  }
5974 }
DynamicDataImpl(DDS::DynamicType_ptr type)
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_complex_member_i()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_complex_member_i ( const DCPS::Encoding encoding,
size_t &  size,
DDS::MemberId  id,
DCPS::Sample::Extent  ext 
) const

Definition at line 5593 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::serialized_size_i().

5595 {
5596  const DDS::DynamicData_var& dd_var = complex_map_.at(id);
5597  const DynamicDataImpl* data_impl = dynamic_cast<const DynamicDataImpl*>(dd_var.in());
5598  if (!data_impl) {
5599  return false;
5600  }
5601  return data_impl->serialized_size_i(encoding, size, ext);
5602 }
DynamicDataImpl(DDS::DynamicType_ptr type)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_complex_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 5976 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5978 {
5981  if (index_to_id.empty()) {
5982  return true;
5983  }
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)) {
5986  return false;
5987  }
5988  }
5989  return true;
5990 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::ULong ULong
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 DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_discriminator_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 8065 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::is_primitive(), DDS::MUTABLE, and OpenDDS::DCPS::serialized_size_parameter_id().

8068 {
8069  if (extensibility == DDS::MUTABLE) {
8070  serialized_size_parameter_id(encoding, size, mutable_running_total);
8071  }
8072  const TypeKind disc_tk = disc_type->get_kind();
8073  if (is_primitive(disc_tk)) {
8074  return serialized_size_primitive_member(encoding, size, disc_tk);
8075  }
8076  return serialized_size_enum(encoding, size, disc_type);
8077 }
bool is_primitive(TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
bool serialized_size_primitive_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk) const
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialized_size_enum()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 4052 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and DDS::RETCODE_OK.

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

4054 {
4055  DDS::TypeDescriptor_var enum_td;
4056  if (enum_type->get_descriptor(enum_td) != DDS::RETCODE_OK) {
4057  return false;
4058  }
4059  const CORBA::ULong bit_bound = enum_td->bound()[0];
4060  if (bit_bound >= 1 && bit_bound <= 8) {
4061  primitive_serialized_size_int8(encoding, size);
4062  return true;
4063  } else if (bit_bound >= 9 && bit_bound <= 16) {
4065  } else if (bit_bound >= 17 && bit_bound <= 32) {
4067  }
4068  return false;
4069 }
ACE_CDR::Long Long
ACE_CDR::Short Short
ACE_CDR::ULong ULong
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_enum_array()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_array ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length,
CORBA::ULong  bitbound 
) const

Definition at line 6479 of file DynamicDataImpl.cpp.

6481 {
6482  if (bitbound >= 1 && bitbound <= 8) {
6484  } else if (bitbound >= 9 && bitbound <= 16) {
6486  } else { // from 17 to 32
6488  }
6489 }
void serialized_size_enum_array_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_enum_array_as_int16s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
void serialized_size_enum_array_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_enum_array_as_int16s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_array_as_int16s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6420 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and OpenDDS::DCPS::serialized_size_delimiter().

6422 {
6425 }
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.
ACE_CDR::Short Short
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_enum_array_as_int32s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_array_as_int32s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6450 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), and OpenDDS::DCPS::serialized_size_delimiter().

6452 {
6455 }
ACE_CDR::Long Long
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_enum_array_as_int8s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_array_as_int8s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 6390 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6392 {
6394  primitive_serialized_size_int8(encoding, size, length);
6395 }
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_enum_sequence() [1/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::Int8Seq seq 
) const

Definition at line 5067 of file DynamicDataImpl.cpp.

5069 {
5070  serialized_size_enum_sequence_as_int8s(encoding, size, seq.length());
5071 }
void serialized_size_enum_sequence_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_enum_sequence() [2/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::Int16Seq seq 
) const

Definition at line 5114 of file DynamicDataImpl.cpp.

5116 {
5118 }
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

◆ serialized_size_enum_sequence() [3/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const DDS::Int32Seq seq 
) const

Definition at line 5161 of file DynamicDataImpl.cpp.

5163 {
5165 }
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_enum_sequence_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const

◆ serialized_size_enum_sequence() [4/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length,
CORBA::ULong  bitbound 
) const

Definition at line 5196 of file DynamicDataImpl.cpp.

5198 {
5199  if (bitbound >= 1 && bitbound <= 8) {
5201  } else if (bitbound >= 9 && bitbound <= 16) {
5203  } else { // From 17 to 32
5205  }
5206 }
void serialized_size_enum_sequence_as_int8s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const
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
void serialized_size_enum_sequence_as_int32s(const DCPS::Encoding &encoding, size_t &size, CORBA::ULong length) const

◆ serialized_size_enum_sequence() [5/5]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const_sequence_iterator  it 
) const

Definition at line 7561 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, and OpenDDS::XTypes::TK_INT8.

7563 {
7564  switch (it->second.elem_kind_) {
7565  case TK_INT8: {
7566  const DDS::Int8Seq& seq = it->second.get<DDS::Int8Seq>();
7568  return true;
7569  }
7570  case TK_INT16: {
7571  const DDS::Int16Seq& seq = it->second.get<DDS::Int16Seq>();
7573  return true;
7574  }
7575  case TK_INT32: {
7576  const DDS::Int32Seq& seq = it->second.get<DDS::Int32Seq>();
7578  return true;
7579  }
7580  }
7581  return false;
7582 }
sequence< long > Int32Seq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
sequence< int8 > Int8Seq
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_enum_sequence_as_int16s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence_as_int16s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5103 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5105 {
5108  if (length == 0) {
5109  return;
5110  }
5112 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::Short Short
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_enum_sequence_as_int32s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence_as_int32s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5150 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5152 {
5155  if (length == 0) {
5156  return;
5157  }
5159 }
ACE_CDR::Long Long
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_enum_sequence_as_int8s()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_enum_sequence_as_int8s ( const DCPS::Encoding encoding,
size_t &  size,
CORBA::ULong  length 
) const

Definition at line 5056 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5058 {
5061  if (length == 0) {
5062  return;
5063  }
5064  primitive_serialized_size_int8(encoding, size, length);
5065 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_generic_string_array()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_generic_string_array ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 6362 of file DynamicDataImpl.cpp.

References OpenDDS::STUN::encoding(), and OpenDDS::DCPS::serialized_size_delimiter().

6364 {
6366  return serialized_size_generic_string_collection<StringType>(encoding, size, index_to_id);
6367 }
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_generic_string_collection()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_generic_string_collection ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 4943 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4945 {
4946  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
4947  const DDS::MemberId id = index_to_id[i];
4948  if (id != MEMBER_ID_INVALID) {
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);
4953  return false;
4954  }
4955  } else {
4956  StringType default_value;
4957  set_default_basic_value(default_value);
4958  serialized_size_string_common(encoding, size, default_value);
4959  }
4960  }
4961  return true;
4962 }
void set_default_basic_value(CORBA::Long &value) const
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
ACE_CDR::ULong ULong
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_string_common(const DCPS::Encoding &encoding, size_t &size, const char *str) const

◆ serialized_size_generic_string_sequence()

template<typename StringType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_generic_string_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 4965 of file DynamicDataImpl.cpp.

References OpenDDS::STUN::encoding(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

4967 {
4970  if (index_to_id.empty()) {
4971  return true;
4972  }
4973  return serialized_size_generic_string_collection<StringType>(encoding, size, index_to_id);
4974 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nested_basic_sequences()

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nested_basic_sequences ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id,
SequenceType  protoseq 
) const

Definition at line 5605 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::MEMBER_ID_INVALID, and OpenDDS::DCPS::serialized_size().

5608 {
5609  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5610  const CORBA::ULong id = index_to_id[i];
5611  if (id != MEMBER_ID_INVALID) {
5612  const_sequence_iterator it = sequence_map_.find(id);
5613  if (it != sequence_map_.end()) {
5614  serialized_size_sequence_value(encoding, size, it->second);
5616  return false;
5617  }
5618  } else { // Empty sequence
5619  protoseq.length(0);
5620  serialized_size(encoding, size, protoseq);
5621  }
5622  }
5623  return true;
5624 }
bool serialized_size(const Encoding &encoding, size_t &size, const KeyOnly< const XTypes::DynamicDataImpl > &key)
bool serialized_size_sequence_value(const DCPS::Encoding &encoding, size_t &size, const SequenceValue &sv) const
ACE_CDR::ULong ULong
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nested_bitmask_sequences()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nested_bitmask_sequences ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5881 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5883 {
5884  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5885  const CORBA::ULong id = index_to_id[i];
5886  if (id != MEMBER_ID_INVALID) {
5887  const_sequence_iterator it = sequence_map_.find(id);
5888  if (it != sequence_map_.end()) {
5891  return false;
5892  }
5893  } else {
5896  }
5897  }
5898  return true;
5899 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
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.
ACE_CDR::ULong ULong
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nested_enum_sequences()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nested_enum_sequences ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5796 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::MEMBER_ID_INVALID, OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5798 {
5799  for (CORBA::ULong i = 0; i < index_to_id.size(); ++i) {
5800  const CORBA::ULong id = index_to_id[i];
5801  if (id != MEMBER_ID_INVALID) {
5802  const_sequence_iterator it = sequence_map_.find(id);
5803  if (it != sequence_map_.end()) {
5806  return false;
5807  }
5808  } else {
5811  }
5812  }
5813  return true;
5814 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
ACE_CDR::ULong ULong
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
bool serialized_size_complex_member_i(const DCPS::Encoding &encoding, size_t &size, DDS::MemberId id, DCPS::Sample::Extent ext) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nesting_basic_array() [1/2]

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_basic_array ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id,
SequenceType  protoseq 
) const

Definition at line 6654 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6656 {
6658  return serialized_size_nested_basic_sequences(encoding, size, index_to_id, protoseq);
6659 }
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialized_size_nested_basic_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const

◆ serialized_size_nesting_basic_array() [2/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_basic_array ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  nested_elem_tk,
const IndexToIdMap &  index_to_id 
) const

Definition at line 6681 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

6684 {
6685  switch (nested_elem_tk) {
6686  case TK_INT32:
6687  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Int32Seq());
6688  case TK_UINT32:
6689  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::UInt32Seq());
6690  case TK_INT8:
6691  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Int8Seq());
6692  case TK_UINT8:
6693  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::UInt8Seq());
6694  case TK_INT16:
6695  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Int16Seq());
6696  case TK_UINT16:
6697  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::UInt16Seq());
6698  case TK_INT64:
6699  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Int64Seq());
6700  case TK_UINT64:
6701  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::UInt64Seq());
6702  case TK_FLOAT32:
6703  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Float32Seq());
6704  case TK_FLOAT64:
6705  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Float64Seq());
6706  case TK_FLOAT128:
6707  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::Float128Seq());
6708  case TK_CHAR8:
6709  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::CharSeq());
6710  case TK_STRING8:
6711  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::StringSeq());
6712 #ifdef DDS_HAS_WCHAR
6713  case TK_CHAR16:
6714  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::WcharSeq());
6715  case TK_STRING16:
6716  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::WstringSeq());
6717 #endif
6718  case TK_BYTE:
6719  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::ByteSeq());
6720  case TK_BOOLEAN:
6721  return serialized_size_nesting_basic_array(encoding, size, index_to_id, DDS::BooleanSeq());
6722  }
6723  return false;
6724 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
bool serialized_size_nesting_basic_array(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialized_size_nesting_basic_sequence() [1/2]

template<typename SequenceType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_basic_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id,
SequenceType  protoseq 
) const

Definition at line 5627 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5630 {
5633  if (index_to_id.empty()) {
5634  return true;
5635  }
5636  return serialized_size_nested_basic_sequences(encoding, size, index_to_id, protoseq);
5637 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialized_size_nested_basic_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const

◆ serialized_size_nesting_basic_sequence() [2/2]

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_basic_sequence ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  nested_elem_tk,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5707 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

5710 {
5711  switch (nested_elem_tk) {
5712  case TK_INT32:
5713  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Int32Seq());
5714  case TK_UINT32:
5715  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::UInt32Seq());
5716  case TK_INT8:
5717  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Int8Seq());
5718  case TK_UINT8:
5719  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::UInt8Seq());
5720  case TK_INT16:
5721  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Int16Seq());
5722  case TK_UINT16:
5723  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::UInt16Seq());
5724  case TK_INT64:
5725  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Int64Seq());
5726  case TK_UINT64:
5727  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::UInt64Seq());
5728  case TK_FLOAT32:
5729  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Float32Seq());
5730  case TK_FLOAT64:
5731  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::Float64Seq());
5732  case TK_FLOAT128:
5734  case TK_CHAR8:
5735  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::CharSeq());
5736  case TK_STRING8:
5737  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::StringSeq());
5738 #ifdef DDS_HAS_WCHAR
5739  case TK_CHAR16:
5740  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::WcharSeq());
5741  case TK_STRING16:
5742  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::WstringSeq());
5743 #endif
5744  case TK_BYTE:
5745  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::ByteSeq());
5746  case TK_BOOLEAN:
5747  return serialized_size_nesting_basic_sequence(encoding, size, index_to_id, DDS::BooleanSeq());
5748  }
5749  return false;
5750 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
bool serialized_size_nesting_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialized_size_nesting_bitmask_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_bitmask_array ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 6796 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6798 {
6800  return serialized_size_nested_bitmask_sequences(encoding, size, index_to_id);
6801 }
bool serialized_size_nested_bitmask_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nesting_bitmask_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_bitmask_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5901 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5903 {
5906  if (index_to_id.empty()) {
5907  return true;
5908  }
5909  return serialized_size_nested_bitmask_sequences(encoding, size, index_to_id);
5910 }
bool serialized_size_nested_bitmask_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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.
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nesting_enum_array()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_enum_array ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 6770 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::serialized_size_delimiter().

6772 {
6774  return serialized_size_nested_enum_sequences(encoding, size, index_to_id);
6775 }
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_nested_enum_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_nesting_enum_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_nesting_enum_sequence ( const DCPS::Encoding encoding,
size_t &  size,
const IndexToIdMap &  index_to_id 
) const

Definition at line 5816 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

5818 {
5821  if (index_to_id.empty()) {
5822  return true;
5823  }
5824  return serialized_size_nested_enum_sequences(encoding, size, index_to_id);
5825 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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_nested_enum_sequences(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_primitive_array()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_primitive_array ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  elem_tk,
CORBA::ULong  length 
) const

Definition at line 6222 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::primitive_serialized_size_char(), OpenDDS::DCPS::primitive_serialized_size_octet(), OpenDDS::DCPS::primitive_serialized_size_wchar(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

6224 {
6225  switch (elem_tk) {
6226  case TK_INT32:
6228  return;
6229  case TK_UINT32:
6231  return;
6232  case TK_INT8:
6233  primitive_serialized_size_int8(encoding, size, length);
6234  return;
6235  case TK_UINT8:
6236  primitive_serialized_size_uint8(encoding, size, length);
6237  return;
6238  case TK_INT16:
6240  return;
6241  case TK_UINT16:
6243  return;
6244  case TK_INT64:
6246  return;
6247  case TK_UINT64:
6249  return;
6250  case TK_FLOAT32:
6252  return;
6253  case TK_FLOAT64:
6255  return;
6256  case TK_FLOAT128:
6258  return;
6259  case TK_CHAR8:
6261  return;
6262 #ifdef DDS_HAS_WCHAR
6263  case TK_CHAR16:
6265  return;
6266 #endif
6267  case TK_BYTE:
6269  return;
6270  case TK_BOOLEAN:
6272  return;
6273  }
6274 }
ACE_CDR::Long Long
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
OpenDDS_Dcps_Export void primitive_serialized_size_octet(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
OpenDDS_Dcps_Export void primitive_serialized_size_char(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
OpenDDS_Dcps_Export void primitive_serialized_size_wchar(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_primitive_member()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_primitive_member ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  member_tk 
) const

Definition at line 6961 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::primitive_serialized_size_char(), OpenDDS::DCPS::primitive_serialized_size_octet(), OpenDDS::DCPS::primitive_serialized_size_wchar(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

6963 {
6964  using namespace OpenDDS::DCPS;
6965 
6966  switch (member_tk) {
6967  case TK_INT32:
6969  case TK_UINT32:
6971  case TK_INT8:
6972  primitive_serialized_size_int8(encoding, size);
6973  return true;
6974  case TK_UINT8:
6975  primitive_serialized_size_uint8(encoding, size);
6976  return true;
6977  case TK_INT16:
6979  case TK_UINT16:
6981  case TK_INT64:
6983  case TK_UINT64:
6985  case TK_FLOAT32:
6987  case TK_FLOAT64:
6989  case TK_FLOAT128:
6991  case TK_CHAR8:
6993  return true;
6994 #ifdef DDS_HAS_WCHAR
6995  case TK_CHAR16:
6997  return true;
6998 #endif
6999  case TK_BYTE:
7001  return true;
7002  case TK_BOOLEAN:
7004  return true;
7005  }
7006  return false;
7007 }
ACE_CDR::Long Long
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
OpenDDS_Dcps_Export void primitive_serialized_size_octet(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
OpenDDS_Dcps_Export void primitive_serialized_size_char(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
OpenDDS_Dcps_Export void primitive_serialized_size_wchar(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_primitive_sequence()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_primitive_sequence ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  elem_tk,
CORBA::ULong  length 
) const

Definition at line 4275 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::primitive_serialized_size_char(), OpenDDS::DCPS::primitive_serialized_size_octet(), OpenDDS::DCPS::primitive_serialized_size_ulong(), OpenDDS::DCPS::primitive_serialized_size_wchar(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

4277 {
4278  switch (elem_tk) {
4279  case TK_INT32:
4281  if (length == 0) {
4282  return;
4283  }
4285  return;
4286  case TK_UINT32:
4288  if (length == 0) {
4289  return;
4290  }
4292  return;
4293  case TK_INT8:
4295  if (length == 0) {
4296  return;
4297  }
4298  primitive_serialized_size_int8(encoding, size, length);
4299  return;
4300  case TK_UINT8:
4302  if (length == 0) {
4303  return;
4304  }
4305  primitive_serialized_size_uint8(encoding, size, length);
4306  return;
4307  case TK_INT16:
4309  if (length == 0) {
4310  return;
4311  }
4313  return;
4314  case TK_UINT16:
4316  if (length == 0) {
4317  return;
4318  }
4320  return;
4321  case TK_INT64:
4323  if (length == 0) {
4324  return;
4325  }
4327  return;
4328  case TK_UINT64:
4330  if (length == 0) {
4331  return;
4332  }
4334  return;
4335  case TK_FLOAT32:
4337  if (length == 0) {
4338  return;
4339  }
4341  return;
4342  case TK_FLOAT64:
4344  if (length == 0) {
4345  return;
4346  }
4348  return;
4349  case TK_FLOAT128:
4351  if (length == 0) {
4352  return;
4353  }
4355  return;
4356  case TK_CHAR8:
4358  if (length == 0) {
4359  return;
4360  }
4362  return;
4363 #ifdef DDS_HAS_WCHAR
4364  case TK_CHAR16:
4366  if (length == 0) {
4367  return;
4368  }
4370  return;
4371 #endif
4372  case TK_BYTE:
4374  if (length == 0) {
4375  return;
4376  }
4378  return;
4379  case TK_BOOLEAN:
4381  if (length == 0) {
4382  return;
4383  }
4385  return;
4386  }
4387 }
ACE_CDR::Long Long
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
OpenDDS_Dcps_Export void primitive_serialized_size_octet(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
OpenDDS_Dcps_Export void primitive_serialized_size_char(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
OpenDDS_Dcps_Export void primitive_serialized_size_wchar(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)

◆ serialized_size_selected_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 8143 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::get_base_type(), DDS::RETCODE_OK, and OpenDDS::XTypes::DynamicDataBase::type_.

8146 {
8147  DDS::DynamicTypeMember_var selected_dtm;
8148  if (type_->get_member(selected_dtm, selected_id) != DDS::RETCODE_OK) {
8149  return false;
8150  }
8151  DDS::MemberDescriptor_var selected_md;
8152  if (selected_dtm->get_descriptor(selected_md) != DDS::RETCODE_OK) {
8153  return false;
8154  }
8155  DDS::DynamicType_var selected_type = get_base_type(selected_md->type());
8156  const bool optional = selected_md->is_optional();
8157 
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);
8162  }
8163 
8164  const_sequence_iterator seq_it = sequence_map_.find(selected_id);
8165  if (seq_it != sequence_map_.end()) {
8166  DDS::TypeDescriptor_var selected_td;
8167  if (selected_type->get_descriptor(selected_td) != DDS::RETCODE_OK) {
8168  return false;
8169  }
8170  const TypeKind elem_tk = get_base_type(selected_td->element_type())->get_kind();
8171  serialized_size_sequence_aggregated_member_xcdr2(encoding, size, seq_it, elem_tk, optional,
8172  extensibility, mutable_running_total);
8173  return true;
8174  }
8175 
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,
8181  }
8182  return false;
8183 }
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::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
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
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
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

◆ serialized_size_sequence()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_sequence ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 6062 of file DynamicDataImpl.cpp.

References OpenDDS::STUN::encoding(), OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::is_basic(), OpenDDS::XTypes::is_primitive(), OpenDDS::XTypes::MEMBER_ID_INVALID, DDS::RETCODE_OK, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

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

6065 {
6066  const CORBA::ULong bound = type_desc_->bound()[0];
6067 
6068  const DDS::DynamicType_var elem_type = get_base_type(type_desc_->element_type());
6069  const TypeKind elem_tk = elem_type->get_kind();
6070  DDS::TypeDescriptor_var elem_td;
6071  if (elem_type->get_descriptor(elem_td) != DDS::RETCODE_OK) {
6072  return false;
6073  }
6074 
6075  if (is_basic(elem_tk) || elem_tk == TK_ENUM || elem_tk == TK_BITMASK) {
6076  const bool is_empty = single_map_.empty() && complex_map_.empty();
6077  CORBA::ULong length = 0;
6078  if (!is_empty) {
6079  CORBA::ULong largest_index;
6080  if (!get_largest_index_basic(largest_index)) {
6081  return false;
6082  }
6083  length = largest_index + 1;
6084  }
6085  if (is_primitive(elem_tk)) {
6086  serialized_size_primitive_sequence(encoding, size, elem_tk, length);
6087  return true;
6088  } else if (elem_tk == TK_STRING8) {
6089  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6090  if (!get_index_to_id_map(index_to_id, bound)) {
6091  return false;
6092  }
6093  return serialized_size_generic_string_sequence<const char*>(encoding, size, index_to_id);
6094  } else if (elem_tk == TK_STRING16) {
6095 #ifdef DDS_HAS_WCHAR
6096  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6097  if (!get_index_to_id_map(index_to_id, bound)) {
6098  return false;
6099  }
6100  return serialized_size_generic_string_sequence<const CORBA::WChar*>(encoding, size, index_to_id);
6101 #else
6102  return false;
6103 #endif
6104  } else if (elem_tk == TK_ENUM) {
6105  const CORBA::ULong bit_bound = elem_td->bound()[0];
6106  serialized_size_enum_sequence(encoding, size, length, bit_bound);
6107  return true;
6108  } else if (elem_tk == TK_BITMASK) {
6109  const CORBA::ULong bit_bound = elem_td->bound()[0];
6110  serialized_size_bitmask_sequence(encoding, size, length, bit_bound);
6111  }
6112  } else if (elem_tk == TK_SEQUENCE) {
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();
6115  if (is_basic(nested_elem_tk) || nested_elem_tk == TK_ENUM ||
6116  nested_elem_tk == TK_BITMASK) {
6117  const bool is_empty = sequence_map_.empty() && complex_map_.empty();
6118  CORBA::ULong length = 0;
6119  if (!is_empty) {
6120  CORBA::ULong largest_index;
6121  if (!get_largest_index_basic_sequence(largest_index)) {
6122  return false;
6123  }
6124  length = largest_index + 1;
6125  }
6126  IndexToIdMap index_to_id(length, MEMBER_ID_INVALID);
6127  if (!get_index_to_id_map(index_to_id, bound)) {
6128  return false;
6129  }
6130  if (is_basic(nested_elem_tk)) {
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);
6134  } else {
6135  return serialized_size_nesting_bitmask_sequence(encoding, size, index_to_id);
6136  }
6137  }
6138  }
6139 
6140  // Elements stored in complex map
6141  IndexToIdMap index_to_id;
6142  if (!get_index_to_id_from_complex(index_to_id, bound)) {
6143  return false;
6144  }
6145  return serialized_size_complex_sequence(encoding, size, index_to_id, elem_type, ext);
6146 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
bool serialized_size_nesting_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
const TypeKind TK_STRING16
Definition: TypeObject.h:232
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
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
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
bool get_index_to_id_map(IndexToIdMap &index_to_id, CORBA::ULong bound) const
bool is_primitive(TypeKind tk)
void serialized_size_primitive_sequence(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk, CORBA::ULong length) const
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
bool serialized_size_nesting_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id) const
bool get_index_to_id_from_complex(IndexToIdMap &index_to_id, CORBA::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DDS::TypeDescriptor_var & type_desc_
const TypeKind TK_STRING8
Definition: TypeObject.h:231
bool get_largest_index_basic_sequence(CORBA::ULong &index) const
bool serialized_size_nesting_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const IndexToIdMap &index_to_id, SequenceType protoseq) const
bool get_largest_index_basic(CORBA::ULong &index) const
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool is_basic(TypeKind tk)

◆ serialized_size_sequence_aggregated_member_xcdr2()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7658 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, DDS::FINAL, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::serialized_size_parameter_id(), and OpenDDS::XTypes::TK_ENUM.

7661 {
7662  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7664  } else if (extensibility == DDS::MUTABLE) {
7665  serialized_size_parameter_id(encoding, size, mutable_running_total);
7666  }
7667  if (is_basic(elem_tk)) {
7669  } else if (elem_tk == TK_ENUM) {
7671  } else { // Bitmask
7673  }
7674 }
void serialized_size_bitmask_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::UInt8Seq &seq) const
void serialized_size_enum_sequence(const DCPS::Encoding &encoding, size_t &size, const DDS::Int8Seq &seq) const
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool serialized_size_basic_sequence(const DCPS::Encoding &encoding, size_t &size, const_sequence_iterator it) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialized_size_sequence_member_default_value()

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_sequence_member_default_value ( const DCPS::Encoding encoding,
size_t &  size,
TypeKind  elem_tk 
) const

Definition at line 7365 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::is_primitive(), OpenDDS::DCPS::primitive_serialized_size_ulong(), and OpenDDS::DCPS::serialized_size_delimiter().

7367 {
7368  // Zero-length sequence
7369  if (!is_primitive(elem_tk)) {
7371  }
7373 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
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 is_primitive(TypeKind tk)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_sequence_struct_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7711 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, DDS::FINAL, OpenDDS::DCPS::Sample::Full, DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), and OpenDDS::DCPS::serialized_size_parameter_id().

7715 {
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()) {
7719  if (optional) {
7722  }
7723  return true;
7724  }
7725  if (extensibility == DDS::MUTABLE) {
7726  serialized_size_parameter_id(encoding, size, mutable_running_total);
7727  }
7729  return true;
7730  }
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);
7734  return true;
7735  }
7736  return serialized_size_complex_aggregated_member_xcdr2(encoding, size, complex_it, optional,
7737  extensibility, mutable_running_total,
7739 }
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
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
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_sequence_member_default_value(const DCPS::Encoding &encoding, size_t &size, TypeKind elem_tk) const
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29

◆ serialized_size_sequence_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_sequence_value ( const DCPS::Encoding encoding,
size_t &  size,
const SequenceValue sv 
) const

Definition at line 5458 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::SequenceValue::elem_kind_, OpenDDS::XTypes::DynamicDataImpl::SequenceValue::get(), OpenDDS::DCPS::serialized_size(), OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_FLOAT128, OpenDDS::XTypes::TK_FLOAT32, OpenDDS::XTypes::TK_FLOAT64, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_STRING16, OpenDDS::XTypes::TK_STRING8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.

5460 {
5461  switch (sv.elem_kind_) {
5462  case TK_INT32:
5463  serialized_size(encoding, size, sv.get<DDS::Int32Seq>());
5464  return true;
5465  case TK_UINT32:
5466  serialized_size(encoding, size, sv.get<DDS::UInt32Seq>());
5467  return true;
5468  case TK_INT8:
5469  serialized_size(encoding, size, sv.get<DDS::Int8Seq>());
5470  return true;
5471  case TK_UINT8:
5472  serialized_size(encoding, size, sv.get<DDS::UInt8Seq>());
5473  return true;
5474  case TK_INT16:
5475  serialized_size(encoding, size, sv.get<DDS::Int16Seq>());
5476  return true;
5477  case TK_UINT16:
5478  serialized_size(encoding, size, sv.get<DDS::UInt16Seq>());
5479  return true;
5480  case TK_INT64:
5481  serialized_size(encoding, size, sv.get<DDS::Int64Seq>());
5482  return true;
5483  case TK_UINT64:
5484  serialized_size(encoding, size, sv.get<DDS::UInt64Seq>());
5485  return true;
5486  case TK_FLOAT32:
5487  serialized_size(encoding, size, sv.get<DDS::Float32Seq>());
5488  return true;
5489  case TK_FLOAT64:
5490  serialized_size(encoding, size, sv.get<DDS::Float64Seq>());
5491  return true;
5492  case TK_FLOAT128:
5493  serialized_size(encoding, size, sv.get<DDS::Float128Seq>());
5494  return true;
5495  case TK_CHAR8:
5496  serialized_size(encoding, size, sv.get<DDS::CharSeq>());
5497  return true;
5498  case TK_BYTE:
5499  serialized_size(encoding, size, sv.get<DDS::ByteSeq>());
5500  return true;
5501  case TK_BOOLEAN:
5502  serialized_size(encoding, size, sv.get<DDS::BooleanSeq>());
5503  return true;
5504  case TK_STRING8:
5505  serialized_size(encoding, size, sv.get<DDS::StringSeq>());
5506  return true;
5507 #ifdef DDS_HAS_WCHAR
5508  case TK_CHAR16:
5509  serialized_size(encoding, size, sv.get<DDS::WcharSeq>());
5510  return true;
5511  case TK_STRING16:
5512  serialized_size(encoding, size, sv.get<DDS::WstringSeq>());
5513  return true;
5514 #endif
5515  default:
5516  return false;
5517  }
5518 }
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const TypeKind TK_BYTE
Definition: TypeObject.h:215
bool serialized_size(const Encoding &encoding, size_t &size, const KeyOnly< const XTypes::DynamicDataImpl > &key)
sequence< char > CharSeq
sequence< long long > Int64Seq
const TypeKind TK_INT16
Definition: TypeObject.h:216
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
sequence< short > Int16Seq
sequence< unsigned long long > UInt64Seq
sequence< boolean > BooleanSeq
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
sequence< unsigned long > UInt32Seq
sequence< long double > Float128Seq
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
sequence< float > Float32Seq
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
sequence< double > Float64Seq
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50

◆ serialized_size_single_aggregated_member_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::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

Definition at line 7141 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, DDS::FINAL, OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_boolean(), OpenDDS::DCPS::serialized_size_parameter_id(), and OpenDDS::XTypes::TK_ENUM.

7145 {
7146  if (optional && (extensibility == DDS::FINAL || extensibility == DDS::APPENDABLE)) {
7148  } else if (extensibility == DDS::MUTABLE) {
7149  serialized_size_parameter_id(encoding, size, mutable_running_total);
7150  }
7151  const TypeKind member_tk = member_type->get_kind();
7152  if (is_basic(member_tk)) {
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);
7156  } else { // Bitmask
7157  return serialized_size_bitmask(encoding, size, member_type);
7158  }
7159 }
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
bool serialized_size_bitmask(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &bitmask_type) const
bool serialized_size_basic_member(const DCPS::Encoding &encoding, size_t &size, TypeKind member_tk, const_single_iterator it) const
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool serialized_size_enum(const DCPS::Encoding &encoding, size_t &size, const DDS::DynamicType_var &enum_type) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
OpenDDS_Dcps_Export void primitive_serialized_size_boolean(const Encoding &encoding, size_t &size, size_t count=1)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialized_size_string()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_string ( const DCPS::Encoding encoding,
size_t &  size 
) const

Definition at line 4193 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::primitive_serialized_size_ulong().

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

4195 {
4196  const bool is_empty = single_map_.empty() && complex_map_.empty();
4197  if (!is_empty) {
4198  CORBA::ULong largest_index;
4199  if (!get_largest_index_basic(largest_index)) {
4200  return false;
4201  }
4203  size += largest_index + 2; // Include null
4204  } else {
4205  // Use default value for string, i.e., empty string.
4207  size += 1; // For the null termination
4208  }
4209  return true;
4210 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
ACE_CDR::ULong ULong
bool get_largest_index_basic(CORBA::ULong &index) const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_string_common() [1/2]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_string_common ( const DCPS::Encoding encoding,
size_t &  size,
const char *  str 
) const

Definition at line 4909 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::char16_cdr_size, OpenDDS::DCPS::primitive_serialized_size_ulong(), and ACE_OS::strlen().

4911 {
4913  if (str) {
4914  size += ACE_OS::strlen(str) + 1; // Include null termination
4915  }
4916 }
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
size_t strlen(const char *s)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_string_common() [2/2]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_string_common ( const DCPS::Encoding encoding,
size_t &  size,
const SingleValue sv 
) const

Definition at line 4929 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::SingleValue::kind_, OpenDDS::XTypes::DynamicDataImpl::SingleValue::str_, OpenDDS::XTypes::TK_STRING16, and OpenDDS::XTypes::TK_STRING8.

4931 {
4932  if (sv.kind_ == TK_STRING8) {
4933  serialized_size_string_common(encoding, size, sv.str_);
4934  }
4935 #ifdef DDS_HAS_WCHAR
4936  else if (sv.kind_ == TK_STRING16) {
4937  serialized_size_string_common(encoding, size, sv.wstr_);
4938  }
4939 #endif
4940 }
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const TypeKind TK_STRING8
Definition: TypeObject.h:231
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
void serialized_size_string_common(const DCPS::Encoding &encoding, size_t &size, const char *str) const

◆ serialized_size_structure()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 7934 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Encoding::xcdr_version(), OpenDDS::DCPS::Encoding::XCDR_VERSION_1, and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

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

7937 {
7939  return serialized_size_structure_xcdr2(encoding, size, ext);
7941  return serialized_size_structure_xcdr1(encoding, size, ext);
7942  }
7943  return false;
7944 }
XcdrVersion xcdr_version() const
Definition: Serializer.inl:127
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
bool serialized_size_structure_xcdr2(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool serialized_size_structure_xcdr1(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const

◆ serialized_size_structure_xcdr1()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure_xcdr1 ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 7921 of file DynamicDataImpl.cpp.

7923 {
7924  // TODO: Support Final & Mutable extensibility?
7925  return false;
7926 }

◆ serialized_size_structure_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure_xcdr2 ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 7774 of file DynamicDataImpl.cpp.

References DDS::APPENDABLE, OpenDDS::XTypes::DynamicDataBase::exclude_member(), OpenDDS::XTypes::extensibility(), OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::DynamicDataBase::has_explicit_keys(), OpenDDS::XTypes::is_basic(), DDS::MUTABLE, OpenDDS::XTypes::DynamicDataBase::nested(), DDS::RETCODE_OK, OpenDDS::DCPS::serialized_size_delimiter(), OpenDDS::DCPS::serialized_size_list_end_parameter_id(), struct_has_explicit_keys(), OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::DynamicDataBase::type_, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

7776 {
7777  const DDS::ExtensibilityKind extensibility = type_desc_->extensibility_kind();
7779 
7780  // Delimiter
7781  if (extensibility == DDS::APPENDABLE || extensibility == DDS::MUTABLE) {
7783  }
7784 
7785  // Members
7786  size_t mutable_running_total = 0;
7787  const CORBA::ULong member_count = type_->get_member_count();
7788  for (CORBA::ULong i = 0; i < member_count; ++i) {
7789  DDS::DynamicTypeMember_var dtm;
7790  if (type_->get_member_by_index(dtm, i) != DDS::RETCODE_OK) {
7791  return false;
7792  }
7793  DDS::MemberDescriptor_var md;
7794  if (dtm->get_descriptor(md) != DDS::RETCODE_OK) {
7795  return false;
7796  }
7797 
7798  if (exclude_member(ext, md->is_key(), struct_has_explicit_keys)) {
7799  continue;
7800  }
7801 
7802  const DDS::MemberId id = md->id();
7803  const CORBA::Boolean optional = md->is_optional();
7804  const DDS::DynamicType_var member_type = get_base_type(md->type());
7805  const TypeKind member_tk = member_type->get_kind();
7806 
7807  if (is_basic(member_tk) || member_tk == TK_ENUM || member_tk == TK_BITMASK) {
7808  if (!serialized_size_basic_struct_member_xcdr2(encoding, size, id, member_type, optional,
7809  extensibility, mutable_running_total)) {
7810  return false;
7811  }
7812  continue;
7813  } else if (member_tk == TK_SEQUENCE) {
7814  DDS::TypeDescriptor_var member_td;
7815  if (member_type->get_descriptor(member_td) != DDS::RETCODE_OK) {
7816  return false;
7817  }
7818  const DDS::DynamicType_var elem_type = get_base_type(member_td->element_type());
7819  const TypeKind elem_tk = elem_type->get_kind();
7820  if (is_basic(elem_tk) || elem_tk == TK_ENUM || elem_tk == TK_BITMASK) {
7821  if (!serialized_size_sequence_struct_member_xcdr2(encoding, size, id, elem_tk, optional,
7822  extensibility, mutable_running_total, nested(ext))) {
7823  return false;
7824  }
7825  continue;
7826  }
7827  }
7828 
7829  const_complex_iterator it = complex_map_.find(id);
7830  if (it != complex_map_.end()) {
7832  extensibility, mutable_running_total,
7833  nested(ext))) {
7834  return false;
7835  }
7836  } else if (!serialized_size_complex_aggregated_member_xcdr2_default(encoding, size, member_type, optional,
7837  extensibility, mutable_running_total,
7838  nested(ext))) {
7839  return false;
7840  }
7841  }
7842 
7843  if (extensibility == DDS::MUTABLE) {
7844  serialized_size_list_end_parameter_id(encoding, size, mutable_running_total);
7845  }
7846  return true;
7847 }
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
bool struct_has_explicit_keys(AST_Structure *node)
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
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.
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
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
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
static bool has_explicit_keys(DDS::DynamicType *dt)
ACE_CDR::Boolean Boolean
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
static bool exclude_member(DCPS::Sample::Extent ext, bool is_key, bool has_explicit_keys)
const DDS::TypeDescriptor_var & type_desc_
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
ExtensibilityKind
const TypeKind TK_ENUM
Definition: TypeObject.h:238
static DCPS::Sample::Extent nested(DCPS::Sample::Extent ext)
const ReturnCode_t RETCODE_OK
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
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
OpenDDS_Dcps_Export void serialized_size_list_end_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
bool is_basic(TypeKind tk)

◆ serialized_size_union()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 8426 of file DynamicDataImpl.cpp.

References OpenDDS::DCPS::Encoding::xcdr_version(), OpenDDS::DCPS::Encoding::XCDR_VERSION_1, and OpenDDS::DCPS::Encoding::XCDR_VERSION_2.

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

8429 {
8431  return serialized_size_union_xcdr2(encoding, size, ext);
8433  return serialized_size_union_xcdr1(encoding, size, ext);
8434  }
8435  return false;
8436 }
bool serialized_size_union_xcdr2(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
bool serialized_size_union_xcdr1(const DCPS::Encoding &encoding, size_t &size, DCPS::Sample::Extent ext) const
XcdrVersion xcdr_version() const
Definition: Serializer.inl:127
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

◆ serialized_size_union_xcdr1()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union_xcdr1 ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 8413 of file DynamicDataImpl.cpp.

8415 {
8416  // TODO:
8417  return false;
8418 }

◆ serialized_size_union_xcdr2()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union_xcdr2 ( const DCPS::Encoding encoding,
size_t &  size,
DCPS::Sample::Extent  ext 
) const

Definition at line 8226 of file DynamicDataImpl.cpp.

References ACE_ERROR, DDS::APPENDABLE, OpenDDS::XTypes::DISCRIMINATOR_ID, OpenDDS::XTypes::extensibility(), OpenDDS::DCPS::Sample::Full, OpenDDS::XTypes::get_base_type(), OpenDDS::XTypes::DynamicDataBase::has_explicit_keys(), OpenDDS::DCPS::Sample::KeyOnly, LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::XTypes::MEMBER_ID_INVALID, DDS::MUTABLE, OpenDDS::DCPS::LogLevel::Notice, DDS::RETCODE_OK, OpenDDS::DCPS::retcode_to_string(), OpenDDS::DCPS::serialized_size_delimiter(), OpenDDS::DCPS::serialized_size_list_end_parameter_id(), OpenDDS::XTypes::DynamicDataBase::type_, and OpenDDS::XTypes::DynamicDataBase::type_desc_.

8228 {
8229  if (ext == DCPS::Sample::KeyOnly && !has_explicit_keys(type_)) {
8230  // nothing is serialized (not even a delimiter) for key-only serialization when there is no @key
8231  return true;
8232  }
8233 
8234  const DDS::ExtensibilityKind extensibility = type_desc_->extensibility_kind();
8235  if (extensibility == DDS::APPENDABLE || extensibility == DDS::MUTABLE) {
8237  }
8238 
8239  size_t mutable_running_total = 0;
8240  DDS::DynamicType_var disc_type = get_base_type(type_desc_->discriminator_type());
8241  if (ext != DCPS::Sample::Full) {
8243  extensibility, mutable_running_total)) {
8244  return false;
8245  }
8246  serialized_size_list_end_parameter_id(encoding, size, mutable_running_total);
8247  return true;
8248  }
8249 
8250  const_single_iterator single_it = single_map_.find(DISCRIMINATOR_ID);
8251  const_complex_iterator complex_it = complex_map_.find(DISCRIMINATOR_ID);
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();
8254 
8255  CORBA::Long disc_value;
8256  if (has_disc) {
8257  if (!get_discriminator_value(disc_value, single_it, complex_it, disc_type)) {
8258  return false;
8259  }
8260  } else if (!set_default_discriminator_value(disc_value, disc_type)) {
8261  return false;
8262  }
8263 
8264  if (selected_id == MEMBER_ID_INVALID) {
8265  bool found_selected_member = false;
8266  DDS::MemberDescriptor_var selected_md;
8267  const DDS::ReturnCode_t rc =
8268  data_->get_selected_union_branch(disc_value, found_selected_member, selected_md);
8269  if (rc != DDS::RETCODE_OK) {
8270  if (log_level >= LogLevel::Notice) {
8271  ACE_ERROR((LM_NOTICE, "(%P|%t) NOTICE: DynamicDataImpl::serialized_size_union_xcdr2:"
8272  " get_selected_union_branch failed: %C\n", retcode_to_string(rc)));
8273  }
8274  return false;
8275  }
8277  extensibility, mutable_running_total)) {
8278  return false;
8279  }
8280  if (ext == DCPS::Sample::KeyOnly) {
8281  return true;
8282  }
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,
8288  DCPS::Sample::Full)) {
8289  return false;
8290  }
8291  }
8292  serialized_size_list_end_parameter_id(encoding, size, mutable_running_total);
8293  return true;
8294  }
8295 
8297  extensibility, mutable_running_total)) {
8298  return false;
8299  }
8300  if (ext != DCPS::Sample::KeyOnly) {
8302  encoding, size, selected_id, extensibility, mutable_running_total)) {
8303  return false;
8304  }
8305  }
8306  serialized_size_list_end_parameter_id(encoding, size, mutable_running_total);
8307  return true;
8308 }
ACE_CDR::Long Long
#define ACE_ERROR(X)
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
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.
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
static bool has_explicit_keys(DDS::DynamicType *dt)
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
const DDS::TypeDescriptor_var & type_desc_
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 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
ExtensibilityKind
bool get_discriminator_value(CORBA::Long &value, const_single_iterator single_it, const_complex_iterator complex_it, const DDS::DynamicType_var &disc_type) const
OpenDDS_Dcps_Export LogLevel log_level
bool set_default_discriminator_value(CORBA::Long &value, const DDS::DynamicType_var &disc_type) const
const char * retcode_to_string(DDS::ReturnCode_t value)
Definition: DCPS_Utils.cpp:29
const ReturnCode_t RETCODE_OK
DDS::MemberId find_selected_member() const
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
DDS::ReturnCode_t get_selected_union_branch(DDS::Int32 disc, bool &found_selected_member, DDS::MemberDescriptor_var &selected_md) const
OpenDDS_Dcps_Export void serialized_size_list_end_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
extensibility(MUTABLE) struct TypeLookup_getTypes_In
Definition: TypeLookup.idl:29
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

◆ serialized_size_wstring()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_wstring ( const DCPS::Encoding encoding,
size_t &  size 
) const

◆ set_default_basic_value() [1/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::Long value) const

◆ set_default_basic_value() [2/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::ULong value) const

Definition at line 4397 of file DynamicDataImpl.cpp.

4398 {
4399  value = 0;
4400 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [3/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( ACE_OutputCDR::from_int8 value) const

Definition at line 4402 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_int8::val_.

4403 {
4404  value.val_ = 0;
4405 }

◆ set_default_basic_value() [4/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( ACE_OutputCDR::from_uint8 value) const

Definition at line 4407 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_uint8::val_.

4408 {
4409  value.val_ = 0;
4410 }

◆ set_default_basic_value() [5/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::Short value) const

Definition at line 4412 of file DynamicDataImpl.cpp.

4413 {
4414  value = 0;
4415 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [6/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::UShort value) const

Definition at line 4417 of file DynamicDataImpl.cpp.

4418 {
4419  value = 0;
4420 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [7/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::LongLong value) const

Definition at line 4422 of file DynamicDataImpl.cpp.

4423 {
4424  value = 0;
4425 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [8/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::ULongLong value) const

Definition at line 4427 of file DynamicDataImpl.cpp.

4428 {
4429  value = 0;
4430 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [9/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::Float value) const

Definition at line 4432 of file DynamicDataImpl.cpp.

4433 {
4434  value = 0;
4435 }

◆ set_default_basic_value() [10/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::Double value) const

Definition at line 4437 of file DynamicDataImpl.cpp.

4438 {
4439  value = 0;
4440 }

◆ set_default_basic_value() [11/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( CORBA::LongDouble value) const

Definition at line 4442 of file DynamicDataImpl.cpp.

References ACE_CDR::LongDouble::ld, and ACE_OS::memset().

4443 {
4444 #if ACE_SIZEOF_LONG_DOUBLE == 16
4445  value = 0;
4446 #else
4447  ACE_OS::memset(value.ld, 0, 16);
4448 #endif
4449 }
void * memset(void *s, int c, size_t len)

◆ set_default_basic_value() [12/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( ACE_OutputCDR::from_char value) const

Definition at line 4451 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_char::val_.

4452 {
4453  value.val_ = '\0';
4454 }

◆ set_default_basic_value() [13/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( ACE_OutputCDR::from_octet value) const

Definition at line 4456 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_octet::val_.

4457 {
4458  value.val_ = 0x00;
4459 }

◆ set_default_basic_value() [14/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( const char *&  value) const

Definition at line 4461 of file DynamicDataImpl.cpp.

4462 {
4463  value = "";
4464 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_basic_value() [15/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( char *&  value) const

Definition at line 4466 of file DynamicDataImpl.cpp.

References CORBA::string_dup(), and CORBA::string_free().

4467 {
4469  value = CORBA::string_dup("");
4470 }
const LogLevel::Value value
Definition: debug.cpp:61
char * string_dup(const char *)
void string_free(char *)

◆ set_default_basic_value() [16/16]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_basic_value ( ACE_OutputCDR::from_boolean value) const

◆ set_default_bitmask_value() [1/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_value ( ACE_OutputCDR::from_uint8 value) const

◆ set_default_bitmask_value() [2/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_value ( CORBA::UShort value) const

Definition at line 4516 of file DynamicDataImpl.cpp.

4517 {
4518  value = 0;
4519 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_bitmask_value() [3/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_value ( CORBA::ULong value) const

Definition at line 4521 of file DynamicDataImpl.cpp.

4522 {
4523  value = 0;
4524 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_bitmask_value() [4/5]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_value ( CORBA::ULongLong value) const

Definition at line 4526 of file DynamicDataImpl.cpp.

4527 {
4528  value = 0;
4529 }
const LogLevel::Value value
Definition: debug.cpp:61

◆ set_default_bitmask_value() [5/5]

template<typename Type >
void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_value ( Type &  value) const

Definition at line 4532 of file DynamicDataImpl.cpp.

4533 {
4534  // No-op. Should never be called.
4535 }

◆ set_default_bitmask_values()

template<typename CollectionType >
void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_bitmask_values ( CollectionType &  col) const

Definition at line 5223 of file DynamicDataImpl.cpp.

5224 {
5225  // Table 9 doesn't mention default value for bitmask. Use 0 as default here.
5226  for (CORBA::ULong i = 0; i < col.length(); ++i) {
5227  col[i] = 0;
5228  }
5229 }
ACE_CDR::ULong ULong

◆ set_default_discriminator_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_discriminator_value ( CORBA::Long value,
const DDS::DynamicType_var &  disc_type 
) const

Definition at line 7958 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_INT16, OpenDDS::XTypes::TK_INT32, OpenDDS::XTypes::TK_INT64, OpenDDS::XTypes::TK_INT8, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, ACE_OutputCDR::from_boolean::val_, ACE_OutputCDR::from_octet::val_, ACE_OutputCDR::from_int8::val_, ACE_OutputCDR::from_uint8::val_, ACE_OutputCDR::from_char::val_, and ACE_OutputCDR::from_wchar::val_.

Referenced by OpenDDS::XTypes::DynamicDataImpl::get_complex_from_union(), and OpenDDS::XTypes::DynamicDataImpl::get_item_count().

7960 {
7961  const TypeKind disc_tk = disc_type->get_kind();
7962  switch (disc_tk) {
7963  case TK_BOOLEAN: {
7964  ACE_OutputCDR::from_boolean val(false);
7966  value = static_cast<CORBA::Long>(val.val_);
7967  return true;
7968  }
7969  case TK_BYTE: {
7970  ACE_OutputCDR::from_octet val(0x00);
7972  value = static_cast<CORBA::Long>(val.val_);
7973  return true;
7974  }
7975  case TK_CHAR8: {
7976  ACE_OutputCDR::from_char val('\0');
7978  value = static_cast<CORBA::Long>(val.val_);
7979  return true;
7980  }
7981 #ifdef DDS_HAS_WCHAR
7982  case TK_CHAR16: {
7985  value = static_cast<CORBA::Long>(val.val_);
7986  return true;
7987  }
7988 #endif
7989  case TK_INT8: {
7990  ACE_OutputCDR::from_int8 val(0);
7992  value = static_cast<CORBA::Long>(val.val_);
7993  return true;
7994  }
7995  case TK_UINT8: {
7998  value = static_cast<CORBA::Long>(val.val_);
7999  return true;
8000  }
8001  case TK_INT16: {
8002  CORBA::Short val;
8004  value = static_cast<CORBA::Long>(val);
8005  return true;
8006  }
8007  case TK_UINT16: {
8008  CORBA::UShort val;
8010  value = static_cast<CORBA::Long>(val);
8011  return true;
8012  }
8013  case TK_INT32: {
8015  return true;
8016  }
8017  case TK_UINT32: {
8018  CORBA::ULong val;
8020  value = static_cast<CORBA::Long>(val);
8021  return true;
8022  }
8023  case TK_INT64: {
8024  CORBA::LongLong val;
8026  value = static_cast<CORBA::Long>(val);
8027  return true;
8028  }
8029  case TK_UINT64: {
8030  CORBA::ULongLong val;
8032  value = static_cast<CORBA::Long>(val);
8033  return true;
8034  }
8035  case TK_ENUM: {
8036  return set_default_enum_value(disc_type, value);
8037  }
8038  }
8039  return false;
8040 }
ACE_CDR::Long Long
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
const TypeKind TK_BYTE
Definition: TypeObject.h:215
ACE_CDR::LongLong LongLong
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
const TypeKind TK_UINT16
Definition: TypeObject.h:219
const TypeKind TK_INT8
Definition: TypeObject.h:225
ACE_CDR::ULongLong ULongLong
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
ACE_CDR::UShort UShort
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
const TypeKind TK_UINT64
Definition: TypeObject.h:221
const TypeKind TK_INT64
Definition: TypeObject.h:218
const TypeKind TK_UINT32
Definition: TypeObject.h:220
const TypeKind TK_ENUM
Definition: TypeObject.h:238
const TypeKind TK_UINT8
Definition: TypeObject.h:226
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
bool set_default_enum_value(const DDS::DynamicType_var &dt, CORBA::Long &value) const

◆ set_default_enum_value()

bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_enum_value ( const DDS::DynamicType_var &  dt,
CORBA::Long value 
) const

Definition at line 4495 of file DynamicDataImpl.cpp.

References DDS::RETCODE_OK.

Referenced by OpenDDS::XTypes::DynamicDataImpl::clear_value_i(), and OpenDDS::XTypes::DynamicDataImpl::get_value_from_enum().

4497 {
4498  // Default enum value is the first enumerator.
4499  DDS::DynamicTypeMember_var first_dtm;
4500  if (enum_type->get_member_by_index(first_dtm, 0) != DDS::RETCODE_OK) {
4501  return false;
4502  }
4503  DDS::MemberDescriptor_var first_md;
4504  if (first_dtm->get_descriptor(first_md) != DDS::RETCODE_OK) {
4505  return false;
4506  }
4507  value = static_cast<CORBA::Long>(first_md->id());
4508  return true;
4509 }
ACE_CDR::Long Long
const LogLevel::Value value
Definition: debug.cpp:61
const ReturnCode_t RETCODE_OK

◆ set_default_enum_values()

template<typename ElementType , typename CollectionType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_enum_values ( CollectionType &  collection,
const DDS::DynamicType_var &  enum_type 
) const

Definition at line 5030 of file DynamicDataImpl.cpp.

References value.

5032 {
5034  if (!set_default_enum_value(enum_type, value)) {
5035  return false;
5036  }
5037  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
5038  collection[i] = static_cast<ElementType>(value);
5039  }
5040  return true;
5041 }
ACE_CDR::Long Long
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong
bool set_default_enum_value(const DDS::DynamicType_var &dt, CORBA::Long &value) const

◆ set_default_primitive_values() [1/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( DDS::Int8Seq collection) const

Definition at line 4537 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_int8::val_, and value.

Referenced by set_default_primitive_values().

4538 {
4539  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4542  collection[i] = value.val_;
4543  }
4544 }
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong

◆ set_default_primitive_values() [2/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( DDS::UInt8Seq collection) const

Definition at line 4546 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_uint8::val_, and value.

4547 {
4548  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4551  collection[i] = value.val_;
4552  }
4553 }
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong

◆ set_default_primitive_values() [3/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( DDS::CharSeq collection) const

Definition at line 4555 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_char::val_, and value.

4556 {
4557  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4560  collection[i] = value.val_;
4561  }
4562 }
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong

◆ set_default_primitive_values() [4/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( DDS::ByteSeq collection) const

Definition at line 4564 of file DynamicDataImpl.cpp.

References ACE_OutputCDR::from_octet::val_, and value.

4565 {
4566  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4569  collection[i] = value.val_;
4570  }
4571 }
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong

◆ set_default_primitive_values() [5/6]

void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( DDS::BooleanSeq collection) const

Definition at line 4573 of file DynamicDataImpl.cpp.

References set_default_primitive_values(), ACE_OutputCDR::from_wchar::val_, ACE_OutputCDR::from_boolean::val_, and value.

4574 {
4575  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4578  collection[i] = value.val_;
4579  }
4580 }
void set_default_basic_value(CORBA::Long &value) const
const LogLevel::Value value
Definition: debug.cpp:61
ACE_CDR::ULong ULong

◆ set_default_primitive_values() [6/6]

template<typename CollectionType >
void OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_default_primitive_values ( CollectionType &  collection) const

Definition at line 4594 of file DynamicDataImpl.cpp.

4595 {
4596  for (CORBA::ULong i = 0; i < collection.length(); ++i) {
4597  set_default_basic_value(collection[i]);
4598  }
4599 }
void set_default_basic_value(CORBA::Long &value) const
ACE_CDR::ULong ULong

◆ set_primitive_values() [1/6]

template<typename ElementType , typename CollectionType >
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( CollectionType &  collection,
CORBA::ULong  bound,
const ElementType &  elem_tag 
) const

Definition at line 4779 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

Referenced by set_primitive_values().

4781 {
4782  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4783  CORBA::ULong index;
4784  if (!data_->get_index_from_id(it->first, index, bound)) {
4785  return false;
4786  }
4787  collection[index] = it->second.get<ElementType>();
4788  }
4789 
4790  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4791  CORBA::ULong index;
4792  if (!data_->get_index_from_id(it->first, index, bound)) {
4793  return false;
4794  }
4795  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4796  if (!elem_dd) {
4797  return false;
4798  }
4799  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4800  if (elem_it != elem_dd->container_.single_map_.end()) {
4801  collection[index] = elem_it->second.get<ElementType>();
4802  }
4803  }
4804  return true;
4805 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ set_primitive_values() [2/6]

template<>
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( DDS::BooleanSeq collection,
CORBA::ULong  bound,
const ACE_OutputCDR::from_boolean  
) const

Definition at line 4603 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4605 {
4606  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4607  CORBA::ULong index;
4608  if (!data_->get_index_from_id(it->first, index, bound)) {
4609  return false;
4610  }
4611  collection[index] = it->second.get<ACE_OutputCDR::from_boolean>().val_;
4612  }
4613 
4614  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4615  CORBA::ULong index;
4616  if (!data_->get_index_from_id(it->first, index, bound)) {
4617  return false;
4618  }
4619  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4620  if (!elem_dd) {
4621  return false;
4622  }
4623  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4624  if (elem_it != elem_dd->container_.single_map_.end()) {
4625  collection[index] = elem_it->second.get<ACE_OutputCDR::from_boolean>().val_;
4626  }
4627  }
4628  return true;
4629 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ set_primitive_values() [3/6]

template<>
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( DDS::ByteSeq collection,
CORBA::ULong  bound,
const ACE_OutputCDR::from_octet  
) const

Definition at line 4632 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4634 {
4635  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4636  CORBA::ULong index;
4637  if (!data_->get_index_from_id(it->first, index, bound)) {
4638  return false;
4639  }
4640  collection[index] = it->second.get<ACE_OutputCDR::from_octet>().val_;
4641  }
4642 
4643  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4644  CORBA::ULong index;
4645  if (!data_->get_index_from_id(it->first, index, bound)) {
4646  return false;
4647  }
4648  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4649  if (!elem_dd) {
4650  return false;
4651  }
4652  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4653  if (elem_it != elem_dd->container_.single_map_.end()) {
4654  collection[index] = elem_it->second.get<ACE_OutputCDR::from_octet>().val_;
4655  }
4656  }
4657  return true;
4658 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ set_primitive_values() [4/6]

template<>
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( DDS::Int8Seq collection,
CORBA::ULong  bound,
const ACE_OutputCDR::from_int8  
) const

Definition at line 4661 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4663 {
4664  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4665  CORBA::ULong index;
4666  if (!data_->get_index_from_id(it->first, index, bound)) {
4667  return false;
4668  }
4669  collection[index] = it->second.get<ACE_OutputCDR::from_int8>().val_;
4670  }
4671 
4672  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4673  CORBA::ULong index;
4674  if (!data_->get_index_from_id(it->first, index, bound)) {
4675  return false;
4676  }
4677  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4678  if (!elem_dd) {
4679  return false;
4680  }
4681  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4682  if (elem_it != elem_dd->container_.single_map_.end()) {
4683  collection[index] = elem_it->second.get<ACE_OutputCDR::from_int8>().val_;
4684  }
4685  }
4686  return true;
4687 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ set_primitive_values() [5/6]

template<>
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( DDS::UInt8Seq collection,
CORBA::ULong  bound,
const ACE_OutputCDR::from_uint8  
) const

Definition at line 4690 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, and OpenDDS::XTypes::MEMBER_ID_INVALID.

4692 {
4693  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4694  CORBA::ULong index;
4695  if (!data_->get_index_from_id(it->first, index, bound)) {
4696  return false;
4697  }
4698  collection[index] = it->second.get<ACE_OutputCDR::from_uint8>().val_;
4699  }
4700 
4701  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4702  CORBA::ULong index;
4703  if (!data_->get_index_from_id(it->first, index, bound)) {
4704  return false;
4705  }
4706  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4707  if (!elem_dd) {
4708  return false;
4709  }
4710  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4711  if (elem_it != elem_dd->container_.single_map_.end()) {
4712  collection[index] = elem_it->second.get<ACE_OutputCDR::from_uint8>().val_;
4713  }
4714  }
4715  return true;
4716 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

◆ set_primitive_values() [6/6]

template<>
bool OpenDDS::XTypes::DynamicDataImpl::DataContainer::set_primitive_values ( DDS::CharSeq collection,
CORBA::ULong  bound,
const ACE_OutputCDR::from_char  
) const

Definition at line 4719 of file DynamicDataImpl.cpp.

References OpenDDS::XTypes::DynamicDataImpl::container_, OpenDDS::XTypes::MEMBER_ID_INVALID, and set_primitive_values().

4721 {
4722  for (const_single_iterator it = single_map_.begin(); it != single_map_.end(); ++it) {
4723  CORBA::ULong index;
4724  if (!data_->get_index_from_id(it->first, index, bound)) {
4725  return false;
4726  }
4727  collection[index] = it->second.get<ACE_OutputCDR::from_char>().val_;
4728  }
4729 
4730  for (const_complex_iterator it = complex_map_.begin(); it != complex_map_.end(); ++it) {
4731  CORBA::ULong index;
4732  if (!data_->get_index_from_id(it->first, index, bound)) {
4733  return false;
4734  }
4735  const DynamicDataImpl* elem_dd = dynamic_cast<const DynamicDataImpl*>(it->second.in());
4736  if (!elem_dd) {
4737  return false;
4738  }
4739  const_single_iterator elem_it = elem_dd->container_.single_map_.find(MEMBER_ID_INVALID);
4740  if (elem_it != elem_dd->container_.single_map_.end()) {
4741  collection[index] = elem_it->second.get<ACE_OutputCDR::from_char>().val_;
4742  }
4743  }
4744  return true;
4745 }
DynamicDataImpl(DDS::DynamicType_ptr type)
ACE_CDR::ULong ULong
bool get_index_from_id(DDS::MemberId id, ACE_CDR::ULong &index, ACE_CDR::ULong bound) const
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911

Member Data Documentation

◆ data_

const DynamicDataImpl* OpenDDS::XTypes::DynamicDataImpl::DataContainer::data_

Definition at line 970 of file DynamicDataImpl.h.

◆ type_

const DDS::DynamicType_var& OpenDDS::XTypes::DynamicDataImpl::DataContainer::type_

Definition at line 968 of file DynamicDataImpl.h.

◆ type_desc_

const DDS::TypeDescriptor_var& OpenDDS::XTypes::DynamicDataImpl::DataContainer::type_desc_

Definition at line 969 of file DynamicDataImpl.h.


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