15#ifndef DDENUM_H_INCLUDED
16#define DDENUM_H_INCLUDED
69 const std::vector<dd::EnumType::Element>& elements = {});
82 const std::vector<dd::EnumType::Element>& elements = {});
138 std::shared_ptr<dd::EnumType> _enum_type;
154template <
typename EnumDataType,
typename Enable =
void>
164 const std::vector<std::pair<std::string, EnumDataType>> elements = {})
165 :
DDEnum(name,
DataType<typename std::underlying_type<EnumDataType>::type>())
167 for (
const auto& elem: elements) {
171 static_cast<typename std::underlying_type<EnumDataType>::type
>(elem.second))));
187 std::to_string(
static_cast<typename std::underlying_type<EnumDataType>::type
>(value))));
203template <
typename EnumDataType>
205 typename std::enable_if<std::is_arithmetic<EnumDataType>::value>::type>
215 const std::vector<std::pair<std::string, EnumDataType>> elements = {})
218 for (
const auto& elem: elements) {
A DataType class holding the DD for a Datatype with dependencies. (i.e. Units!)
Definition dddatatype.h:30
DDEnumGenerator(const std::string &name, const std::vector< std::pair< std::string, EnumDataType > > elements={})
CTOR.
Definition ddenum.h:214
DDEnumGenerator & addElement(const std::string &name, EnumDataType value)
Adds a element for the enumeration with name and value.
Definition ddenum.h:183
DDEnumGenerator(const std::string &name, const std::vector< std::pair< std::string, EnumDataType > > elements={})
CTOR.
Definition ddenum.h:163
Utility class for a complete valid data definition of one EnumType and its dependencies....
Definition ddenum.h:29
DDEnum & operator=(const DDEnum &other)
copies a DDEnum object
size_t getTypeByteSize() const
returns the size of the underlying datatype.
DDEnum(const DDEnum &other)
Construct a new DDEnum object.
DDEnum(const std::string &name, const dd::DataType &data_type, const std::vector< dd::EnumType::Element > &elements={})
Construct a new DDEnum object.
const dd::EnumType & getEnumType() const
Get the Enum Type object.
DDEnum & operator=(DDEnum &&)
DDEnum & addElement(const dd::EnumType::Element &element)
adds a EnumType element.
DDEnum(DDEnum &&)
Construct a new DDEnum object.
DDEnum()=delete
Construct a new DDEnum object.
DDEnum(const std::string &name, const DDDataType &data_type, const std::vector< dd::EnumType::Element > &elements={})
Construct a new DDEnum object.
const dd::DataDefinition & getDD() const
return the valid data definition.
DDEnum & addElements(const std::vector< dd::EnumType::Element > &elements)
adds a vector of EnumType elements.
size_t getAlignment() const
returns the alignment of the underlying datatype.
DDEnum & addElement(const std::string &name, int64_t value)
adds a EnumType element.
Generator template to create DataType for the plain c-types.
Definition dd_predefined_datatypes.h:38
The Data Definiton class uses the validation model to keep a Data Definition datamodel (ddl::dd::data...
Definition dd.h:92
KeyValuePair Element
Enum type element defintion as Name Value pair.
Definition datamodel_types.h:326
datamodel::DataType DataType
Definition dd.h:51
datamodel::EnumType EnumType
Definition dd.h:55
definition of the ddl namespace
Definition codec.h:21