15 #ifndef OPENDDS_SAFETY_PROFILE 27 ACE_TEXT(
" Invalid TryConstruct Kind\n")));
39 to_empty_.minimal.kind =
TK_NONE;
40 to_empty_.complete.kind =
TK_NONE;
48 #ifndef OPENDDS_SAFETY_PROFILE 49 for (GuidTypeMap::const_iterator pos = gt_map_.begin(), limit = gt_map_.end(); pos != limit; ++pos) {
50 for (DynamicTypeMap::const_iterator pos2 = pos->second.begin(), limit2 = pos->second.end(); pos2 != limit2; ++pos2) {
51 pos2->second->clear();
61 for (
unsigned i = 0; i < type_ids.
length(); ++i) {
62 TypeMap::const_iterator pos = type_map_.find(type_ids[i]);
63 if (pos != type_map_.end()) {
72 return get_type_object_i(type_id);
77 const TypeMap::const_iterator pos = type_map_.find(type_id);
78 if (pos != type_map_.end()) {
88 const TypeIdentifierWithSizeSeqMap::const_iterator it = type_dependencies_map_.find(type_id);
89 if (it != type_dependencies_map_.end()) {
90 dependencies = it->second;
100 get_type_dependencies_i(type_ids, dependencies);
107 for (
unsigned i = 0; i < type_ids.
length(); ++i) {
108 const TypeIdentifierWithSizeSeqMap::const_iterator it = type_dependencies_map_.find(type_ids[i]);
109 if (it != type_dependencies_map_.end()) {
110 for (
unsigned j = 0; j < it->second.length(); ++j) {
111 tmp.insert(it->second[j].type_id);
117 dependencies.
length(static_cast<unsigned>(tmp.size()));
119 for (
unsigned i = 0; iter != tmp.end(); ++i, ++iter) {
120 const TypeMap::const_iterator tobj_it = type_map_.find(*iter);
121 if (tobj_it != type_map_.end()) {
122 dependencies[i].type_id = *iter;
124 dependencies[i].typeobject_serialized_size =
static_cast<unsigned>(sz);
132 for (
unsigned i = 0; i < types.
length(); ++i) {
133 const TypeMap::iterator pos = type_map_.find(types[i].type_identifier);
134 if (pos == type_map_.end()) {
136 if (set_type_object_defaults(to)) {
137 type_map_.insert(std::make_pair(types[i].type_identifier, to));
146 type_map_.insert(begin, end);
152 TypeMap::const_iterator pos = type_map_.find(ti);
153 if (pos == type_map_.end()) {
154 type_map_.insert(std::make_pair(ti, tobj));
170 if (type_info_map_.find(key) == type_info_map_.end()) {
171 type_info_map_.insert(std::make_pair(key, type_info));
178 const TypeInformationMap::const_iterator it = type_info_map_.find(key);
179 if (it != type_info_map_.end()) {
182 return type_info_empty_;
200 mt.seq_sdefn().header.equiv_kind =
EK_MINIMAL;
201 complete_elem_ti = *ct.seq_sdefn().element_identifier;
204 mt.seq_ldefn().header.equiv_kind =
EK_MINIMAL;
205 complete_elem_ti = *ct.seq_ldefn().element_identifier;
208 mt.array_sdefn().header.equiv_kind =
EK_MINIMAL;
209 complete_elem_ti = *ct.array_sdefn().element_identifier;
212 mt.array_ldefn().header.equiv_kind =
EK_MINIMAL;
213 complete_elem_ti = *ct.array_ldefn().element_identifier;
216 mt.map_sdefn().header.equiv_kind =
EK_MINIMAL;
217 complete_elem_ti = *ct.map_sdefn().element_identifier;
220 mt.map_ldefn().header.equiv_kind =
EK_MINIMAL;
221 complete_elem_ti = *ct.map_ldefn().element_identifier;
224 get_minimal_type_identifier(complete_elem_ti, minimal_elem_ti);
228 mt.seq_sdefn().element_identifier = minimal_elem_ti;
231 mt.seq_ldefn().element_identifier = minimal_elem_ti;
234 mt.array_sdefn().element_identifier = minimal_elem_ti;
237 mt.array_ldefn().element_identifier = minimal_elem_ti;
241 mt.map_sdefn().element_identifier = minimal_elem_ti;
243 get_minimal_type_identifier(*ct.map_sdefn().key_identifier, minimal_key_ti);
244 mt.map_sdefn().key_identifier = minimal_key_ti;
249 mt.map_ldefn().element_identifier = minimal_elem_ti;
251 get_minimal_type_identifier(*ct.map_ldefn().key_identifier, minimal_key_ti);
252 mt.map_ldefn().key_identifier = minimal_key_ti;
261 const TypeIdentifierMap::const_iterator pos = complete_to_minimal_ti_map_.find(ct);
262 if (pos == complete_to_minimal_ti_map_.end()) {
264 ACE_TEXT(
"complete TypeIdentifier not found.\n")));
267 ACE_TEXT(
" Kind: EK_COMPLETE. Hash: (%C)\n"),
273 ACE_TEXT(
"Expect EK_COMPLETE but received EK_MINIMAL.\n")));
277 ACE_TEXT(
"Kind: TI_STRONGLY_CONNECTED_COMPONENT. ")
278 ACE_TEXT(
"Equivalence kind: %C. Hash: (%C). Scc length: %d. Scc index: %d\n"),
281 ct.sc_component_id().scc_length,
282 ct.sc_component_id().scc_index));
301 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 302 "Invalid extensibility kind in TK_STRUCTURE\n"));
314 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 315 "Invalid extensibility kind in TK_UNION\n"));
328 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 329 "Invalid extensibility kind in TK_ENUM\n"));
335 "(%P|%t) WARNING: TypeLookupService::set_type_object_defaults: " 336 "Zero extensibility flags in TK_ENUM\n"));
346 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 347 "Invalid extensibility kind in TK_BITMASK\n"));
364 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 365 "Invalid extensibility kind in TK_STRUCTURE\n"));
377 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 378 "Invalid extensibility kind in TK_UNION\n"));
391 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 392 "Invalid extensibility kind in TK_ENUM\n"));
398 "(%P|%t) WARNING: TypeLookupService::set_type_object_defaults: " 399 "Zero extensibility flags in TK_ENUM\n"));
409 "(%P|%t) ERROR: TypeLookupService::set_type_object_defaults: " 410 "Invalid extensibility kind in TK_BITMASK\n"));
435 if (!get_minimal_type_identifier(ct.
member_seq[i].common.member_type_id,
458 if (!get_minimal_type_identifier(ct.
member_seq[i].common.type_id,
476 if (!get_minimal_type_identifier(ct.
member_seq[i].common.member_type_id,
607 #ifndef OPENDDS_SAFETY_PROFILE 621 md->is_default_label(
false);
631 DDS::DynamicType_var dt = type_identifier_to_dynamic(cm.
common.
type_id, guid);
637 for (
unsigned int idx = 0; idx != labels.
length(); ++idx) {
643 md->is_optional(
false);
644 md->is_must_understand(
false);
654 md->name(cm.
name.c_str());
659 md->is_optional(
false);
660 md->is_must_understand(
false);
661 md->is_shared(
false);
662 md->is_default_label(
false);
669 DDS::DynamicType_var dt_var = dt;
670 complete_to_dynamic_i(dt, cto, guid);
671 return dt_var._retn();
711 td->bound().length(1);
715 DDS::DynamicTypeMember_var dtm_var = dtm;
717 DDS::MemberDescriptor_var md_var = md;
732 td->bound().length(1);
735 td->element_type(temp);
738 DDS::DynamicTypeMember_var dtm_var = dtm;
740 DDS::MemberDescriptor_var md_var = md;
758 DDS::DynamicTypeMember_var dtm_var = dtm;
774 DDS::DynamicTypeMember_var dtm_var = dtm;
775 DDS::MemberDescriptor_var md = complete_struct_member_to_member_descriptor(cto.
struct_type.
member_seq[i], guid);
788 const DDS::DynamicType_var disc_type =
790 td->discriminator_type(disc_type);
792 disc_md->name(
"discriminator");
794 disc_md->type(disc_type);
798 DDS::DynamicTypeMember_var disc_dtm_var = disc_dtm;
803 DDS::MemberDescriptor_var md = complete_union_member_to_member_descriptor(cto.
union_type.
member_seq[i], guid);
806 DDS::DynamicTypeMember_var dtm_var = dtm;
821 td->bound().length(1);
824 td->element_type(temp);
833 for (
unsigned int idx = 0; idx != bounds.length(); ++idx) {
838 td->element_type(temp);
846 td->bound().length(1);
849 td->element_type(el_temp);
850 const DDS::DynamicType_var key_temp = type_identifier_to_dynamic(cto.
map_type.
key.
common.
type, guid);
851 td->key_element_type(key_temp);
863 ACE_TEXT(
" Encountered TK_NONE: returning nil Dynamic Type\n")));
868 DDS::DynamicType_var dt_var = dt;
872 const GuidTypeMap::iterator guid_found = gt_map_.find(guid);
873 if (guid_found != gt_map_.end()) {
874 const DynamicTypeMap::const_iterator ti_found = guid_found->second.find(ti);
875 if (ti_found != guid_found->second.end()) {
876 return DDS::DynamicType::_duplicate(ti_found->second);
878 guid_found->second.insert(std::make_pair(ti, dt_var));
881 DynamicTypeMap dt_map;
882 dt_map.insert(std::make_pair(ti, dt_var));
883 gt_map_.insert(std::make_pair(guid, dt_map));
940 td->name(
"Float128");
966 td->bound().length(1);
967 td->bound()[0] = ti.string_sdefn().bound;
969 td->element_type(temp);
976 td->bound().length(1);
977 td->bound()[0] = ti.string_ldefn().bound;
979 td->element_type(temp);
985 td->name(
"WString16");
986 td->bound().length(1);
987 td->bound()[0] = ti.string_sdefn().bound;
989 td->element_type(temp);
995 td->name(
"WString16");
996 td->bound().length(1);
997 td->bound()[0] = ti.string_ldefn().bound;
999 td->element_type(temp);
1005 td->name(
"Sequence");
1006 td->bound().length(1);
1007 td->bound()[0] = ti.seq_sdefn().bound;
1008 const DDS::DynamicType_var temp = type_identifier_to_dynamic(*ti.seq_sdefn().element_identifier, guid);
1009 td->element_type(temp);
1015 td->name(
"Sequence");
1016 td->bound().length(1);
1017 td->bound()[0] = ti.seq_ldefn().bound;
1018 const DDS::DynamicType_var temp = type_identifier_to_dynamic(*ti.seq_ldefn().element_identifier, guid);
1019 td->element_type(temp);
1026 td->bound().length(ti.array_sdefn().array_bound_seq.length());
1028 td->bound()[i] = ti.array_sdefn().array_bound_seq[i];
1030 const DDS::DynamicType_var temp = type_identifier_to_dynamic(*ti.array_sdefn().element_identifier, guid);
1031 td->element_type(temp);
1039 bounds.length(ti.array_ldefn().array_bound_seq.length());
1040 for (
unsigned int idx = 0; idx != bounds.length(); ++idx) {
1041 bounds[idx] = ti.array_ldefn().array_bound_seq[idx];
1044 const DDS::DynamicType_var temp = type_identifier_to_dynamic(*ti.array_ldefn().element_identifier, guid);
1045 td->element_type(temp);
1052 td->bound().length(1);
1053 td->bound()[0] = ti.map_sdefn().bound;
1054 const DDS::DynamicType_var el_temp = type_identifier_to_dynamic(*ti.map_sdefn().element_identifier, guid);
1055 td->element_type(el_temp);
1056 const DDS::DynamicType_var key_temp = type_identifier_to_dynamic(*ti.map_sdefn().key_identifier, guid);
1057 td->key_element_type(key_temp);
1064 td->bound().length(1);
1065 td->bound()[0] = ti.map_ldefn().bound;
1066 const DDS::DynamicType_var el_temp = type_identifier_to_dynamic(*ti.map_ldefn().element_identifier, guid);
1067 td->element_type(el_temp);
1068 const DDS::DynamicType_var key_temp = type_identifier_to_dynamic(*ti.map_ldefn().key_identifier, guid);
1069 td->key_element_type(key_temp);
1076 const TypeObject& to = get_type_object_i(ti);
1079 ACE_TEXT(
" get_type_object_i returned TK_NONE\n")));
1081 complete_to_dynamic_i(dt, to.
complete, guid);
1088 ACE_TEXT(
" Encountered EK_MINIMAL: returning nil Dynamic Type\n")));
1093 td->name(
"Annotation");
1098 return dt_var._retn();
1100 #endif // OPENDDS_SAFETY_PROFILE 1106 if (type_dependencies_map_.find(type_id) == type_dependencies_map_.end()) {
1107 type_dependencies_map_.insert(std::make_pair(type_id, dependencies));
1114 return type_map_.find(ti) != type_map_.end();
1120 bool result =
false;
1121 const TypeObject& to = get_type_object_i(type_id);
1140 type_ids.
append(type_id);
1141 get_type_dependencies_i(type_ids, dependencies);
1143 for (
unsigned i = 0; i < dependencies.
length(); ++i) {
1144 const TypeObject& dep_to = get_type_object_i(dependencies[i].type_id);
1163 #ifndef OPENDDS_SAFETY_PROFILE 1167 const GuidTypeMap::iterator g_found = gt_map_.find(guid);
1168 if (g_found != gt_map_.end()) {
1169 for (DynamicTypeMap::const_iterator pos2 = g_found->second.begin(), limit2 = g_found->second.end(); pos2 != limit2; ++pos2) {
1170 pos2->second->clear();
1172 gt_map_.erase(g_found);
1174 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) TypeLookupService::remove_guid_from_dynamic_map: ",
1175 "Alerted to removal of %C, removing GUID from GuidTypeMap.\n",
DCPS::to_string(guid).c_str()));
UnionMemberFlag member_flags
CompleteAnnotationParameterSeq member_seq
TypeIdentifier related_type
const TypeKind TK_SEQUENCE
void update_type_identifier_map(const TypeIdentifierPairSeq &tid_pairs)
CompleteCollectionElement element
MinimalEnumeratedType enumerated_type
#define ACE_GUARD(MUTEX, OBJ, LOCK)
bool complete_to_minimal_union(const CompleteUnionType &ct, MinimalUnionType &mt) const
AnnotationTypeFlag annotation_flag
bool complete_to_minimal_enumerated(const CompleteEnumeratedType &ct, MinimalEnumeratedType &mt) const
TypeIdentifier member_type_id
sequence< unsigned long > BoundSeq
bool complete_to_minimal_struct(const CompleteStructType &ct, MinimalStructType &mt) const
const TypeKind TK_STRING16
MinimalCollectionHeader header
CompleteBitflagSeq flag_seq
const TypeKind TK_FLOAT128
const Encoding & get_typeobject_encoding()
CommonStructMember common
CompleteArrayType array_type
const TypeIdentifierKind TI_STRING8_LARGE
CompleteBitsetHeader header
const TypeFlag IS_MUTABLE
StructMemberFlag member_flags
void get_type_objects(const TypeIdentifierSeq &type_ids, TypeIdentifierTypeObjectPairSeq &types) const
For TypeLookup_getTypes.
CompleteMemberDetail detail
CommonCollectionHeader common
bool complete_to_minimal_array(const CompleteArrayType &ct, MinimalArrayType &mt) const
CompleteUnionMemberSeq member_seq
CompleteStructType struct_type
const TypeIdentifierKind TI_PLAIN_SEQUENCE_LARGE
MinimalBitflagSeq flag_seq
CollectionTypeFlag collection_flag
MinimalCollectionElement element
void cache_type_info(const DDS::BuiltinTopicKey_t &key, const TypeInformation &type_info)
For caching and retrieving TypeInformation of remote endpoints.
const MemberFlag IS_MUST_UNDERSTAND
QualifiedTypeName type_name
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
DDS::DynamicType_ptr complete_to_dynamic(const CompleteTypeObject &cto, const DCPS::GUID_t &guid)
CompleteTypeDetail detail
ACE_CDR::Octet kind() const
CompleteUnionHeader header
MinimalEnumeratedLiteralSeq literal_seq
CompleteBitmaskHeader header
TypeIdentifier member_type_id
CompleteCollectionElement element
bool has_complete(const TypeIdentifier &ti) const
bool get_type_dependencies(const TypeIdentifier &type_id, TypeIdentifierWithSizeSeq &dependencies) const
For TypeLookup_getTypeDependencies.
void complete_to_dynamic_i(DynamicTypeImpl *dt, const CompleteTypeObject &cto, const DCPS::GUID_t &guid)
const TypeObject & get_type_object_i(const TypeIdentifier &type_id) const
const TypeIdentifierKind TI_STRING16_LARGE
bool is_fully_descriptive(const TypeIdentifier &ti)
void insert_dynamic_member(DDS::DynamicTypeMember_ptr dtm)
MinimalAnnotationParameterSeq member_seq
bool complete_to_minimal_annotation(const CompleteAnnotationType &ct, MinimalAnnotationType &mt) const
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
const MemberFlag TRY_CONSTRUCT2
void handle_tryconstruct_flags(DDS::MemberDescriptor *md, MemberFlag mf)
CompleteTypeDetail detail
CommonCollectionElement common
CommonEnumeratedHeader common
BitsetTypeFlag bitset_flags
void add_type_objects_to_cache(const TypeIdentifierTypeObjectPairSeq &types)
MinimalBitfieldSeq field_seq
DDS::DynamicType_ptr type_identifier_to_dynamic(const TypeIdentifier &ti, const DCPS::GUID_t &guid)
const TypeIdentifierKind TI_STRING8_SMALL
CommonDiscriminatorMember common
CompleteEnumeratedLiteralSeq literal_seq
const TypeFlag TypeFlagMinimalMask
CompleteStructHeader header
const TypeObject & get_type_object(const TypeIdentifier &type_id) const
For TypeAssignability.
void set_descriptor(DDS::TypeDescriptor *descriptor)
CompleteSequenceType sequence_type
const EquivalenceKind EK_COMPLETE
MinimalAnnotationType annotation_type
const TypeIdentifierKind TI_PLAIN_MAP_LARGE
ACE_CDR::UShort MemberFlag
CommonCollectionHeader common
UnionDiscriminatorFlag member_flags
AliasMemberFlag related_flags
CollectionTypeFlag collection_flag
CompleteTypeDetail detail
StructTypeFlag struct_flags
DDS::MemberDescriptor * complete_annotation_member_to_member_descriptor(const CompleteAnnotationParameter &cm, const DCPS::GUID_t &guid)
const TypeKind TK_BOOLEAN
bool complete_to_minimal_bitmask(const CompleteBitmaskType &ct, MinimalBitmaskType &mt) const
const TypeIdentifierKind TI_PLAIN_MAP_SMALL
const TypeIdentifierKind TI_PLAIN_ARRAY_LARGE
const TypeIdentifierKind TI_PLAIN_ARRAY_SMALL
const TypeKind TK_BITMASK
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
AliasTypeFlag alias_flags
bool set_type_object_defaults(TypeObject &to)
CompleteUnionType union_type
CommonAnnotationParameter common
MinimalDiscriminatorMember discriminator
CompleteAliasType alias_type
DCPS::String equivalence_hash_to_string(const EquivalenceHash &equivalence_hash)
CompleteStructMemberSeq member_seq
CommonEnumeratedHeader common
BitmaskTypeFlag bitmask_flags
public TryConstructKind try_construct_kind
CollectionTypeFlag collection_flag
CompleteArrayHeader header
CompleteCollectionHeader header
MinimalUnionMemberSeq member_seq
bool is_plain_collection(const TypeIdentifier &ti)
UnionTypeFlag union_flags
CompleteBitmaskType bitmask_type
const TypeKind TK_STRUCTURE
AliasTypeFlag alias_flags
DDS::MemberDescriptor * complete_struct_member_to_member_descriptor(const CompleteStructMember &cm, const DCPS::GUID_t &guid)
const TypeInformation & get_type_info(const DDS::BuiltinTopicKey_t &key) const
MinimalCollectionElement element
void hash_member_name(NameHash &name_hash, const OPENDDS_STRING &name)
typedef OPENDDS_SET(DynamicTypePtrPair) DynamicTypePtrPairSeen
CompleteTypeDetail detail
CompleteMemberDetail detail
Sequence & append(const T &member)
MinimalCollectionElement key
const TypeKind TK_FLOAT32
BitmaskTypeFlag bitmask_flags
MinimalSequenceType sequence_type
const TypeKind TK_STRING8
DDS::MemberDescriptor * complete_union_member_to_member_descriptor(const CompleteUnionMember &cm, const DCPS::GUID_t &guid)
CompleteTypeDetail detail
ACE_CDR::Octet EquivalenceKind
void add(const TypeIdentifier &ti, const TypeObject &tobj)
bool complete_to_minimal_alias(const CompleteAliasType &ct, MinimalAliasType &mt) const
MinimalBitmaskHeader header
CompleteEnumeratedType enumerated_type
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
OpenDDS_Dcps_Export LogLevel log_level
CompleteCollectionElement key
bool type_object_in_cache(const TypeIdentifier &ti) const
AnnotationTypeFlag annotation_flag
MinimalArrayType array_type
const MemberFlag TRY_CONSTRUCT1
bool extensibility(TypeFlag extensibility_mask, const TypeIdentifier &ti) const
TypeIdentifier type_identifier2
Optional< CompleteTypeDetail > detail
MinimalStructMemberSeq member_seq
bool complete_to_minimal_type_object(const TypeObject &cto, TypeObject &mto) const
MinimalCollectionElement element
const MemberFlag IS_OPTIONAL
CompleteAnnotationType annotation_type
MinimalCollectionHeader header
const TypeIdentifierKind TI_PLAIN_SEQUENCE_SMALL
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const TypeKind TK_ANNOTATION
MinimalAliasType alias_type
CompleteAliasHeader header
MinimalUnionType union_type
CompleteCollectionHeader header
CollectionTypeFlag collection_flag
CollectionTypeFlag collection_flag
UnionCaseLabelSeq label_seq
QualifiedTypeName annotation_name
MinimalStructType struct_type
const TypeFlag IS_APPENDABLE
const EquivalenceKind EK_MINIMAL
const TypeIdentifierKind TI_STRING16_SMALL
const MemberFlag IS_DEFAULT
const char * to_string(MessageId value)
const TypeIdentifierKind TI_STRONGLY_CONNECTED_COMPONENT
CompleteAnnotationHeader header
bool complete_to_minimal_map(const CompleteMapType &ct, MinimalMapType &mt) const
UnionTypeFlag union_flags
CommonCollectionElement common
BitsetTypeFlag bitset_flags
bool complete_to_minimal_sequence(const CompleteSequenceType &ct, MinimalSequenceType &mt) const
CompleteBitsetType bitset_type
void get_type_dependencies_i(const TypeIdentifierSeq &type_ids, TypeIdentifierWithSizeSeq &dependencies) const
CompleteCollectionElement element
CommonDiscriminatorMember common
void add_type_dependencies(const TypeIdentifier &type_id, const TypeIdentifierWithSizeSeq &dependencies)
MinimalStructHeader header
CollectionElementFlag element_flags
The Internal API and Implementation of OpenDDS.
CompleteTypeObject complete
void remove_guid_from_dynamic_map(const DCPS::GUID_t &guid)
TypeIdentifier type_identifier1
CollectionTypeFlag collection_flag
MinimalArrayHeader header
CompleteBitfieldSeq field_seq
CompleteDiscriminatorMember discriminator
ACE_CDR::ULong length() const
DDS::ReturnCode_t set_descriptor(DDS::MemberDescriptor *descriptor)
const MemberFlag IS_EXTERNAL
bool complete_to_minimal_bitset(const CompleteBitsetType &ct, MinimalBitsetType &mt) const
CompleteEnumeratedHeader header
MinimalTypeObject minimal
const TypeKind TK_FLOAT64
MinimalBitsetType bitset_type
StructTypeFlag struct_flags
CompleteTypeDetail detail
MinimalEnumeratedHeader header
bool get_minimal_type_identifier(const TypeIdentifier &ct, TypeIdentifier &mt) const
MinimalBitmaskType bitmask_type