3 #ifndef OPENDDS_SAFETY_PROFILE 11 #include <dds/DdsDcpsInfrastructureC.h> 21 : preset_type_info_set_(false)
30 CORBA::add_ref(descriptor);
36 DDS::TypeDescriptor_var descriptor_v(descriptor);
38 CORBA::add_ref(descriptor);
57 DDS::DynamicTypeMember_var member_v(member);
58 member = DDS::DynamicTypeMember::_duplicate(pos->second);
66 DDS::DynamicTypeMembersByName_var member_v(member);
78 "type %C doesn't have a member with id %u\n", name.
in(), id));
83 DDS::DynamicTypeMember_var member_v(member);
84 member = DDS::DynamicTypeMember::_duplicate(pos->second);
90 DDS::DynamicTypeMembersById_var member_v(member);
91 member = DDS::DynamicTypeMembersById::_duplicate(&
member_by_id_);
106 "type %C doesn't have a member with index %u\n", name.
in(), index));
111 DDS::DynamicTypeMember_var member_v(member);
150 DynamicTypePtrPairSeen dt_ptr_pair;
156 DDS::MemberDescriptor_var d;
158 throw std::runtime_error(
"Could not get type descriptor of dynamic member");
183 DDS::DynamicType_var t = DDS::DynamicType::_duplicate(type);
188 DDS::TypeDescriptor_var descriptor;
196 bool test_equality(DDS::DynamicType_ptr lhs, DDS::DynamicType_ptr rhs, DynamicTypePtrPairSeen& dt_ptr_pair)
205 if (lhs == 0 || rhs == 0) {
210 DynamicTypePtrPairSeen::const_iterator have_seen = dt_ptr_pair.find(this_pair);
211 if (have_seen == dt_ptr_pair.end()) {
212 dt_ptr_pair.insert(this_pair);
214 DDS::TypeDescriptor_var lhs_descriptor;
215 DDS::TypeDescriptor_var rhs_descriptor;
216 DDS::DynamicTypeMembersByName_var lhs_members_by_name;
217 DDS::DynamicTypeMembersByName_var rhs_members_by_name;
218 DDS::DynamicTypeMembersById_var lhs_members_by_id;
219 DDS::DynamicTypeMembersById_var rhs_members_by_id;
223 lhs->get_all_members_by_name(lhs_members_by_name) !=
DDS::RETCODE_OK ||
224 rhs->get_all_members_by_name(rhs_members_by_name) !=
DDS::RETCODE_OK ||
231 test_equality(lhs_descriptor, rhs_descriptor, dt_ptr_pair) &&
232 test_equality(dynamic_cast<DynamicTypeMembersByNameImpl*>(lhs_members_by_name.in()),
233 dynamic_cast<DynamicTypeMembersByNameImpl*>(rhs_members_by_name.in()), dt_ptr_pair) &&
234 test_equality(dynamic_cast<DynamicTypeMembersByIdImpl*>(lhs_members_by_id.in()),
235 dynamic_cast<DynamicTypeMembersByIdImpl*>(rhs_members_by_id.in()), dt_ptr_pair);
247 if (lhs == 0 || rhs == 0) {
257 if (rhs_it == rhs->
end()) {
260 DDS::MemberDescriptor_var lhs_md;
261 DDS::MemberDescriptor_var rhs_md;
279 if (lhs == 0 || rhs == 0) {
289 if (rhs_it == rhs->
end()) {
292 DDS::MemberDescriptor_var lhs_md;
293 DDS::MemberDescriptor_var rhs_md;
310 #endif // OPENDDS_SAFETY_PROFILE
bool equals(DDS::DynamicType_ptr other)
DDS::ReturnCode_t get_descriptor(DDS::TypeDescriptor *&descriptor)
DynamicTypeMembersByNameImpl member_by_name_
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
DDS::ReturnCode_t get_annotation(DDS::AnnotationDescriptor *&descriptor, CORBA::ULong idx)
DDS::ReturnCode_t get_verbatim_text(DDS::VerbatimTextDescriptor *&descriptor, CORBA::ULong idx)
DynamicTypeMembersByIdImpl member_by_id_
#define OPENDDS_ASSERT(C)
DDS::TypeDescriptor_var descriptor_
const_iterator find(const OpenDDS::DCPS::String &key) const
DDS::ReturnCode_t get_all_members(DDS::DynamicTypeMembersById_ptr &member)
void insert(const MapType::value_type &value)
void insert_dynamic_member(DDS::DynamicTypeMember_ptr dtm)
void insert(const MapType::value_type &value)
bool test_equality(DDS::DynamicType_ptr lhs, DDS::DynamicType_ptr rhs, DynamicTypePtrPairSeen &dt_ptr_pair)
MapType::const_iterator const_iterator
void set_descriptor(DDS::TypeDescriptor *descriptor)
const_iterator find(MemberId key) const
const_iterator begin() const
const_iterator begin() const
const ACE_CDR::ULong MEMBER_ID_INVALID
DynamicTypeMembersByIndex member_by_index_
character_type * _retn(void)
const_iterator end() const
OpenDDS_Dcps_Export LogLevel log_level
DDS::ReturnCode_t get_member_by_index(DDS::DynamicTypeMember_ptr &member, ACE_CDR::ULong index)
const ReturnCode_t RETCODE_ERROR
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
CORBA::ULong get_annotation_count()
const ReturnCode_t RETCODE_OK
const ReturnCode_t RETCODE_UNSUPPORTED
DDS::ReturnCode_t get_member_by_name(DDS::DynamicTypeMember_ptr &member, const char *name)
const character_type * in(void) const
std::pair< const DDS::DynamicType *, const DDS::DynamicType * > DynamicTypePtrPair
The Internal API and Implementation of OpenDDS.
DDS::ReturnCode_t get_all_members_by_name(DDS::DynamicTypeMembersByName_ptr &member)
ACE_CDR::ULong get_member_count()
const_iterator end() const
DDS::ReturnCode_t get_member(DDS::DynamicTypeMember_ptr &member, MemberId id)
CORBA::ULong get_verbatim_text_count()
const ReturnCode_t RETCODE_BAD_PARAMETER
MapType::const_iterator const_iterator