Dev Essential
Loading...
Searching...
No Matches
datamodel_datadefinition.h
Go to the documentation of this file.
1
14
15#ifndef DD_DATA_MODEL_H_INCLUDED
16#define DD_DATA_MODEL_H_INCLUDED
17
26
27#include <string>
28
29namespace ddl {
30
31namespace dd {
32
33namespace datamodel {
34
54class DataDefinition : public ModelSubject<Header>,
55 private ModelObserver<Header>,
56 public ModelSubject<BaseUnit>,
57 public ModelSubject<UnitPrefix>,
58 public ModelSubject<Unit>,
59 public ModelSubject<DataType>,
60 public ModelSubject<EnumType>,
61 public ModelSubject<StructType>,
62 public ModelSubject<StreamMetaType>,
63 public ModelSubject<Stream>,
64 public InfoMap {
65public:
76 DataDefinition(const dd::Version& ddl_version);
77
89
103
107 virtual ~DataDefinition() = default;
108
109public:
127 friend BaseUnits;
128 friend UnitPrefixes;
129 friend Units;
130 friend DataTypes;
131 friend EnumTypes;
132 friend StructTypes;
133 friend StreamMetaTypes;
134 friend Streams;
136
143 void setVersion(const dd::Version& ddl_version);
150
156 std::shared_ptr<const Header> getHeader() const;
162 std::shared_ptr<Header> getHeader();
168 void setHeader(const Header& header);
169
175 const BaseUnits& getBaseUnits() const;
182
195
201 const Units& getUnits() const;
208
214 const DataTypes& getDataTypes() const;
221
227 const EnumTypes& getEnumTypes() const;
234
247
260
266 const Streams& getStreams() const;
273
282 bool containsType(const std::string& type_name) const;
295 TypeOfType getTypeOfType(const std::string& type_name) const;
296
305 bool containsUnit(const std::string& unit_name) const;
315 TypeOfUnit getTypeOfUnit(const std::string& unit_name) const;
316
321 bool isEmpty() const;
322
323private:
324 bool validateContains(const BaseUnits::access_type& base_unit) const;
325 bool validateContains(const UnitPrefixes::access_type& unit_prefix) const;
326 bool validateContains(const Units::access_type& unit) const;
327 bool validateContains(const DataTypes::access_type& data_type) const;
328 bool validateContains(const EnumTypes::access_type& enum_type) const;
329 bool validateContains(const StructTypes::access_type& struct_type) const;
330 bool validateContains(const StreamMetaTypes::access_type& stream_meta_type) const;
331 bool validateContains(const Streams::access_type& stream) const;
332
333 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
335 const std::string& additional_info);
336 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
338 const std::string& additional_info);
339 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
341 const std::string& additional_info);
342 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
344 const std::string& additional_info);
345 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
347 const std::string& additional_info);
348 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
350 const std::string& additional_info);
351 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
353 const std::string& additional_info);
354 void notifyChangedMapContent(utility::TypeAccessMapEventCode code,
355 Streams::access_type& stream,
356 const std::string& additional_info);
357
358 void modelChanged(datamodel::ModelEventCode event_code,
359 datamodel::Header& changed_subject,
360 const std::string& additional_info) override;
361
362 std::shared_ptr<Header> _header;
363 BaseUnits _base_units;
364 UnitPrefixes _unit_prefixes;
365 Units _units;
366 DataTypes _data_types;
367 EnumTypes _enum_types;
368 StructTypes _struct_types;
369 StreamMetaTypes _stream_meta_types;
370 Streams _streams;
371 bool _empty_model;
372};
373
374} // namespace datamodel
375} // namespace dd
376} // namespace ddl
377
378#endif // DD_DATA_MODEL_H_INCLUDED
DDL Version.
Definition dd_common_types.h:203
const EnumTypes & getEnumTypes() const
Get the Enum Types object.
DataDefinition()
CTOR. Creates a datamodel with the current version (ddl::dd::Version)
StructTypes & getStructTypes()
Get the Struct Types object.
DataDefinition & operator=(const DataDefinition &other)
resets the current content an copies the other
UnitPrefixes & getUnitPrefixes()
Get the Unit Prefixes object.
const StreamMetaTypes & getStreamMetaTypes() const
Get the Stream Meta Types object.
utility::TypeAccessMap< EnumType, DataDefinition > EnumTypes
container class for all EnumTypes
Definition datamodel_datadefinition.h:119
std::shared_ptr< Header > getHeader()
Get the Header object.
StreamMetaTypes & getStreamMetaTypes()
Get the Stream Meta Types object.
DataDefinition(const dd::Version &ddl_version)
CTOR. Creates a datamodel with the given version (ddl::dd::Version)
const UnitPrefixes & getUnitPrefixes() const
Get the Unit Prefixes object.
utility::TypeAccessMap< DataType, DataDefinition > DataTypes
container class for all DataTypes
Definition datamodel_datadefinition.h:117
bool containsType(const std::string &type_name) const
Retrieve information if the datamodel contains a type with the given name. Following types are cons...
utility::TypeAccessMap< StreamMetaType, DataDefinition > StreamMetaTypes
container class for all StreamMetaTypes
Definition datamodel_datadefinition.h:123
BaseUnits & getBaseUnits()
Get the Base Units object.
Version getVersion() const
Get the DDL Version.
TypeOfUnit getTypeOfUnit(const std::string &unit_name) const
Retrieve information if the datamodel contains a unit with the given name and return the type of it....
const BaseUnits & getBaseUnits() const
Get the Base Units object.
TypeOfType getTypeOfType(const std::string &type_name) const
Retrieve information if the datamodel contains a type with the given name and return the type of it....
const Units & getUnits() const
Get the Units object.
utility::TypeAccessMap< Stream, DataDefinition > Streams
container class for all Streams
Definition datamodel_datadefinition.h:125
void setVersion(const dd::Version &ddl_version)
Set the DDL Version (in the header!)
bool containsUnit(const std::string &unit_name) const
Retrieve information if the datamodel contains a unit with the given name. Following units are cons...
utility::TypeAccessMap< StructType, DataDefinition > StructTypes
container class for all StructTypes
Definition datamodel_datadefinition.h:121
DataDefinition(const DataDefinition &other)
CTOR. Copies the datamodel DD.
const Streams & getStreams() const
Get the Streams object.
utility::TypeAccessMap< Unit, DataDefinition > Units
container class for all Units
Definition datamodel_datadefinition.h:115
Units & getUnits()
Get the Units object.
DataDefinition & operator=(DataDefinition &&)
move assignment operator
DataDefinition(DataDefinition &&)
move CTOR
void setHeader(const Header &header)
Set the Header object.
const StructTypes & getStructTypes() const
Get the Struct Types object.
DataTypes & getDataTypes()
Get the Data Types object.
utility::TypeAccessMap< UnitPrefix, DataDefinition > UnitPrefixes
container class for all UnitPrefixes
Definition datamodel_datadefinition.h:113
Streams & getStreams()
Get the Streams object.
const DataTypes & getDataTypes() const
Get the Data Types object.
std::shared_ptr< const Header > getHeader() const
Get the Header object.
utility::TypeAccessMap< BaseUnit, DataDefinition > BaseUnits
container class for all BaseUnits
Definition datamodel_datadefinition.h:111
EnumTypes & getEnumTypes()
Get the Enum Types object.
Data Definition datamodel for the Header.
Definition datamodel_header.h:37
Utility class for observable named items where the order is NOT important.
Definition access_map.h:79
definition of the datamodel namespace
Definition datamodel_base.h:28
utility::ModelObserverUtility< TYPE, ModelEventCode > ModelObserver
Observer template class that observe the TYPE.
Definition datamodel_base.h:195
utility::ModelSubjectUtility< TYPE, ModelEventCode > ModelSubject
Subject template class that is observable.
Definition datamodel_base.h:187
ModelEventCode
Model event code for the data model observer.
Definition datamodel_base.h:34
TypeAccessMapEventCode
Internal event code to inform the parent DD Object about the change of an item within the list.
Definition access_map.h:37
definition of the dd namespace
Definition datamodel_base.h:26
TypeOfUnit
Classification of unit.
Definition dd_common_types.h:76
@ base_unit
the unit is a base unit (BaseUnit)
Definition dd_common_types.h:91
@ unit
the unit is a unit (Unit)
Definition dd_common_types.h:86
TypeOfType
Classification of a Type.
Definition dd_common_types.h:44
@ struct_type
the type is a struct type (StructType)
Definition dd_common_types.h:64
@ data_type
the type is a data type (DataType)
Definition dd_common_types.h:54
@ stream_meta_type
the type is an stream meta type (StreamMetaType)
Definition dd_common_types.h:69
@ enum_type
the type is a enum type (EnumType)
Definition dd_common_types.h:59
definiton of the unit prefixes namespace
Definition dd_predefined_units.h:61
definition of the ddl namespace
Definition codec.h:21