ADTF
datamodel_types.h
Go to the documentation of this file.
1 
15 #ifndef DD_DATA_MODEL_TYPES_H_INCLUDED
16 #define DD_DATA_MODEL_TYPES_H_INCLUDED
17 
20 #include <ddl/dd/dd_common_types.h>
24 
25 #include <string>
26 #include <vector>
27 
28 namespace ddl {
29 
30 namespace dd {
31 
32 namespace datamodel {
33 
38 class TypeBase {
39 public:
44  TypeBase() = default;
49  TypeBase(const TypeBase&) = default;
54  TypeBase(TypeBase&&) = default;
60  TypeBase& operator=(const TypeBase&) = default;
66  TypeBase& operator=(TypeBase&&) = default;
72  TypeBase(const std::string& name);
77  virtual ~TypeBase() = default;
78 
85  virtual TypeOfType getTypeOfType() const = 0;
93  virtual void setName(const std::string& name);
99  const std::string& getName() const;
100 
101 protected:
103  std::string _name;
104 };
105 
110 class DataType : public TypeBase,
111  public ModelSubject<DataType>,
112  public utility::TypeAccessMapSubject<DataType>,
113  public InfoMap {
114 public:
119  DataType(){};
124  DataType(const DataType&) = default;
129  DataType(DataType&&) = default;
135  DataType& operator=(const DataType&) = default;
141  DataType& operator=(DataType&&) = default;
157  DataType(const std::string& name,
158  size_t bit_size,
159  const std::string& description = {},
160  OptionalSize array_size = {},
161  const std::string& unit_name = {},
162  const std::string& minimum_value = {},
163  const std::string& maximum_value = {},
164  OptionalSize default_type_alignment = {});
165 
179  DataType(const std::initializer_list<std::string>& initializer);
184  virtual ~DataType() = default;
193  bool operator==(const DataType& other) const;
202  bool operator!=(const DataType& other) const;
203 
207  TypeOfType getTypeOfType() const override;
211  void setName(const std::string& name) override;
212 
218  size_t getBitSize() const;
224  void setBitSize(size_t size);
225 
237  void setArraySize(OptionalSize array_size);
238 
244  const std::string& getUnitName() const;
250  void setUnitName(const std::string& unit_name);
251 
258  const std::string& getMin() const;
265  void setMin(const std::string& minimum_value);
266 
273  const std::string& getMax() const;
280  void setMax(const std::string& maximum_value);
281 
287  const std::string& getDescription() const;
293  void setDescription(const std::string& description);
294 
301 
302 private:
303  void notify(const std::string& additional_info);
304  size_t _bit_size = 0;
305  std::string _description = {};
306  OptionalSize _array_size = {};
307  std::string _unit_name = {};
308  std::string _minimum_value = {};
309  std::string _maximum_value = {};
310  OptionalSize _default_type_alignment = {};
311 };
312 
317 class EnumType : public TypeBase,
318  public ModelSubject<EnumType>,
319  public utility::TypeAccessMapSubject<EnumType>,
320  public InfoMap {
321 public: // types
333  friend Elements;
335 
336 public:
341  EnumType() = delete;
358  EnumType(const EnumType& other);
364  EnumType& operator=(const EnumType& other);
373  EnumType(const std::string& name,
374  const std::string& data_type_name,
375  const std::vector<Element>& elements = {});
380  virtual ~EnumType() = default;
388  bool operator==(const EnumType& other) const;
396  bool operator!=(const EnumType& other) const;
397 
403  const Elements& getElements() const;
410 
414  TypeOfType getTypeOfType() const override;
418  void setName(const std::string& name) override;
419 
425  const std::string& getDataTypeName() const;
431  void setDataTypeName(const std::string& data_type_name);
432 
433 private:
434  void notify(ModelEventCode code,
435  utility::TypeAccessMapEventCode forward_code,
436  const std::string& additional_info);
437  bool validateContains(const Elements::access_type& element_name) const;
438  void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
439  Elements::access_type& element,
440  const std::string& additional_info);
441 
442  std::string _data_type_name = {};
443  Elements _elements;
444 };
445 
450 class StructType : public TypeBase,
451  public ModelSubject<StructType>,
452  public utility::TypeAccessMapSubject<StructType>,
453  public InfoMap {
454 public:
459  StructType() = delete;
476  StructType(const StructType& other);
488  virtual ~StructType() = default;
489 
494  public:
504  SerializedInfo(const SerializedInfo&) = default;
526  virtual ~SerializedInfo() = default;
527 
538  OptionalSize bit_pos = {},
539  OptionalSize num_bits = {});
556  SerializedInfo(const std::initializer_list<size_t>& intializer);
564  bool operator==(const SerializedInfo& other) const;
565 
580  void setBytePos(OptionalSize byte_pos, bool prevent_notification = false);
581 
596  void setBitPos(OptionalSize bit_pos, bool prevent_notification = false);
597 
609  void setNumBits(OptionalSize num_bits);
610 
622  void setByteOrder(ByteOrder byte_order);
623 
624  protected:
632  virtual void notifyChangeSerialized(const std::string&){};
633 
634  private:
635  OptionalSize _byte_pos = {};
636  OptionalSize _bit_pos = {};
637  OptionalSize _num_bits = {};
638  ByteOrder _byte_order = e_le;
639  };
640 
645  public:
677  virtual ~DeserializedInfo() = default;
678 
684  DeserializedInfo(size_t alignment);
690  DeserializedInfo(const std::initializer_list<size_t>& intializer);
691 
699  bool operator==(const DeserializedInfo& other) const;
700 
706  virtual size_t getAlignment() const;
714  void setAlignment(size_t alignment);
715 
716  protected:
723  virtual void notifyChangeDeserialized(const std::string&){};
724 
725  private:
726  size_t _alignment = Alignment::e_invalid;
727  };
728 
733  class Element : public SerializedInfo,
734  public DeserializedInfo,
735  public utility::TypeAccessListSubject<Element>,
736  public InfoMap {
737  public:
747  Element(const Element& other);
752  Element(Element&& other);
758  Element& operator=(const Element& other);
765 
788  Element(const std::string& name,
789  const std::string& type_name,
790  const DeserializedInfo& deserialized_info,
791  const SerializedInfo& serialized_info,
792  const dd::ArraySize& array_size = {},
793  const std::string& description = {},
794  const std::string& comment = {},
795  const std::string& unit_name = {},
796  const std::string& value = {},
797  const std::string& minimum_value = {},
798  const std::string& maximum_value = {},
799  const std::string& default_value = {},
800  const std::string& scale = {},
801  const std::string& offset = {});
802 
826  Element(const std::string& name,
827  const std::string& type_name,
828  const DeserializedInfo& deserialized_info,
829  const SerializedInfo& serialized_info,
830  const dd::ArraySize& array_size,
831  const std::string& description,
832  const std::string& comment,
833  const std::string& unit_name,
834  const std::string& value,
835  const std::string& minimum_value,
836  const std::string& maximum_value,
837  const std::string& default_value,
838  const std::string& scale,
839  const std::string& offset,
840  const std::string& valid_element_count);
841 
849  bool operator==(const Element& other) const;
857  bool operator!=(const Element& other) const;
858 
864  const std::string& getName() const;
873  void setName(const std::string& name);
874 
880  const std::string& getTypeName() const;
887  void setTypeName(const std::string& type_name);
888 
894  const std::string& getDescription() const;
901  void setDescription(const std::string& description);
902 
908  const std::string& getComment() const;
915  void setComment(const std::string& comment);
916 
922  const ArraySize& getArraySize() const;
929  void setArraySize(const ArraySize& array_size);
930 
938  const std::string& getValidElementCount() const;
948  void setValidElementCount(const std::string& valid_element_count);
949 
955  const std::string& getUnitName() const;
962  void setUnitName(const std::string& unit_name);
963 
969  const std::string& getValue() const;
979  void setValue(const std::string& value);
980 
987  const std::string& getMin() const;
994  void setMin(const std::string& minimum_value);
995 
1002  const std::string& getMax() const;
1009  void setMax(const std::string& maximum_value);
1010 
1016  const std::string& getDefault() const;
1024  void setDefault(const std::string& default_value);
1025 
1031  const std::string& getScale() const;
1038  void setScale(const std::string& scale);
1039 
1045  const std::string& getOffset() const;
1052  void setOffset(const std::string& offset);
1053 
1054  private:
1055  void notifyChangeSerialized(const std::string& additional_info) override;
1056  void notifyChangeDeserialized(const std::string& additional_info) override;
1057 
1058  private:
1059  std::string _name;
1060  std::string _type_name;
1061  std::string _description;
1062  std::string _unit_name;
1063  std::string _comment;
1064  ArraySize _array_size = 1;
1065  std::string _value;
1066  std::string _minimum_value;
1067  std::string _maximum_value;
1068  std::string _default_value;
1069  std::string _scale;
1070  std::string _offset;
1071  };
1072 
1085  StructType(const std::string& name,
1086  const std::string& struct_version = "1",
1087  OptionalSize alignment = {},
1088  const std::string& comment = {},
1089  dd::Version ddl_version = dd::Version(0, 0),
1090  const std::vector<Element>& elements = {});
1098  bool operator==(const StructType& other) const;
1106  bool operator!=(const StructType& other) const;
1107 
1111  TypeOfType getTypeOfType() const override;
1115  void setName(const std::string& name) override;
1116 
1129  void setAlignment(OptionalSize alignment);
1130 
1136  const std::string& getComment() const;
1143  void setComment(const std::string& comment);
1144 
1150  const std::string& getVersion() const;
1156  void setVersion(const std::string& struct_version);
1157 
1171  void setLanguageVersion(const Version& ddl_version);
1172 
1173 public:
1179  friend Elements;
1181 
1186  const Elements& getElements() const;
1193 
1194 private:
1195  void notify(ModelEventCode code,
1197  const std::string& additional_info);
1198  bool validateContains(const Elements::access_type& element_name) const;
1199  void notifyChangedListContent(utility::TypeAccessListEventCode code,
1200  Elements::access_type& element,
1201  const std::string& additional_info);
1202  [[deprecated]]
1203  const Elements::container_named_compatibility_type* getNamedItemList() const;
1204  [[deprecated]]
1206 
1207  const Elements::container_named_type* getNamedItemViewList() const;
1208  Elements::container_named_type* getNamedItemViewList();
1209 
1210  std::string _struct_version;
1211  dd::Version _ddl_version;
1212  std::string _comment;
1213  OptionalSize _alignment = Alignment::e1;
1214  Elements _elements;
1215 };
1216 
1221 class StreamMetaType : public TypeBase,
1222  public ModelSubject<StreamMetaType>,
1223  public utility::TypeAccessMapSubject<StreamMetaType>,
1224  public InfoMap {
1225 public: // types
1237  friend Properties;
1239 
1240 public:
1245  StreamMetaType() = delete;
1279  StreamMetaType(const std::string& name,
1280  const std::string& version,
1281  const std::string& parent = {},
1282  const std::vector<Property>& properties = {});
1287  virtual ~StreamMetaType() = default;
1295  bool operator==(const StreamMetaType& other) const;
1303  bool operator!=(const StreamMetaType& other) const;
1304 
1310  const Properties& getProperties() const;
1317 
1321  TypeOfType getTypeOfType() const override;
1325  void setName(const std::string& name) override;
1326 
1332  const std::string& getParent() const;
1340  void setParent(const std::string& parent);
1341 
1347  const std::string& getVersion() const;
1354  void setVersion(const std::string& version);
1355 
1356 private:
1357  void notify(ModelEventCode code,
1358  utility::TypeAccessMapEventCode forward_code,
1359  const std::string& additional_info);
1360  bool validateContains(const Properties::access_type& prop) const;
1361  void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
1362  Properties::access_type& element,
1363  const std::string& additional_info);
1364 
1365  std::string _version = {};
1366  std::string _parent = {};
1367  Properties _properties;
1368 };
1369 
1374 struct ElementType {
1383  std::shared_ptr<datamodel::DataType> _data_type = {};
1387  std::shared_ptr<datamodel::EnumType> _enum_type = {};
1391  std::shared_ptr<datamodel::StructType> _struct_type = {};
1392 };
1393 
1394 } // namespace datamodel
1395 } // namespace dd
1396 } // namespace ddl
1397 
1398 namespace ddl::dd::utility::detail
1399 {
1407  static constexpr auto _other_types = "enumtype, structtype or streammetatype";
1414  static std::string getDifference(const ddl::dd::datamodel::DataType& left, const ddl::dd::datamodel::DataType& right);
1415  };
1423  static constexpr auto _other_types = "datatype, streammetatype or structtype";
1430  static std::string getDifference(const ddl::dd::datamodel::EnumType& left, const ddl::dd::datamodel::EnumType& right);
1431  };
1439  static constexpr auto _other_types = "datatype, enumtype or streammetatype";
1446  static std::string getDifference(const ddl::dd::datamodel::StructType& left, const ddl::dd::datamodel::StructType& right);
1447  };
1455  static constexpr auto _other_types = "";
1463  };
1464 }
1465 
1466 #endif // DD_DATA_MODEL_TYPES_H_INCLUDED
DataDefinition Utility class for observable items.
DataDefinition Utility class for observable items.
Sinc DDL 2.0 it is possible to define arraysize with a string that indicates a dynamic array.
static ByteOrder getPlatformDefault()
Get the current Platform Byteorder.
observable DataDefinition object class to describe (POD) DataType.
void setMax(const std::string &maximum_value)
Set the Max (introduced in DDL 3.0)
bool operator==(const DataType &other) const
equality operator.
const std::string & getDescription() const
Get the Description.
bool operator!=(const DataType &other) const
non equality operator.
void setUnitName(const std::string &unit_name)
Set the Unit Name.
DataType & operator=(const DataType &)=default
copy assignment operator.
void setDescription(const std::string &description)
Set the Description.
size_t getBitSize() const
Get the Bit Size.
void setBitSize(size_t size)
Set the Bit Size.
DataType(const std::string &name, size_t bit_size, const std::string &description={}, OptionalSize array_size={}, const std::string &unit_name={}, const std::string &minimum_value={}, const std::string &maximum_value={}, OptionalSize default_type_alignment={})
CTOR.
const OptionalSize & getDefaultAlignment() const
Get the default Alignment if set.
OptionalSize getArraySize() const
Get the Array Size (optional)
const std::string & getMax() const
Get the Max Value for information (introduced in DDL 3.0)
DataType & operator=(DataType &&)=default
move assignment operator.
const std::string & getMin() const
Get the Min Value for information (introduced in DDL 3.0)
void setMin(const std::string &minimum_value)
Set the Min (introduced in DDL 3.0)
void setName(const std::string &name) override
Set the Name.
DataType(DataType &&)=default
move CTOR
const std::string & getUnitName() const
Get the Unit Name.
void setArraySize(OptionalSize array_size)
Set the Array Size object.
DataType(const std::initializer_list< std::string > &initializer)
CTOR with initializer.
DataType(const DataType &)=default
copy CTOR
TypeOfType getTypeOfType() const override
Get the Type Of the Type (data_type, enum_type, struct_type, stream_meta_type).
virtual ~DataType()=default
DTOR.
observable DataDefinition object class to describe EnumType.
EnumType & operator=(EnumType &&)
move assignment operator
EnumType(EnumType &&)
move CTOR.
const std::string & getDataTypeName() const
Get the Data Type Name.
void setDataTypeName(const std::string &data_type_name)
Set the Data Type Name.
EnumType()=delete
no default CTOR
utility::TypeAccessMap< Element, EnumType > Elements
container class for elements in EnumType
bool operator==(const EnumType &other) const
equality operator.
EnumType & operator=(const EnumType &other)
copy assignment operator
bool operator!=(const EnumType &other) const
non equality operator.
void setName(const std::string &name) override
Set the Name.
virtual ~EnumType()=default
DTOR.
const Elements & getElements() const
Get the Elements object.
Elements & getElements()
Get the Elements object.
EnumType(const EnumType &other)
Copy CTOR.
TypeOfType getTypeOfType() const override
Get the Type Of the Type (data_type, enum_type, struct_type, stream_meta_type).
EnumType(const std::string &name, const std::string &data_type_name, const std::vector< Element > &elements={})
Construct a new Enum Type object.
Info Map for the datamodel to hold a set of optional IInfo instances.
observable DataDefinition object class to describe StreamMetaType.
StreamMetaType & operator=(const StreamMetaType &other)
copy assignment operator
bool operator==(const StreamMetaType &other) const
equality operator.
const std::string & getParent() const
Get the Parent.
StreamMetaType()=delete
no default CTOR
const std::string & getVersion() const
Get the Version.
StreamMetaType(const StreamMetaType &other)
copy CTOR
const Properties & getProperties() const
Get the Properties object.
StreamMetaType(const std::string &name, const std::string &version, const std::string &parent={}, const std::vector< Property > &properties={})
CTOR.
Properties & getProperties()
Get the Properties object.
StreamMetaType & operator=(StreamMetaType &&)
move assignment operator
virtual ~StreamMetaType()=default
DTOR.
utility::TypeAccessMap< Property, StreamMetaType > Properties
container of properties for the StreamMetaType::Property.
void setName(const std::string &name) override
Set the Name.
void setParent(const std::string &parent)
Set the Parent This is only valid if the parent is a valid other streammetatype.
void setVersion(const std::string &version)
Set the Version.
TypeOfType getTypeOfType() const override
Get the Type Of the Type (data_type, enum_type, struct_type, stream_meta_type).
bool operator!=(const StreamMetaType &other) const
non equality operator.
StreamMetaType(StreamMetaType &&)
move CTOR
class to describe the deserialized information of a StructType::Element.
DeserializedInfo(DeserializedInfo &&)=default
move CTOR
DeserializedInfo(const DeserializedInfo &)=default
copy CTOR
virtual void notifyChangeDeserialized(const std::string &)
Forwarding the notification.
DeserializedInfo(const std::initializer_list< size_t > &intializer)
CTOR.
DeserializedInfo & operator=(const DeserializedInfo &)=default
copy assignment operator
void setAlignment(size_t alignment)
Set the Alignment.
DeserializedInfo & operator=(DeserializedInfo &&)=default
move assignment operator
virtual size_t getAlignment() const
Get the Alignment.
bool operator==(const DeserializedInfo &other) const
equality operator.
observable DataDefinition object class for a Element of a StructType.
void setMax(const std::string &maximum_value)
Set the Max (for information only).
Element(const std::string &name, const std::string &type_name, const DeserializedInfo &deserialized_info, const SerializedInfo &serialized_info, const dd::ArraySize &array_size, const std::string &description, const std::string &comment, const std::string &unit_name, const std::string &value, const std::string &minimum_value, const std::string &maximum_value, const std::string &default_value, const std::string &scale, const std::string &offset, const std::string &valid_element_count)
CTOR.
Element(Element &&other)
move CTOR
const std::string & getTypeName() const
Get the Type Name.
void setTypeName(const std::string &type_name)
Set the Type Name.
const std::string & getDescription() const
Get the Description.
void setUnitName(const std::string &unit_name)
Set the Unit Name.
const std::string & getScale() const
Get the Scale (for information only)
void setDefault(const std::string &default_value)
Set the Default Value.
bool operator==(const Element &other) const
equality operator.
void setDescription(const std::string &description)
Set the Description.
const ArraySize & getArraySize() const
Get the Array Size.
bool operator!=(const Element &other) const
non equality operator.
const std::string & getComment() const
Get the Comment.
Element(const Element &other)
copy CTOR
const std::string & getValue() const
Get the value.
const std::string & getMax() const
Get the Max (for information only).
const std::string & getValidElementCount() const
Get the Valid Element Count element name.
Element & operator=(Element &&other)
move assignment operator
const std::string & getName() const
Get the Name.
const std::string & getMin() const
Get the Min (for information only).
void notifyChangeSerialized(const std::string &additional_info) override
notification forwarding of serialized information to the StructType::Element object.
void setName(const std::string &name)
Set the Name.
void setMin(const std::string &minimum_value)
Set the Min (for information only).
void setScale(const std::string &scale)
Set the Scale (for information only)
const std::string & getUnitName() const
Get the Unit Name.
void setValue(const std::string &value)
Set the Value This is only valid if the data type is set to an enum type where this constant value is...
const std::string & getDefault() const
Get the Default object.
void notifyChangeDeserialized(const std::string &additional_info) override
Forwarding the notification.
Element(const std::string &name, const std::string &type_name, const DeserializedInfo &deserialized_info, const SerializedInfo &serialized_info, const dd::ArraySize &array_size={}, const std::string &description={}, const std::string &comment={}, const std::string &unit_name={}, const std::string &value={}, const std::string &minimum_value={}, const std::string &maximum_value={}, const std::string &default_value={}, const std::string &scale={}, const std::string &offset={})
CTOR.
Element & operator=(const Element &other)
copy assignment operator
void setComment(const std::string &comment)
Set the Comment object.
const std::string & getOffset() const
Get the Offset (for information only)
void setOffset(const std::string &offset)
Set the Offset (for information only)
void setArraySize(const ArraySize &array_size)
Set the Array Size.
void setValidElementCount(const std::string &valid_element_count)
Set the Valid Element Count element name.
class to describe the serialized information of a StructType::Element.
void setBytePos(OptionalSize byte_pos, bool prevent_notification=false)
Set the Byte Pos.
SerializedInfo(SerializedInfo &&)=default
move CTOR
SerializedInfo & operator=(SerializedInfo &&)=default
move assignment operator
SerializedInfo & operator=(const SerializedInfo &)=default
copy assignment operator
ByteOrder getByteOrder() const
Get the Byte Order.
OptionalSize getBytePos() const
Get the Byte Pos.
SerializedInfo(const SerializedInfo &)=default
copy CTOR
OptionalSize getBitPos() const
Get the Bit Pos (if set)
SerializedInfo(OptionalSize byte_pos, ByteOrder byte_order=ByteOrderDefault::getPlatformDefault(), OptionalSize bit_pos={}, OptionalSize num_bits={})
CTOR.
SerializedInfo(const std::initializer_list< size_t > &intializer)
CTOR with string list initializing.
void setByteOrder(ByteOrder byte_order)
Set the Byte Order.
OptionalSize getNumBits() const
Get the Num Bits (if set)
void setBitPos(OptionalSize bit_pos, bool prevent_notification=false)
Sets the Bit Pos.
void setNumBits(OptionalSize num_bits)
Set the Num Bits.
bool operator==(const SerializedInfo &other) const
equality operator.
virtual void notifyChangeSerialized(const std::string &)
notification forwarding of serialized information to the StructType::Element object.
observable DataDefinition object class to describe StructType.
bool operator==(const StructType &other) const
equality operator.
void setLanguageVersion(const Version &ddl_version)
Set the Language Version.
StructType & operator=(StructType &&other)
move assignment operator.
utility::TypeAccessList< Element, StructType > Elements
container of elements for the StructType::Element.
const std::string & getVersion() const
Get the set Version (the struct version! Not the DDL Version!)
StructType(StructType &&other)
move CTOR.
const std::string & getComment() const
Get the Comment.
void setAlignment(OptionalSize alignment)
Set the Alignment.
StructType()=delete
no default CTOR
virtual ~StructType()=default
DTOR.
OptionalSize getAlignment() const
Get the Alignment (if set)
StructType(const StructType &other)
copy CTOR
StructType & operator=(const StructType &other)
copy assignment operator
void setName(const std::string &name) override
Set the Name.
Version getLanguageVersion() const
Get the set language Version.
bool operator!=(const StructType &other) const
non equality operator.
StructType(const std::string &name, const std::string &struct_version="1", OptionalSize alignment={}, const std::string &comment={}, dd::Version ddl_version=dd::Version(0, 0), const std::vector< Element > &elements={})
CTOR.
const Elements & getElements() const
Get the Elements object.
void setVersion(const std::string &struct_version)
Get the Version (the struct version! Not the DDL Version!)
Elements & getElements()
Get the Elements object.
TypeOfType getTypeOfType() const override
Get the Type Of the Type (data_type, enum_type, struct_type, stream_meta_type).
void setComment(const std::string &comment)
Set the Comment.
TypeBase & operator=(const TypeBase &)=default
copy assignment operator
TypeBase(TypeBase &&)=default
move CTOR
virtual void setName(const std::string &name)
Set the Name.
virtual ~TypeBase()=default
DTOR.
virtual TypeOfType getTypeOfType() const =0
Get the Type Of the Type (data_type, enum_type, struct_type, stream_meta_type).
const std::string & getName() const
Get the Name.
TypeBase(const TypeBase &)=default
copy CTOR
std::string _name
name storage value
TypeBase(const std::string &name)
CTOR.
TypeBase & operator=(TypeBase &&)=default
move assignment operator
Model Subject utility to define a Model Subject that notifies one or more observers.
Element access_type
local definition of the access type
Definition: access_list.h:93
std::unordered_map< std::string, value_type > container_named_compatibility_type
local definition of the container type for getNamedItemList, which had incompatible changes within de...
Definition: access_list.h:127
std::unordered_map< std::string, value_type > container_named_type
local definition of the container type for getNamedItemViewList
Definition: access_list.h:113
Element access_type
local definition of the access type
Definition: access_map.h:82
OO DataDefinition Redesign.
OO DataDefinition Redesign - Data model Observer - Subject pattern.
OO DataDefinition Common Design.
OO DataDefinition Redesign - Data model info extension.
ModelEventCode
Model event code for the data model observer.
detail namespace with no compatibility contraints
TypeAccessMapEventCode
Internal event code to inform the parent DD Object about the change of an item within the list.
Definition: access_map.h:37
TypeAccessListEventCode
Internal event code to inform the parent DD Object about the change of an item within the list.
Definition: access_list.h:46
TypeOfType
Classification of a Type.
@ invalid_type
the type is unknown
utility::Optional< size_t > OptionalSize
Optional Size Type.
ByteOrder
Representation of the byteorder enumeration.
@ e1
Default alignment.
helper union class for an element that uses one of the datatype, enumtype, structtype
TypeOfType _type_of_type
the type of the type used (if valid)
std::shared_ptr< datamodel::EnumType > _enum_type
is set to an valid reference if the type is enum_type!
std::shared_ptr< datamodel::StructType > _struct_type
is set to an valid reference if the type is struct_type!
std::shared_ptr< datamodel::DataType > _data_type
is set to an valid reference if the type is data_type OR enum_type!
static std::string getDifference(const ddl::dd::datamodel::DataType &left, const ddl::dd::datamodel::DataType &right)
Get the Difference.
static std::string getDifference(const ddl::dd::datamodel::EnumType &left, const ddl::dd::datamodel::EnumType &right)
Get the Difference.
static std::string getDifference(const ddl::dd::datamodel::StructType &left, const ddl::dd::datamodel::StructType &right)
Get the Difference.
static std::string getDifference(const ddl::dd::datamodel::StructType::Element &left, const ddl::dd::datamodel::StructType::Element &right)
Get the Difference.
Validation helper template for clear excpetion messages.
static constexpr auto _other_types
validation other types