OpenDDS
Snapshot(2023/04/28-20:55)
|
#include <TypeAssignability.h>
Public Member Functions | |
TypeAssignability (TypeLookupService_rch tls) | |
TypeAssignability (TypeLookupService_rch tls, TypeConsistencyAttributes type_consistency) | |
bool | assignable (const TypeObject &ta, const TypeObject &tb) const |
Both input type objects must be minimal. More... | |
bool | assignable (const TypeObject &ta, const TypeIdentifier &tb) const |
The first argument must be a minimal type object. More... | |
bool | assignable (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
Both input can be of any type. More... | |
bool | assignable (const TypeIdentifier &ta, const TypeObject &tb) const |
The second argument must be a minimal type object. More... | |
void | set_prevent_type_widening (bool value) |
void | set_ignore_sequence_bounds (bool value) |
void | set_ignore_string_bounds (bool value) |
void | set_ignore_member_names (bool value) |
void | insert_entry (const TypeIdentifier &ti, const TypeObject &tobj) |
Private Member Functions | |
bool | assignable_alias (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
At least one input type object must be TK_ALIAS. More... | |
bool | assignable_annotation (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_ANNOTATION. The second type must not be TK_ALIAS. More... | |
bool | assignable_annotation (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_ANNOTATION. The second type can be anything. More... | |
bool | assignable_struct (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_STRUCTURE. The second type must not be TK_ALIAS. More... | |
bool | assignable_struct (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_STRUCTURE. The second type can be anything. More... | |
bool | assignable_union (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_UNION. The second type must not be TK_ALIAS. More... | |
bool | assignable_union (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_UNION. The second type can be anything. More... | |
bool | assignable_bitset (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_BITSET. The second type must not be TK_ALIAS. More... | |
bool | assignable_bitset (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_BITSET. The second type can be anything. More... | |
bool | assignable_sequence (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_SEQUENCE. The second type must not be TK_ALIAS. More... | |
bool | assignable_sequence (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_SEQUENCE. The second type can be anything. More... | |
bool | assignable_array (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_ARRAY. The second type must not be TK_ALIAS. More... | |
bool | assignable_array (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_ARRAY. The second type can be anything. More... | |
bool | assignable_map (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_MAP. The second type must not be TK_ALIAS. More... | |
bool | assignable_map (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_MAP. The second type can be anything. More... | |
bool | assignable_enum (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_ENUM. The second type must not be TK_ALIAS. More... | |
bool | assignable_enum (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_ENUM. The second type can be anything. More... | |
bool | assignable_bitmask (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be TK_BITMASK. The second type must not be TK_ALIAS. More... | |
bool | assignable_bitmask (const MinimalTypeObject &ta, const TypeIdentifier &tb) const |
The first type must be TK_BITMASK. The second type can be anything. More... | |
bool | assignable_extended (const MinimalTypeObject &ta, const MinimalTypeObject &tb) const |
The first type must be a future extension type kind. The second type must not be TK_ALIAS. More... | |
bool | assignable_primitive (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
The first type must be a primitive type. The second type can be anything. More... | |
bool | assignable_primitive (const TypeIdentifier &ta, const MinimalTypeObject &tb) const |
The first type must be a primitive type. The second type must not be TK_ALIAS. More... | |
bool | assignable_string (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
The first type must be a string type. The second type can be anything. More... | |
bool | assignable_string (const TypeIdentifier &ta, const MinimalTypeObject &tb) const |
The first type must be a string type. The second type must not be TK_ALIAS. More... | |
bool | assignable_plain_sequence (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
The first type must be a plain sequence type. The second type can be anything. More... | |
bool | assignable_plain_sequence (const TypeIdentifier &ta, const MinimalTypeObject &tb) const |
The first type must be a plain sequence type. The second type must not be TK_ALIAS. More... | |
bool | assignable_plain_array (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
The first type must be a plain array type. The second type can be anything. More... | |
bool | assignable_plain_array (const TypeIdentifier &ta, const MinimalTypeObject &tb) const |
The first type must be a plain array type. The second type must not be TK_ALIAS. More... | |
bool | assignable_plain_map (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
The first type must be a plain map type. The second type can be anything. More... | |
bool | assignable_plain_map (const TypeIdentifier &ta, const MinimalTypeObject &tb) const |
The first type must be a plain map type. The second type must not be TK_ALIAS. More... | |
bool | strongly_assignable (const TypeIdentifier &ta, const TypeIdentifier &tb) const |
If types T1 and T2 are equivalent using the MINIMAL relation, or alternatively if T1 is-assignable-from T2 and T2 is a delimited type, then T1 is said to be strongly assignable from T2. More... | |
bool | is_delimited (const TypeIdentifier &ti) const |
Concept of delimited types (sub-clause 7.2.4.2) More... | |
bool | is_delimited (const MinimalTypeObject &tobj) const |
Check if a type is delimited (sub-clause 7.2.4.2) More... | |
bool | is_delimited_with_flags (TypeFlag flags) const |
bool | equal_type_id (const TypeIdentifier &tia, const TypeIdentifier &tib) const |
Check whether two type identifiers are equal. More... | |
const TypeIdentifier & | get_base_type (const MinimalTypeObject &type) const |
The input must be of type TK_ALIAS Return the non-alias base type identifier of the input. More... | |
void | erase_key (MinimalTypeObject &type) const |
Key-Erased type of an aggregated type T (struct or union) is constructed from T by removing the key designation from any member that has it (sub-clause 7.2.2.4.6). The input type must be either a struct or an union. More... | |
void | hold_key (MinimalTypeObject &type) const |
Key-Holder type of an aggregated type T (struct or union) is constructed from T (sub-clause 7.2.2.4.7) The input MinimalTypeObject is modified to get the corresponding KeyHolder type. The input must be either a struct or an union. More... | |
bool | hold_key (const TypeIdentifier &ti, MinimalTypeObject &to) const |
Return false if the input type does not have type object; the output MinimalTypeObject is not used in this case. Return true if the input type has type object; the output MinimalTypeObject contains the KeyHolder type of the corresponding type. More... | |
bool | struct_rule_enum_key (const MinimalTypeObject &tb, const CommonStructMember &ma) const |
The first argument must be TK_ENUM and is the type object of a key member of the containing struct. Therefore, there must be a member with the same ID (and name) in the other struct type. More... | |
bool | get_sequence_bound (LBound &b, const CommonStructMember &m) const |
Check whether a struct member is of sequence type and if so compute its bound into the first argument. More... | |
bool | get_map_bound (LBound &b, const CommonStructMember &m) const |
Check whether a struct member is of map type and if so compute its bound into the first argument. More... | |
bool | get_string_bound (LBound &b, const CommonStructMember &m) const |
Check whether the input struct member is of string type and if so compute its bound into the first argument. More... | |
bool | get_struct_member (const MinimalTypeObject *&ret, const CommonStructMember &m) const |
Check if the second argument is of a struct type and if so return its type object as the first argument. More... | |
bool | get_union_member (const MinimalTypeObject *&ret, const CommonStructMember &m) const |
Check if the second argument is of a union type and if so return its type object as the first argument. More... | |
const MinimalTypeObject & | lookup_minimal (const TypeIdentifier &ti) const |
Private Attributes | |
XTypes::TypeLookupService_rch | tl_service_ |
TypeConsistencyAttributes | type_consistency_ |
Definition at line 35 of file TypeAssignability.h.
|
inlineexplicit |
Definition at line 37 of file TypeAssignability.h.
|
inline |
Definition at line 47 of file TypeAssignability.h.
bool OpenDDS::XTypes::TypeAssignability::assignable | ( | const TypeObject & | ta, |
const TypeObject & | tb | ||
) | const |
Both input type objects must be minimal.
Definition at line 19 of file TypeAssignability.cpp.
References assignable_alias(), assignable_annotation(), assignable_array(), assignable_bitmask(), assignable_bitset(), assignable_enum(), assignable_extended(), assignable_map(), assignable_sequence(), assignable_struct(), assignable_union(), OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ANNOTATION, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_BITSET, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRUCTURE, and OpenDDS::XTypes::TK_UNION.
Referenced by assignable(), assignable_alias(), assignable_struct(), assignable_union(), OpenDDS::DCPS::StaticEndpointManager::match_continue(), OpenDDS::RTPS::Sedp::match_continue(), and strongly_assignable().
bool OpenDDS::XTypes::TypeAssignability::assignable | ( | const TypeObject & | ta, |
const TypeIdentifier & | tb | ||
) | const |
The first argument must be a minimal type object.
Definition at line 57 of file TypeAssignability.cpp.
References assignable(), assignable_annotation(), assignable_array(), assignable_bitmask(), assignable_bitset(), assignable_enum(), assignable_map(), assignable_sequence(), assignable_struct(), assignable_union(), OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ANNOTATION, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_BITSET, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRUCTURE, and OpenDDS::XTypes::TK_UNION.
bool OpenDDS::XTypes::TypeAssignability::assignable | ( | const TypeIdentifier & | ta, |
const TypeIdentifier & | tb | ||
) | const |
Both input can be of any type.
Definition at line 95 of file TypeAssignability.cpp.
References assignable(), assignable_plain_array(), assignable_plain_map(), assignable_plain_sequence(), assignable_primitive(), assignable_string(), OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), lookup_minimal(), OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, OpenDDS::XTypes::TI_STRONGLY_CONNECTED_COMPONENT, 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.
bool OpenDDS::XTypes::TypeAssignability::assignable | ( | const TypeIdentifier & | ta, |
const TypeObject & | tb | ||
) | const |
The second argument must be a minimal type object.
Definition at line 151 of file TypeAssignability.cpp.
References assignable(), assignable_plain_array(), assignable_plain_map(), assignable_plain_sequence(), assignable_primitive(), assignable_string(), OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, lookup_minimal(), OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, OpenDDS::XTypes::TI_STRONGLY_CONNECTED_COMPONENT, OpenDDS::XTypes::TK_ALIAS, 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.
|
private |
At least one input type object must be TK_ALIAS.
Definition at line 209 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable(), assignable_annotation(), assignable_array(), assignable_bitmask(), assignable_bitset(), assignable_enum(), assignable_map(), assignable_plain_array(), assignable_plain_map(), assignable_plain_sequence(), assignable_primitive(), assignable_sequence(), assignable_string(), assignable_struct(), assignable_union(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, OpenDDS::XTypes::TI_STRONGLY_CONNECTED_COMPONENT, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ANNOTATION, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_BITSET, OpenDDS::XTypes::TK_BOOLEAN, OpenDDS::XTypes::TK_BYTE, OpenDDS::XTypes::TK_CHAR16, OpenDDS::XTypes::TK_CHAR8, OpenDDS::XTypes::TK_ENUM, 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_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, OpenDDS::XTypes::TK_UINT8, and OpenDDS::XTypes::TK_UNION.
Referenced by assignable().
|
private |
The first type must be TK_ANNOTATION. The second type must not be TK_ALIAS.
Definition at line 295 of file TypeAssignability.cpp.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be TK_ANNOTATION. The second type can be anything.
Definition at line 306 of file TypeAssignability.cpp.
|
private |
The first type must be TK_ARRAY. The second type must not be TK_ALIAS.
Definition at line 938 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::array_type, OpenDDS::XTypes::CommonArrayHeader::bound_seq, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalArrayHeader::common, OpenDDS::XTypes::MinimalArrayType::element, OpenDDS::XTypes::MinimalArrayType::header, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::Sequence< T >::members, strongly_assignable(), OpenDDS::XTypes::TK_ARRAY, and OpenDDS::XTypes::CommonCollectionElement::type.
Referenced by assignable(), assignable_alias(), and assignable_array().
|
private |
The first type must be TK_ARRAY. The second type can be anything.
Definition at line 965 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalTypeObject::array_type, assignable_array(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::CommonArrayHeader::bound_seq, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalArrayHeader::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalArrayType::element, OpenDDS::XTypes::MinimalArrayType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::CommonAliasBody::related_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ARRAY, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be TK_BITMASK. The second type must not be TK_ALIAS.
Definition at line 1175 of file TypeAssignability.cpp.
References OpenDDS::XTypes::CommonEnumeratedHeader::bit_bound, OpenDDS::XTypes::MinimalTypeObject::bitmask_type, OpenDDS::XTypes::MinimalEnumeratedHeader::common, OpenDDS::XTypes::MinimalBitmaskType::header, OpenDDS::XTypes::MinimalTypeObject::kind, and OpenDDS::XTypes::TK_BITMASK.
Referenced by assignable(), assignable_alias(), and assignable_bitmask().
|
private |
The first type must be TK_BITMASK. The second type can be anything.
Definition at line 1190 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_bitmask(), OpenDDS::XTypes::CommonEnumeratedHeader::bit_bound, OpenDDS::XTypes::MinimalTypeObject::bitmask_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::MinimalEnumeratedHeader::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalBitmaskType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.
|
private |
The first type must be TK_BITSET. The second type must not be TK_ALIAS.
Definition at line 873 of file TypeAssignability.cpp.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be TK_BITSET. The second type can be anything.
Definition at line 884 of file TypeAssignability.cpp.
|
private |
The first type must be TK_ENUM. The second type must not be TK_ALIAS.
Definition at line 1065 of file TypeAssignability.cpp.
References OpenDDS::XTypes::CommonEnumeratedHeader::bit_bound, OpenDDS::XTypes::MinimalEnumeratedHeader::common, OpenDDS::XTypes::MinimalEnumeratedType::enum_flags, OpenDDS::XTypes::MinimalTypeObject::enumerated_type, OpenDDS::XTypes::MinimalEnumeratedType::header, OpenDDS::XTypes::IS_APPENDABLE, OpenDDS::XTypes::IS_FINAL, OpenDDS::XTypes::IS_MUTABLE, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalEnumeratedType::literal_seq, OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::OPENDDS_MAP(), and OpenDDS::XTypes::TK_ENUM.
Referenced by assignable(), assignable_alias(), and assignable_enum().
|
private |
The first type must be TK_ENUM. The second type can be anything.
Definition at line 1152 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_enum(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_ENUM.
|
private |
The first type must be a future extension type kind. The second type must not be TK_ALIAS.
Definition at line 1222 of file TypeAssignability.cpp.
Referenced by assignable().
|
private |
The first type must be TK_MAP. The second type must not be TK_ALIAS.
Definition at line 1016 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalMapType::element, OpenDDS::XTypes::MinimalMapType::key, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::map_type, strongly_assignable(), OpenDDS::XTypes::TK_MAP, and OpenDDS::XTypes::CommonCollectionElement::type.
Referenced by assignable(), assignable_alias(), and assignable_map().
|
private |
The first type must be TK_MAP. The second type can be anything.
Definition at line 1032 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_map(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalMapType::element, OpenDDS::XTypes::MinimalMapType::key, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::MinimalTypeObject::map_type, OpenDDS::XTypes::CommonAliasBody::related_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_MAP, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be a plain array type. The second type can be anything.
Definition at line 1388 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::CommonAliasBody::related_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_ARRAY.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be a plain array type. The second type must not be TK_ALIAS.
Definition at line 1474 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::array_type, OpenDDS::XTypes::CommonArrayHeader::bound_seq, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalArrayHeader::common, OpenDDS::XTypes::MinimalArrayType::element, OpenDDS::XTypes::MinimalArrayType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::Sequence< T >::members, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TK_ARRAY, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be a plain map type. The second type can be anything.
Definition at line 1517 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_MAP.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be a plain map type. The second type must not be TK_ALIAS.
Definition at line 1565 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalMapType::element, OpenDDS::XTypes::MinimalMapType::key, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::map_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TK_MAP, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be a plain sequence type. The second type can be anything.
Definition at line 1326 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_SEQUENCE.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be a plain sequence type. The second type must not be TK_ALIAS.
Definition at line 1368 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalSequenceType::element, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::sequence_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TK_SEQUENCE, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be a primitive type. The second type can be anything.
Definition at line 1233 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_BITMASK.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be a primitive type. The second type must not be TK_ALIAS.
Definition at line 1260 of file TypeAssignability.cpp.
References OpenDDS::XTypes::CommonEnumeratedHeader::bit_bound, OpenDDS::XTypes::MinimalTypeObject::bitmask_type, OpenDDS::XTypes::MinimalEnumeratedHeader::common, OpenDDS::XTypes::MinimalBitmaskType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_UINT16, OpenDDS::XTypes::TK_UINT32, OpenDDS::XTypes::TK_UINT64, and OpenDDS::XTypes::TK_UINT8.
|
private |
The first type must be TK_SEQUENCE. The second type must not be TK_ALIAS.
Definition at line 895 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalSequenceType::element, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::sequence_type, strongly_assignable(), OpenDDS::XTypes::TK_SEQUENCE, and OpenDDS::XTypes::CommonCollectionElement::type.
Referenced by assignable(), assignable_alias(), and assignable_sequence().
|
private |
The first type must be TK_SEQUENCE. The second type can be anything.
Definition at line 909 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_sequence(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalSequenceType::element, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::MinimalTypeObject::sequence_type, strongly_assignable(), OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_SEQUENCE, and OpenDDS::XTypes::CommonCollectionElement::type.
|
private |
The first type must be a string type. The second type can be anything.
Definition at line 1285 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, and OpenDDS::XTypes::TK_ALIAS.
Referenced by assignable(), and assignable_alias().
|
private |
The first type must be a string type. The second type must not be TK_ALIAS.
Definition at line 1314 of file TypeAssignability.cpp.
|
private |
The first type must be TK_STRUCTURE. The second type must not be TK_ALIAS.
Definition at line 317 of file TypeAssignability.cpp.
References assignable(), OpenDDS::XTypes::EK_MINIMAL, erase_key(), get_base_type(), get_map_bound(), get_sequence_bound(), get_string_bound(), get_struct_member(), get_union_member(), hold_key(), OpenDDS::XTypes::TypeConsistencyAttributes::ignore_member_names, OpenDDS::XTypes::IS_APPENDABLE, OpenDDS::XTypes::IS_FINAL, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::IS_MUST_UNDERSTAND, OpenDDS::XTypes::IS_MUTABLE, OpenDDS::XTypes::IS_OPTIONAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::Sequence< T >::length(), lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_flags, OpenDDS::XTypes::MinimalStructType::member_seq, OpenDDS::XTypes::MinimalUnionType::member_seq, OpenDDS::XTypes::CommonStructMember::member_type_id, strongly_assignable(), OpenDDS::XTypes::MinimalStructType::struct_flags, struct_rule_enum_key(), OpenDDS::XTypes::MinimalTypeObject::struct_type, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UNION, type_consistency_, and OpenDDS::XTypes::MinimalTypeObject::union_type.
Referenced by assignable(), assignable_alias(), and assignable_struct().
|
private |
The first type must be TK_STRUCTURE. The second type can be anything.
Definition at line 633 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_struct(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_STRUCTURE.
|
private |
The first type must be TK_UNION. The second type must not be TK_ALIAS.
Definition at line 656 of file TypeAssignability.cpp.
References assignable(), OpenDDS::XTypes::MinimalDiscriminatorMember::common, OpenDDS::XTypes::MinimalUnionType::discriminator, OpenDDS::XTypes::TypeConsistencyAttributes::ignore_member_names, OpenDDS::XTypes::IS_APPENDABLE, OpenDDS::XTypes::IS_DEFAULT, OpenDDS::XTypes::IS_FINAL, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::IS_MUTABLE, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::Sequence< T >::length(), OpenDDS::XTypes::CommonDiscriminatorMember::member_flags, OpenDDS::XTypes::MinimalUnionType::member_seq, OpenDDS::XTypes::Sequence< T >::members, name, OpenDDS::XTypes::OPENDDS_MAP(), OpenDDS::XTypes::OPENDDS_SET(), strongly_assignable(), OpenDDS::XTypes::TK_UNION, type_consistency_, OpenDDS::XTypes::CommonDiscriminatorMember::type_id, OpenDDS::XTypes::MinimalUnionType::union_flags, and OpenDDS::XTypes::MinimalTypeObject::union_type.
Referenced by assignable(), assignable_alias(), and assignable_union().
|
private |
The first type must be TK_UNION. The second type can be anything.
Definition at line 850 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, assignable_union(), OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_UNION.
|
private |
Check whether two type identifiers are equal.
Definition at line 1606 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, OpenDDS::XTypes::TI_STRONGLY_CONNECTED_COMPONENT, 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.
Referenced by strongly_assignable().
|
private |
Key-Erased type of an aggregated type T (struct or union) is constructed from T by removing the key designation from any member that has it (sub-clause 7.2.2.4.6). The input type must be either a struct or an union.
Definition at line 1881 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalDiscriminatorMember::common, OpenDDS::XTypes::MinimalUnionType::discriminator, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::CommonDiscriminatorMember::member_flags, OpenDDS::XTypes::MinimalStructType::member_seq, OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::MinimalTypeObject::struct_type, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UNION, and OpenDDS::XTypes::MinimalTypeObject::union_type.
Referenced by assignable_struct().
|
private |
The input must be of type TK_ALIAS Return the non-alias base type identifier of the input.
Definition at line 1975 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::MinimalAliasType::body, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonAliasBody::related_type, and OpenDDS::XTypes::TK_ALIAS.
Referenced by assignable(), assignable_struct(), get_map_bound(), get_sequence_bound(), get_string_bound(), get_struct_member(), get_union_member(), hold_key(), is_delimited(), and struct_rule_enum_key().
|
private |
Check whether a struct member is of map type and if so compute its bound into the first argument.
Definition at line 2089 of file TypeAssignability.cpp.
References OpenDDS::XTypes::CommonCollectionHeader::bound, OpenDDS::XTypes::MinimalCollectionHeader::common, OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::MinimalMapType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::MinimalTypeObject::map_type, OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_MAP.
Referenced by assignable_struct().
|
private |
Check whether a struct member is of sequence type and if so compute its bound into the first argument.
Definition at line 2049 of file TypeAssignability.cpp.
References OpenDDS::XTypes::CommonCollectionHeader::bound, OpenDDS::XTypes::MinimalCollectionHeader::common, OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::MinimalSequenceType::header, OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::MinimalTypeObject::sequence_type, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_SEQUENCE.
Referenced by assignable_struct().
|
private |
Check whether the input struct member is of string type and if so compute its bound into the first argument.
Definition at line 2129 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, and OpenDDS::XTypes::TK_ALIAS.
Referenced by assignable_struct().
|
private |
Check if the second argument is of a struct type and if so return its type object as the first argument.
Definition at line 2160 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_STRUCTURE.
Referenced by assignable_struct().
|
private |
Check if the second argument is of a union type and if so return its type object as the first argument.
Definition at line 2188 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_MINIMAL, get_base_type(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_type_id, OPENDDS_END_VERSIONED_NAMESPACE_DECL, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_UNION.
Referenced by assignable_struct().
|
private |
Key-Holder type of an aggregated type T (struct or union) is constructed from T (sub-clause 7.2.2.4.7) The input MinimalTypeObject is modified to get the corresponding KeyHolder type. The input must be either a struct or an union.
Definition at line 1905 of file TypeAssignability.cpp.
References OpenDDS::XTypes::Sequence< T >::append(), OpenDDS::XTypes::MinimalDiscriminatorMember::common, OpenDDS::XTypes::MinimalUnionType::discriminator, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::CommonDiscriminatorMember::member_flags, OpenDDS::XTypes::MinimalStructType::member_seq, OpenDDS::XTypes::MinimalUnionType::member_seq, OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::MinimalTypeObject::struct_type, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UNION, and OpenDDS::XTypes::MinimalTypeObject::union_type.
Referenced by assignable_struct(), and hold_key().
|
private |
Return false if the input type does not have type object; the output MinimalTypeObject is not used in this case. Return true if the input type has type object; the output MinimalTypeObject contains the KeyHolder type of the corresponding type.
Definition at line 1949 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, get_base_type(), hold_key(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, lookup_minimal(), OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_STRUCTURE, and OpenDDS::XTypes::TK_UNION.
|
inline |
Definition at line 85 of file TypeAssignability.h.
References OpenDDS::XTypes::get_base_type().
|
private |
Concept of delimited types (sub-clause 7.2.4.2)
Definition at line 1778 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::TypeIdentifier::kind(), lookup_minimal(), OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TI_PLAIN_MAP_LARGE, OpenDDS::XTypes::TI_PLAIN_MAP_SMALL, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, 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.
Referenced by is_delimited(), and strongly_assignable().
|
private |
Check if a type is delimited (sub-clause 7.2.4.2)
Definition at line 1829 of file TypeAssignability.cpp.
References OpenDDS::XTypes::MinimalAnnotationType::annotation_flag, OpenDDS::XTypes::MinimalTypeObject::annotation_type, OpenDDS::XTypes::MinimalTypeObject::array_type, OpenDDS::XTypes::MinimalBitsetType::bitset_flags, OpenDDS::XTypes::MinimalTypeObject::bitset_type, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::MinimalSequenceType::element, OpenDDS::XTypes::MinimalArrayType::element, OpenDDS::XTypes::MinimalMapType::element, get_base_type(), is_delimited(), is_delimited_with_flags(), OpenDDS::XTypes::MinimalMapType::key, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::map_type, OpenDDS::XTypes::MinimalTypeObject::sequence_type, OpenDDS::XTypes::MinimalStructType::struct_flags, OpenDDS::XTypes::MinimalTypeObject::struct_type, OpenDDS::XTypes::TK_ALIAS, OpenDDS::XTypes::TK_ANNOTATION, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::TK_BITMASK, OpenDDS::XTypes::TK_BITSET, OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::TK_MAP, OpenDDS::XTypes::TK_SEQUENCE, OpenDDS::XTypes::TK_STRUCTURE, OpenDDS::XTypes::TK_UNION, OpenDDS::XTypes::CommonCollectionElement::type, OpenDDS::XTypes::MinimalUnionType::union_flags, and OpenDDS::XTypes::MinimalTypeObject::union_type.
|
private |
Definition at line 1859 of file TypeAssignability.cpp.
References OpenDDS::XTypes::IS_FINAL, and OpenDDS::XTypes::IS_MUTABLE.
Referenced by is_delimited().
|
inlineprivate |
Definition at line 142 of file TypeAssignability.h.
Referenced by assignable(), assignable_alias(), assignable_array(), assignable_bitmask(), assignable_enum(), assignable_map(), assignable_plain_array(), assignable_plain_map(), assignable_plain_sequence(), assignable_primitive(), assignable_sequence(), assignable_string(), assignable_struct(), assignable_union(), get_base_type(), get_map_bound(), get_sequence_bound(), get_string_bound(), get_struct_member(), get_union_member(), hold_key(), is_delimited(), and struct_rule_enum_key().
|
inline |
Definition at line 80 of file TypeAssignability.h.
References value.
|
inline |
Definition at line 68 of file TypeAssignability.h.
References value.
|
inline |
Definition at line 74 of file TypeAssignability.h.
References value.
|
inline |
Definition at line 62 of file TypeAssignability.h.
References value.
|
private |
If types T1 and T2 are equivalent using the MINIMAL relation, or alternatively if T1 is-assignable-from T2 and T2 is a delimited type, then T1 is said to be strongly assignable from T2.
Definition at line 1590 of file TypeAssignability.cpp.
References assignable(), equal_type_id(), and is_delimited().
Referenced by assignable_array(), assignable_map(), assignable_plain_array(), assignable_plain_map(), assignable_plain_sequence(), assignable_sequence(), assignable_struct(), and assignable_union().
|
private |
The first argument must be TK_ENUM and is the type object of a key member of the containing struct. Therefore, there must be a member with the same ID (and name) in the other struct type.
Definition at line 1997 of file TypeAssignability.cpp.
References OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::MinimalTypeObject::enumerated_type, get_base_type(), OpenDDS::XTypes::TypeIdentifier::kind(), OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::MinimalEnumeratedType::literal_seq, lookup_minimal(), OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::Sequence< T >::members, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::TK_ENUM.
Referenced by assignable_struct().
|
private |
Definition at line 147 of file TypeAssignability.h.
|
private |
Definition at line 152 of file TypeAssignability.h.
Referenced by assignable_struct(), and assignable_union().