MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / print_member

Function print_member

dds/DCPS/XTypes/DynamicDataXcdrReadImpl.cpp:2958–3222  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2956}
2957
2958bool print_member(DDS::DynamicData_ptr dd, DCPS::String& type_string, DCPS::String& indent,
2959 MemberId member_id)
2960{
2961 DDS::DynamicType_ptr member_type;
2962 DDS::MemberDescriptor_var member_descriptor;
2963 const DDS::DynamicType_var container_type = dd->type();
2964 const DDS::TypeKind container_kind = container_type->get_kind();
2965 const bool sequence_like = is_sequence_like(container_kind);
2966 if (sequence_like) {
2967 DDS::TypeDescriptor_var td;
2968 if (container_type->get_descriptor(td) != DDS::RETCODE_OK) {
2969 return false;
2970 }
2971 member_type = td->element_type();
2972
2973 } else {
2974 DDS::DynamicTypeMember_var dtm;
2975 if (container_type->get_member(dtm, member_id) != DDS::RETCODE_OK) {
2976 return false;
2977 }
2978 if (dtm->get_descriptor(member_descriptor) != DDS::RETCODE_OK) {
2979 return false;
2980 }
2981 member_type = member_descriptor->type();
2982 }
2983
2984 const DDS::DynamicType_var member_base_type = get_base_type(member_type);
2985 const DDS::TypeKind tk = member_base_type->get_kind();
2986 DDS::TypeDescriptor_var member_type_descriptor;
2987 if (member_base_type->get_descriptor(member_type_descriptor) != DDS::RETCODE_OK) {
2988 return false;
2989 }
2990
2991 if (member_descriptor) {
2992 type_string += indent;
2993 const bool struct_or_union = tk == TK_STRUCTURE || tk == TK_UNION;
2994 if (struct_or_union) {
2995 type_string += (tk == TK_STRUCTURE ? "struct " : "union ");
2996 }
2997 const CORBA::String_var member_type_name = member_type->get_name();
2998 const DCPS::String member_name = member_descriptor->name();
2999 type_string += DCPS::String(member_type_name.in()) + " " + member_name;
3000 if (!struct_or_union) {
3001 type_string += " ";
3002 }
3003 if (tk == TK_ARRAY || tk == TK_SEQUENCE) {
3004 DDS::TypeDescriptor_var td;
3005 const DDS::DynamicType_var elem_type = get_base_type(member_type_descriptor->element_type());
3006 if (elem_type->get_descriptor(td) != DDS::RETCODE_OK) {
3007 return false;
3008 }
3009 DCPS::String ele_type_name = td->name();
3010 type_string += ele_type_name;
3011 }
3012 }
3013
3014 if (!is_complex(tk)) {
3015 type_string += "= ";

Callers 1

print_membersFunction · 0.85

Calls 15

is_sequence_likeFunction · 0.85
get_base_typeFunction · 0.85
StringClass · 0.85
is_complexFunction · 0.85
get_enumerator_nameFunction · 0.85
get_int_valueFunction · 0.85
get_uint_valueFunction · 0.85
print_membersFunction · 0.85
get_kindMethod · 0.80
element_typeMethod · 0.80
get_memberMethod · 0.80
get_enum_valueFunction · 0.70

Tested by

no test coverage detected