ADTF
Loading...
Searching...
No Matches
codec_type_info.h
Go to the documentation of this file.
1
14
15#ifndef DDL_CODEC_TYPE_INFO_CLASS_HEADER
16#define DDL_CODEC_TYPE_INFO_CLASS_HEADER
17
20
21#include <vector>
22
23namespace ddl {
24namespace codec {
25
46
51
52// forward declaration
53class StructAccess;
54
61class CodecTypeInfo {
62public:
74 const char* getTypeName() const;
82 bool isEnum() const;
88 std::vector<std::string> getEnumElementNames() const;
96 bool hasEnumElementName(const std::string& name) const;
105 a_util::variant::Variant getEnumElementValue(const std::string& name) const;
114 const char* getEnumElementName(const a_util::variant::Variant& value) const;
120
121private:
122 friend class StructAccess;
123 CodecTypeInfo(const std::string& type_name, ElementType _element_type);
124 CodecTypeInfo(const std::string& type_name,
125 ElementType _element_type,
126 AccessEnumType enum_access_type);
127
128private:
129 ElementType _element_type;
130 std::string _type_name;
131 AccessEnumType _enum_access_type;
132 bool _is_enum;
133};
134
138class CodecConstantInfo {
139public:
146 bool isConstant() const;
153 const char* getConstantName() const;
160
161private:
162 friend class StructAccess;
163 CodecConstantInfo(const char* constant_name, const a_util::variant::Variant* constant);
164
165private:
166 const char* _constant_name;
167 const a_util::variant::Variant* _constant;
168};
169
173class CodecDefaultValueInfo {
174public:
181 bool hasDefaultValue() const;
188
189private:
190 friend class StructAccess;
191 CodecDefaultValueInfo(const a_util::variant::Variant& default_value);
192
193private:
194 const a_util::variant::Variant _default_value;
195};
196
197} // namespace codec
198} // namespace ddl
199
200#endif // DDL_CODEC_TYPE_INFO_CLASS_HEADER
Definition variant.h:46
a_util::variant::Variant getConstantValue() const
const char * getConstantName() const
Get the name of the constant value.
bool isConstant() const
Determines if the element has a constant value or not.
bool hasDefaultValue() const
Determines if the element has a constant value or not.
a_util::variant::Variant getDefaultValue() const
std::vector< std::string > getEnumElementNames() const
Get the Enum Element Names.
const char * getTypeName() const
Get the typename.
a_util::variant::Variant getEnumElementValue(const std::string &name) const
ElementType getType() const
Get the Type.
bool isEnum() const
Determines the value is an enum or not.
bool hasEnumElementName(const std::string &name) const
Determines if the enum element name exists.
const AccessEnumType * getLegacyAccessEnumType() const
Legacy Only: Get the Legacy Access Enum Type object.
const char * getEnumElementName(const a_util::variant::Variant &value) const
@ VT_Empty
Variant type is empty.
Definition variant.h:26
@ VT_UInt32
Variant type is std::uint32_t.
Definition variant.h:33
@ VT_Int32
Variant type is std::int32_t.
Definition variant.h:32
@ VT_Double
Variant type is double.
Definition variant.h:37
@ VT_Int8
Variant type is std::int8_t.
Definition variant.h:28
@ VT_UInt64
Variant type is std::uint64_t.
Definition variant.h:35
@ VT_Bool
Variant type is bool.
Definition variant.h:27
@ VT_UInt16
Variant type is std::uint16_t.
Definition variant.h:31
@ VT_Int16
Variant type is std::int16_t.
Definition variant.h:30
@ VT_Float
Variant type is float.
Definition variant.h:36
@ VT_Int64
Variant type is std::int64_t.
Definition variant.h:34
@ VT_UInt8
Variant type is std::uint8_t.
Definition variant.h:29
Namespace for the new faster CodecFactory/Decoder/Codec implementation.
Definition codec.h:22
ddl::AccessEnumType AccessEnumType
This is the legacy Access Type for resolving enum names.
Definition codec_type_info.h:50
ElementType
The element type of the value.
Definition codec_type_info.h:30
@ cet_float
Variant type is float.
Definition codec_type_info.h:41
@ cet_int16
Variant type is std::int16_t.
Definition codec_type_info.h:35
@ cet_int8
Variant type is std::int8_t.
Definition codec_type_info.h:33
@ cet_uint64
Variant type is std::uint64_t.
Definition codec_type_info.h:40
@ cet_uint8
Variant type is std::uint8_t.
Definition codec_type_info.h:34
@ cet_uint32
Variant type is std::uint32_t.
Definition codec_type_info.h:38
@ cet_sub_codec
type marks a subcodec/substructure with children
Definition codec_type_info.h:43
@ cet_bool
Variant type is bool.
Definition codec_type_info.h:32
@ cet_uint16
Variant type is std::uint16_t.
Definition codec_type_info.h:36
@ cet_int32
Variant type is std::int32_t.
Definition codec_type_info.h:37
@ cet_int64
Variant type is std::int64_t.
Definition codec_type_info.h:39
@ cet_empty
Variant type is empty.
Definition codec_type_info.h:31
@ cet_user_type
type marks a user defined type
Definition codec_type_info.h:44
@ cet_double
Variant type is double.
Definition codec_type_info.h:42
definition of the ddl namespace
Definition codec.h:21
std::map< std::string, a_util::variant::Variant > AccessEnumType
Definition struct_element.h:27