OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <typeobject_generator.h>
Classes | |
struct | Element |
struct | TypeIdentifierPair |
struct | TypeObjectPair |
Public Member Functions | |
typeobject_generator () | |
void | gen_epilogue () |
bool | gen_enum (AST_Enum *node, UTL_ScopedName *name, const std::vector< AST_EnumVal *> &contents, const char *repoid) |
bool | gen_struct (AST_Structure *node, UTL_ScopedName *name, const std::vector< AST_Field *> &fields, AST_Type::SIZE_TYPE size, const char *repoid) |
bool | gen_typedef (AST_Typedef *node, UTL_ScopedName *name, AST_Type *type, const char *repoid) |
bool | gen_union (AST_Union *node, UTL_ScopedName *name, const std::vector< AST_UnionBranch *> &branches, AST_Type *type, const char *repoid) |
void | produce_output (bool flag) |
void | produce_xtypes_complete (bool flag) |
void | use_old_typeobject_encoding () |
![]() | |
virtual | ~dds_generator ()=0 |
virtual bool | do_included_files () const |
virtual void | gen_prologue () |
virtual bool | gen_const (UTL_ScopedName *, bool, AST_Constant *) |
virtual bool | gen_struct_fwd (UTL_ScopedName *, AST_Type::SIZE_TYPE) |
virtual bool | gen_interf (AST_Interface *, UTL_ScopedName *, bool, const std::vector< AST_Interface *> &, const std::vector< AST_Interface *> &, const std::vector< AST_Attribute *> &, const std::vector< AST_Operation *> &, const char *) |
virtual bool | gen_interf_fwd (UTL_ScopedName *) |
virtual bool | gen_native (AST_Native *, UTL_ScopedName *, const char *) |
virtual bool | gen_union_fwd (AST_UnionFwd *, UTL_ScopedName *, AST_Type::SIZE_TYPE) |
Static Public Member Functions | |
static std::string | tag_type (UTL_ScopedName *name) |
![]() | |
static std::string | get_tag_name (const std::string &base_name, bool nested_key_only=false) |
static std::string | get_xtag_name (UTL_ScopedName *name) |
static bool | cxx_escaped (const std::string &s) |
static std::string | valid_var_name (const std::string &str) |
static std::string | to_string (Identifier *id, EscapeContext ec=EscapeContext_Normal) |
static std::string | scoped_helper (UTL_ScopedName *sn, const char *sep, EscapeContext cxt=EscapeContext_Normal) |
static std::string | module_scope_helper (UTL_ScopedName *sn, const char *sep, EscapeContext cxt=EscapeContext_Normal) |
Private Types | |
typedef std::map< AST_Type *, TypeObjectPair > | TypeObjectMap |
typedef std::map< AST_Type *, TypeIdentifierPair > | HashTypeIdentifierMap |
typedef std::map< AST_Type *, OpenDDS::XTypes::TypeIdentifier > | FullyDescriptiveTypeIdentifierMap |
typedef std::vector< AST_Type * > | Stack |
Private Member Functions | |
void | consider (Element &v, AST_Type *type, const std::string &anonymous_name) |
void | strong_connect (AST_Type *type, const std::string &anonymous_name) |
void | generate_type_identifier (AST_Type *type, bool force_type_object) |
void | generate_struct_type_identifier (AST_Type *type) |
void | generate_union_type_identifier (AST_Type *type) |
void | generate_enum_type_identifier (AST_Type *type) |
void | generate_array_type_identifier (AST_Type *type, bool force_type_object) |
void | generate_sequence_type_identifier (AST_Type *type, bool force_type_object) |
void | generate_alias_type_identifier (AST_Type *type) |
void | generate_primitive_type_identifier (AST_Type *type) |
void | update_maps (AST_Type *type, const OpenDDS::XTypes::TypeObject &minimal_to, const OpenDDS::XTypes::TypeObject &complete_to) |
void | set_builtin_member_annotations (AST_Decl *member, OpenDDS::XTypes::Optional< OpenDDS::XTypes::AppliedBuiltinMemberAnnotations > &annotations) |
OpenDDS::XTypes::TypeIdentifier | get_minimal_type_identifier (AST_Type *type) |
OpenDDS::XTypes::TypeIdentifier | get_complete_type_identifier (AST_Type *type) |
bool | generate (AST_Type *node, UTL_ScopedName *name) |
void | declare_get_type_map () |
Private Attributes | |
TypeObjectMap | type_object_map_ |
HashTypeIdentifierMap | hash_type_identifier_map_ |
FullyDescriptiveTypeIdentifierMap | fully_desc_type_identifier_map_ |
OpenDDS::XTypes::TypeMap | minimal_type_map_ |
OpenDDS::XTypes::TypeMap | complete_type_map_ |
bool | produce_output_ |
bool | produce_xtypes_complete_ |
size_t | index_ |
Stack | stack_ |
std::map< AST_Type *, Element > | element_ |
bool | get_type_map_declared_ |
OpenDDS::DCPS::Encoding * | typeid_encoding_ |
Definition at line 14 of file typeobject_generator.h.
|
private |
Definition at line 109 of file typeobject_generator.h.
|
private |
Definition at line 106 of file typeobject_generator.h.
|
private |
Definition at line 118 of file typeobject_generator.h.
|
private |
Definition at line 97 of file typeobject_generator.h.
|
inline |
Definition at line 16 of file typeobject_generator.h.
References gen_enum(), gen_epilogue(), gen_struct(), gen_typedef(), gen_union(), name, and tag_type().
|
private |
Definition at line 715 of file typeobject_generator.cpp.
References typeobject_generator::Element::lowlink.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 548 of file typeobject_generator.cpp.
References be_global.
Referenced by typeobject_generator::Element::operator<().
|
virtual |
Reimplemented from dds_generator.
Definition at line 686 of file typeobject_generator.cpp.
References java_ts_generator::generate().
Referenced by typeobject_generator().
|
virtual |
Reimplemented from dds_generator.
Definition at line 573 of file typeobject_generator.cpp.
References be_global.
Referenced by typeobject_generator().
|
virtual |
Implements dds_generator.
Definition at line 693 of file typeobject_generator.cpp.
References java_ts_generator::generate().
Referenced by typeobject_generator().
|
virtual |
Implements dds_generator.
Definition at line 700 of file typeobject_generator.cpp.
References java_ts_generator::generate().
Referenced by typeobject_generator().
|
virtual |
Implements dds_generator.
Definition at line 707 of file typeobject_generator.cpp.
References java_ts_generator::generate().
Referenced by typeobject_generator().
|
private |
Definition at line 1700 of file typeobject_generator.cpp.
References be_global, and Function::endArgs().
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1435 of file typeobject_generator.cpp.
References OpenDDS::XTypes::CompleteTypeObject::alias_type, OpenDDS::XTypes::MinimalTypeObject::alias_type, OpenDDS::XTypes::CompleteAliasType::body, OpenDDS::XTypes::MinimalAliasType::body, canonical_name(), OpenDDS::XTypes::CompleteAliasBody::common, OpenDDS::XTypes::MinimalAliasBody::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::CompleteAliasHeader::detail, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::CompleteAliasType::header, OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::CommonAliasBody::related_type, OpenDDS::XTypes::TK_ALIAS, and OpenDDS::XTypes::CompleteTypeDetail::type_name.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1266 of file typeobject_generator.cpp.
References OpenDDS::XTypes::Sequence< T >::append(), OpenDDS::XTypes::CompleteTypeObject::array_type, OpenDDS::XTypes::MinimalTypeObject::array_type, be_global, OpenDDS::XTypes::CommonArrayHeader::bound_seq, canonical_name(), OpenDDS::XTypes::CompleteCollectionElement::common, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::CompleteArrayHeader::common, OpenDDS::XTypes::MinimalArrayHeader::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::CompleteArrayHeader::detail, OpenDDS::XTypes::EK_BOTH, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::CompleteArrayType::element, OpenDDS::XTypes::MinimalArrayType::element, OpenDDS::XTypes::CommonCollectionElement::element_flags, OpenDDS::XTypes::CompleteArrayType::header, OpenDDS::XTypes::MinimalArrayType::header, OpenDDS::XTypes::IS_EXTERNAL, OpenDDS::XTypes::is_fully_descriptive(), OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::TI_PLAIN_ARRAY_LARGE, OpenDDS::XTypes::TI_PLAIN_ARRAY_SMALL, OpenDDS::XTypes::TK_ARRAY, OpenDDS::XTypes::CommonCollectionElement::type, and OpenDDS::XTypes::CompleteTypeDetail::type_name.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1208 of file typeobject_generator.cpp.
References OpenDDS::XTypes::Sequence< T >::append(), be_global, OpenDDS::XTypes::CommonEnumeratedHeader::bit_bound, canonical_name(), OpenDDS::XTypes::CompleteEnumeratedLiteral::common, OpenDDS::XTypes::MinimalEnumeratedLiteral::common, OpenDDS::XTypes::CompleteEnumeratedHeader::common, OpenDDS::XTypes::MinimalEnumeratedHeader::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::CompleteEnumeratedLiteral::detail, OpenDDS::XTypes::MinimalEnumeratedLiteral::detail, OpenDDS::XTypes::CompleteEnumeratedHeader::detail, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::CompleteEnumeratedType::enum_flags, OpenDDS::XTypes::MinimalEnumeratedType::enum_flags, OpenDDS::XTypes::CompleteTypeObject::enumerated_type, OpenDDS::XTypes::MinimalTypeObject::enumerated_type, extensibilitykind_appendable, extensibilitykind_mutable, OpenDDS::XTypes::CommonEnumeratedLiteral::flags, OpenDDS::XTypes::hash_member_name(), OpenDDS::XTypes::CompleteEnumeratedType::header, OpenDDS::XTypes::MinimalEnumeratedType::header, OpenDDS::XTypes::IS_DEFAULT, OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::CompleteEnumeratedType::literal_seq, OpenDDS::XTypes::MinimalEnumeratedType::literal_seq, OpenDDS::XTypes::TypeObject::minimal, be_util::misc_error_and_abort(), name, OpenDDS::XTypes::CompleteMemberDetail::name, OpenDDS::XTypes::MinimalMemberDetail::name_hash, scope2vector(), OpenDDS::XTypes::Sequence< T >::sort(), OpenDDS::XTypes::TK_ENUM, OpenDDS::XTypes::CompleteTypeDetail::type_name, and OpenDDS::XTypes::CommonEnumeratedLiteral::value.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1453 of file typeobject_generator.cpp.
References be_util::misc_error_and_abort(), 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 typeobject_generator::Element::operator<().
|
private |
Definition at line 1355 of file typeobject_generator.cpp.
References be_global, OpenDDS::XTypes::CommonCollectionHeader::bound, OpenDDS::XTypes::CompleteCollectionElement::common, OpenDDS::XTypes::MinimalCollectionElement::common, OpenDDS::XTypes::CompleteCollectionHeader::common, OpenDDS::XTypes::MinimalCollectionHeader::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::EK_BOTH, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::XTypes::CompleteSequenceType::element, OpenDDS::XTypes::MinimalSequenceType::element, OpenDDS::XTypes::CommonCollectionElement::element_flags, OpenDDS::XTypes::CompleteSequenceType::header, OpenDDS::XTypes::MinimalSequenceType::header, OpenDDS::XTypes::IS_EXTERNAL, OpenDDS::XTypes::is_fully_descriptive(), OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::TypeObject::minimal, OpenDDS::XTypes::CompleteTypeObject::sequence_type, OpenDDS::XTypes::MinimalTypeObject::sequence_type, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_LARGE, OpenDDS::XTypes::TI_PLAIN_SEQUENCE_SMALL, OpenDDS::XTypes::TK_SEQUENCE, and OpenDDS::XTypes::CommonCollectionElement::type.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1032 of file typeobject_generator.cpp.
References OpenDDS::XTypes::CompleteMemberDetail::ann_builtin, OpenDDS::XTypes::Sequence< T >::append(), autoidkind_hash, OpenDDS::XTypes::CompleteStructHeader::base_type, OpenDDS::XTypes::MinimalStructHeader::base_type, be_global, Fields::begin(), canonical_name(), OpenDDS::XTypes::CompleteStructMember::common, OpenDDS::XTypes::MinimalStructMember::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::CompleteStructMember::detail, OpenDDS::XTypes::MinimalStructMember::detail, OpenDDS::XTypes::CompleteStructHeader::detail, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, Fields::end(), OpenDDS::XTypes::hash_member_name(), OpenDDS::XTypes::CompleteStructType::header, OpenDDS::XTypes::MinimalStructType::header, OpenDDS::XTypes::IS_AUTOID_HASH, OpenDDS::XTypes::IS_EXTERNAL, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::IS_MUST_UNDERSTAND, OpenDDS::XTypes::IS_NESTED, OpenDDS::XTypes::IS_OPTIONAL, OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::CommonStructMember::member_flags, OpenDDS::XTypes::CommonStructMember::member_id, OpenDDS::XTypes::CompleteStructType::member_seq, OpenDDS::XTypes::MinimalStructType::member_seq, OpenDDS::XTypes::CommonStructMember::member_type_id, OpenDDS::XTypes::TypeObject::minimal, name, OpenDDS::XTypes::CompleteMemberDetail::name, OpenDDS::XTypes::MinimalMemberDetail::name_hash, OpenDDS::XTypes::Sequence< T >::sort(), OpenDDS::XTypes::CompleteStructType::struct_flags, OpenDDS::XTypes::MinimalStructType::struct_flags, OpenDDS::XTypes::CompleteTypeObject::struct_type, OpenDDS::XTypes::MinimalTypeObject::struct_type, OpenDDS::XTypes::TK_NONE, OpenDDS::XTypes::TK_STRUCTURE, and OpenDDS::XTypes::CompleteTypeDetail::type_name.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1515 of file typeobject_generator.cpp.
References be_util::misc_error_and_abort(), OpenDDS::XTypes::TI_STRING16_LARGE, OpenDDS::XTypes::TI_STRING16_SMALL, OpenDDS::XTypes::TI_STRING8_LARGE, OpenDDS::XTypes::TI_STRING8_SMALL, and OpenDDS::XTypes::TK_NONE.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1112 of file typeobject_generator.cpp.
References OpenDDS::XTypes::CompleteMemberDetail::ann_builtin, OpenDDS::XTypes::Sequence< T >::append(), autoidkind_hash, be_global, Fields::begin(), canonical_name(), OpenDDS::XTypes::CompleteUnionMember::common, OpenDDS::XTypes::MinimalUnionMember::common, OpenDDS::XTypes::CompleteDiscriminatorMember::common, OpenDDS::XTypes::MinimalDiscriminatorMember::common, OpenDDS::XTypes::TypeObject::complete, OpenDDS::XTypes::CompleteUnionMember::detail, OpenDDS::XTypes::MinimalUnionMember::detail, OpenDDS::XTypes::CompleteUnionHeader::detail, OpenDDS::XTypes::CompleteUnionType::discriminator, OpenDDS::XTypes::MinimalUnionType::discriminator, OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, Fields::end(), OpenDDS::XTypes::hash_member_name(), OpenDDS::XTypes::CompleteUnionType::header, OpenDDS::XTypes::IS_AUTOID_HASH, OpenDDS::XTypes::IS_DEFAULT, OpenDDS::XTypes::IS_EXTERNAL, OpenDDS::XTypes::IS_KEY, OpenDDS::XTypes::IS_NESTED, OpenDDS::XTypes::CompleteTypeObject::kind, OpenDDS::XTypes::MinimalTypeObject::kind, OpenDDS::XTypes::TypeObject::kind, OpenDDS::XTypes::CommonUnionMember::label_seq, OpenDDS::XTypes::CommonUnionMember::member_flags, OpenDDS::XTypes::CommonDiscriminatorMember::member_flags, OpenDDS::XTypes::CommonUnionMember::member_id, OpenDDS::XTypes::CompleteUnionType::member_seq, OpenDDS::XTypes::MinimalUnionType::member_seq, OpenDDS::XTypes::TypeObject::minimal, name, OpenDDS::XTypes::CompleteMemberDetail::name, OpenDDS::XTypes::MinimalMemberDetail::name_hash, OpenDDS::XTypes::Sequence< T >::sort(), OpenDDS::XTypes::TK_UNION, OpenDDS::XTypes::CommonUnionMember::type_id, OpenDDS::XTypes::CommonDiscriminatorMember::type_id, OpenDDS::XTypes::CompleteTypeDetail::type_name, OpenDDS::XTypes::CompleteUnionType::union_flags, OpenDDS::XTypes::MinimalUnionType::union_flags, OpenDDS::XTypes::CompleteTypeObject::union_type, and OpenDDS::XTypes::MinimalTypeObject::union_type.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1673 of file typeobject_generator.cpp.
References OPENDDS_ASSERT.
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 1645 of file typeobject_generator.cpp.
References OPENDDS_ASSERT.
Referenced by typeobject_generator::Element::operator<().
|
inline |
|
inline |
Definition at line 46 of file typeobject_generator.h.
References produce_xtypes_complete_, and use_old_typeobject_encoding().
|
private |
Definition at line 1015 of file typeobject_generator.cpp.
References be_global, OpenDDS::XTypes::AppliedBuiltinMemberAnnotations::hash_id, AnnotationWithValue< T >::node_value_exists(), value, and OpenDDS::XTypes::Optional< T >::value().
Referenced by typeobject_generator::Element::operator<().
|
private |
Definition at line 743 of file typeobject_generator.cpp.
References OpenDDS::XTypes::Sequence< T >::append(), be_global, Fields::begin(), canonical_name(), OpenDDS::XTypes::EK_COMPLETE, OpenDDS::XTypes::EK_MINIMAL, OpenDDS::STUN::encoding(), Fields::end(), OpenDDS::XTypes::get_typeobject_encoding(), typeobject_generator::Element::index, OpenDDS::XTypes::TypeIdentifier::kind(), ACE_Message_Block::length(), typeobject_generator::Element::lowlink, OpenDDS::DCPS::MD5Hash(), be_util::misc_error_and_abort(), typeobject_generator::Element::name, typeobject_generator::Element::on_stack, OPENDDS_ASSERT, ACE_Message_Block::rd_ptr(), OpenDDS::DCPS::serialized_size(), OpenDDS::XTypes::TI_STRONGLY_CONNECTED_COMPONENT, OpenDDS::DCPS::to_dds_string(), and typeobject_generator::Element::type.
Referenced by typeobject_generator::Element::operator<().
|
static |
Definition at line 680 of file typeobject_generator.cpp.
References dds_generator::get_xtag_name().
Referenced by typeobject_generator().
|
private |
Definition at line 993 of file typeobject_generator.cpp.
References OpenDDS::XTypes::makeTypeIdentifier().
Referenced by typeobject_generator::Element::operator<().
void typeobject_generator::use_old_typeobject_encoding | ( | ) |
Definition at line 565 of file typeobject_generator.cpp.
References OpenDDS::XTypes::get_typeobject_encoding(), and OpenDDS::DCPS::Encoding::skip_sequence_dheader().
Referenced by produce_xtypes_complete().
|
private |
Definition at line 113 of file typeobject_generator.h.
|
private |
Definition at line 120 of file typeobject_generator.h.
|
private |
Definition at line 110 of file typeobject_generator.h.
|
private |
Definition at line 121 of file typeobject_generator.h.
|
private |
Definition at line 107 of file typeobject_generator.h.
|
private |
Definition at line 117 of file typeobject_generator.h.
|
private |
Definition at line 112 of file typeobject_generator.h.
|
private |
Definition at line 115 of file typeobject_generator.h.
Referenced by produce_output().
|
private |
Definition at line 116 of file typeobject_generator.h.
Referenced by produce_xtypes_complete().
|
private |
Definition at line 119 of file typeobject_generator.h.
|
private |
Definition at line 98 of file typeobject_generator.h.
|
private |
Definition at line 122 of file typeobject_generator.h.