ADTF
Loading...
Searching...
No Matches
datamodel_units.h
Go to the documentation of this file.
1
14
15#ifndef DD_DATA_MODEL_UNITS_H_INCLUDED
16#define DD_DATA_MODEL_UNITS_H_INCLUDED
17
24
25#include <string>
26#include <vector>
27
28namespace ddl {
29
30namespace dd {
31
32namespace datamodel {
37class UnitBase {
38public:
43 UnitBase() = default;
48 UnitBase(const UnitBase&) = default;
53 UnitBase(UnitBase&&) = default;
59 UnitBase& operator=(const UnitBase&) = default;
71 UnitBase(std::string name);
76 virtual ~UnitBase() = default;
82 virtual TypeOfUnit getTypeOfUnit() const = 0;
88 virtual void setName(const std::string& name);
94 const std::string& getName() const;
95
96protected:
98 std::string _name;
99};
100
105class BaseUnit : public UnitBase,
106 public ModelSubject<BaseUnit>,
107 public utility::TypeAccessMapSubject<BaseUnit>,
108 public InfoMap {
109public:
119 BaseUnit(const BaseUnit&) = default;
124 BaseUnit(BaseUnit&&) = default;
130 BaseUnit& operator=(const BaseUnit&) = default;
144 BaseUnit(std::string name,
145 std::string symbol,
146 std::string description = {});
151 virtual ~BaseUnit() = default;
152
153 TypeOfUnit getTypeOfUnit() const override;
162 void setName(const std::string& name) override;
163
169 const std::string& getSymbol() const;
176 void setSymbol(const std::string& symbol);
177
183 const std::string& getDescription() const;
190 void setDescription(const std::string& description);
191
199 bool operator==(const BaseUnit& other) const;
207 bool operator!=(const BaseUnit& other) const;
208
209private:
210 void notify(const std::string& additional_info);
211 std::string _symbol = {};
212 std::string _description = {};
213};
214
219class UnitPrefix : public ModelSubject<UnitPrefix>,
220 public utility::TypeAccessMapSubject<UnitPrefix>,
221 public InfoMap {
222public:
232 UnitPrefix(const UnitPrefix&) = default;
237 UnitPrefix(UnitPrefix&&) = default;
243 UnitPrefix& operator=(const UnitPrefix&) = default;
257 UnitPrefix(std::string name, std::string symbol, int32_t power);
262 virtual ~UnitPrefix() = default;
263
269 const std::string& getName() const;
278 void setName(const std::string& name);
279
285 const std::string& getSymbol() const;
292 void setSymbol(const std::string& symbol);
293
299 int32_t getPower() const;
306 void setPower(int32_t power);
314 bool operator==(const UnitPrefix& other) const;
322 bool operator!=(const UnitPrefix& other) const;
323
324private:
325 void notify(const std::string& additional_info);
326 std::string _name = {};
327 std::string _symbol = {};
328 int32_t _power = {};
329};
330
335class Unit : public UnitBase,
336 public ModelSubject<Unit>,
338 public InfoMap {
339public:
349 Unit(const Unit&) = default;
355 Unit& operator=(const Unit&) = default;
360 Unit(Unit&&) = default;
366 Unit& operator=(Unit&&) = default;
371 virtual ~Unit() = default;
372
377 class RefUnit {
378 public:
388 RefUnit(const RefUnit&) = default;
393 RefUnit(RefUnit&&) = default;
399 RefUnit& operator=(const RefUnit&) = default;
405 RefUnit& operator=(RefUnit&&) = default;
413 RefUnit(std::string unit_name, int32_t power, std::string prefix_name);
421 bool operator==(const RefUnit& other) const;
429 bool operator!=(const RefUnit& other) const;
430
436 const std::string& getUnitName() const;
442 int32_t getPower() const;
448 const std::string& getPrefixName() const;
449
450 private:
451 std::string _unit_name = {};
452 int32_t _power = {};
453 std::string _prefix_name = {};
454 };
455
465 Unit(std::string name,
466 std::string numerator,
467 std::string denominator,
468 std::string offset,
469 const std::vector<RefUnit>& ref_units = {});
477 bool operator==(const Unit& other) const;
485 bool operator!=(const Unit& other) const;
486
492 TypeOfUnit getTypeOfUnit() const override;
501 void setName(const std::string& name) override;
507 const std::string& getNumerator() const;
514 void setNumerator(const std::string& numerator);
515
521 const std::string& getDenominator() const;
528 void setDenominator(const std::string& denominator);
529
535 const std::string& getOffset() const;
542 void setOffset(const std::string& offset);
543
544public:
549 using RefUnits = std::vector<RefUnit>;
555 const RefUnits& getRefUnits() const;
556
563 void addRefUnit(const RefUnit& ref_unit);
569 void removeRefUnit(const RefUnit& ref_unit);
570
571private:
572 void notify(ModelEventCode code,
574 const std::string& additional_info);
575
576private:
577 std::string _numerator = {};
578 std::string _denominator = {};
579 std::string _offset = {};
580 RefUnits _ref_units;
581};
582
583} // namespace datamodel
584} // namespace dd
585} // namespace ddl
586
587#endif // DD_DATA_MODEL_UNITS_H_INCLUDED
void setDescription(const std::string &description)
Set the Description.
BaseUnit & operator=(const BaseUnit &)=default
copy assignment operator
BaseUnit(const BaseUnit &)=default
copy CTOR
void setName(const std::string &name) override
Set the Name.
BaseUnit(BaseUnit &&)=default
move CTOR
void setSymbol(const std::string &symbol)
Set the Symbol.
const std::string & getDescription() const
Get the Description.
BaseUnit & operator=(BaseUnit &&)=default
move assignment operator
TypeOfUnit getTypeOfUnit() const override
Get the Type Of Unit.
const std::string & getSymbol() const
Get the Symbol.
bool operator==(const BaseUnit &other) const
equality operator.
BaseUnit()
CTOR.
Definition datamodel_units.h:114
bool operator!=(const BaseUnit &other) const
non equality operator.
virtual ~BaseUnit()=default
DTOR.
BaseUnit(std::string name, std::string symbol, std::string description={})
CTOR.
UnitBase & operator=(const UnitBase &)=default
copy assignment operator
UnitBase(const UnitBase &)=default
copy CTOR
virtual ~UnitBase()=default
DTOR.
virtual void setName(const std::string &name)
Set the Name.
UnitBase(UnitBase &&)=default
move CTOR
virtual TypeOfUnit getTypeOfUnit() const =0
Get the Type Of Unit.
UnitBase & operator=(UnitBase &&)=default
move assignment operator
std::string _name
the name
Definition datamodel_units.h:98
UnitBase(std::string name)
CTOR.
UnitBase()=default
default CTOR
const std::string & getName() const
Get the Name.
UnitPrefix(UnitPrefix &&)=default
move CTOR
void setName(const std::string &name)
Set the Name.
bool operator!=(const UnitPrefix &other) const
non equality operator.
UnitPrefix(const UnitPrefix &)=default
copy CTOR
void setPower(int32_t power)
Set the Power.
const std::string & getName() const
Get the Name.
UnitPrefix & operator=(UnitPrefix &&)=default
move assignment operator
const std::string & getSymbol() const
Get the Symbol.
virtual ~UnitPrefix()=default
DTOR.
UnitPrefix(std::string name, std::string symbol, int32_t power)
CTOR.
UnitPrefix & operator=(const UnitPrefix &)=default
copy assignment operator
int32_t getPower() const
Get the Power.
void setSymbol(const std::string &symbol)
Set the Symbol.
bool operator==(const UnitPrefix &other) const
equality operator.
UnitPrefix()
default CTOR
Definition datamodel_units.h:227
datamodel for the refUnit
Definition datamodel_units.h:377
RefUnit & operator=(RefUnit &&)=default
move assignment operator
RefUnit(RefUnit &&)=default
move CTOR
bool operator==(const RefUnit &other) const
equality operator.
RefUnit(const RefUnit &)=default
copy CTOR
int32_t getPower() const
Get the Power.
RefUnit()
default CTOR
Definition datamodel_units.h:383
RefUnit(std::string unit_name, int32_t power, std::string prefix_name)
CTOR.
const std::string & getPrefixName() const
Get the Prefix Name.
const std::string & getUnitName() const
Get the Unit Name.
RefUnit & operator=(const RefUnit &)=default
copy assignment operator
bool operator!=(const RefUnit &other) const
non equality operator.
void setDenominator(const std::string &denominator)
Set the Denominator.
void setNumerator(const std::string &numerator)
Set the Numerator object.
void setName(const std::string &name) override
Set the Name.
Unit(Unit &&)=default
move CTOR
TypeOfUnit getTypeOfUnit() const override
Get the Type Of Unit.
void removeRefUnit(const RefUnit &ref_unit)
remove the refunit
const std::string & getDenominator() const
Get the Denominator.
void addRefUnit(const RefUnit &ref_unit)
adding a refunit
std::vector< RefUnit > RefUnits
definiton of the container for the RefUnits
Definition datamodel_units.h:549
Unit & operator=(Unit &&)=default
move assignment operator
const std::string & getNumerator() const
Get the Numerator.
void setOffset(const std::string &offset)
Set the Offset.
bool operator!=(const Unit &other) const
non equality operator.
Unit(std::string name, std::string numerator, std::string denominator, std::string offset, const std::vector< RefUnit > &ref_units={})
CTOR.
Unit & operator=(const Unit &)=default
copy assignment operator
Unit(const Unit &)=default
copy CTOR
const RefUnits & getRefUnits() const
return the refUnits container
const std::string & getOffset() const
Get the Offset.
virtual ~Unit()=default
DTOR.
bool operator==(const Unit &other) const
equality operator.
definition of the datamodel namespace
Definition datamodel_base.h:28
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
ModelSubjectUtility< T, TypeAccessMapEventCode > TypeAccessMapSubject
helper template to observe map content.
Definition access_map.h:61
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
definition of the ddl namespace
Definition codec.h:21