LRAUV  revA
Unit.h
Go to the documentation of this file.
1 
9 #ifndef UNIT_H_
10 #define UNIT_H_
11 
12 #include "data/BinaryDataType.h"
13 
14 class DataValue;
15 
16 class BaseUnit;
17 
24 class Unit
25 {
26 
27 public:
28 
30  Unit( const char* name, const char* abbreviation, const BaseUnit& baseUnit,
31  const double toSiMultiplier = 1.0, const double toSiAddend = 0.0 );
32 
34  Unit( const char* name, const char* abbreviation,
35  const BinaryDataType defaultDataType = NO_TYPE );
36 
37  virtual ~Unit();
38 
39  const double getScaled( const double& siValue ) const;
40  const int getScaled( const int siValue ) const;
41  const double getSI( const double& scaledValue ) const;
42  const int getSI( const int scaledValue ) const;
43 
44  void toScaled( double& siValue ) const;
45  void toScaled( int& siValue ) const;
46  void toSI( double& scaledValue ) const;
47  void toSI( int& scaledValue ) const;
48 
49  DataValue* dataValue( const BinaryDataType dataType = NO_TYPE ) const;
50 
51  DataValue* dataValue( const bool& assignFrom,
52  const BinaryDataType dataType = NO_TYPE ) const;
53 
54  DataValue* dataValue( const unsigned char& assignFrom,
55  const BinaryDataType dataType = NO_TYPE ) const;
56 
57  DataValue* dataValue( const int& assignFrom,
58  const BinaryDataType dataType = NO_TYPE ) const;
59 
60  DataValue* dataValue( const float& assignFrom,
61  const BinaryDataType dataType = NO_TYPE ) const;
62 
63  DataValue* dataValue( const double& assignFrom,
64  const BinaryDataType dataType = NO_TYPE ) const;
65 
66  bool operator== ( const Unit& unit ) const;
67  bool operator!= ( const Unit& unit ) const;
68 
69  DataValue* operator()( const BinaryDataType dataType = NO_TYPE ) const
70  {
71  return dataValue( dataType );
72  }
73 
74  DataValue* operator()( const bool& assignFrom,
75  const BinaryDataType dataType = NO_TYPE ) const
76  {
77  return dataValue( assignFrom, dataType );
78  }
79 
80  DataValue* operator()( const unsigned char& assignFrom,
81  const BinaryDataType dataType = NO_TYPE ) const
82  {
83  return dataValue( assignFrom, dataType );
84  }
85 
86  DataValue* operator()( const int& assignFrom,
87  const BinaryDataType dataType = NO_TYPE ) const
88  {
89  return dataValue( assignFrom, dataType );
90  }
91 
92  DataValue* operator()( const float& assignFrom,
93  const BinaryDataType dataType = NO_TYPE ) const
94  {
95  return dataValue( assignFrom, dataType );
96  }
97 
98  DataValue* operator()( const double& assignFrom,
99  const BinaryDataType dataType = NO_TYPE ) const
100  {
101  return dataValue( assignFrom, dataType );
102  }
103 
104  const char* getAbbreviation( void ) const
105  {
106  return abbreviation_;
107  }
108  const char* getName( void ) const
109  {
110  return name_;
111  }
112  const Unit& getBaseUnit( void ) const
113  {
114  return baseUnit_;
115  }
117  {
118  return defaultDataType_;
119  }
120 
121 protected:
122 
123  const char* name_;
124  const char* abbreviation_;
125  const Unit& baseUnit_;
127  double toSiAddend_;
133 
134 private:
135  // Note that the copy constructor below is private and not given a body.
136  // Any attempt to call it will return a compiler error.
137  Unit( const Unit& old ); // disallow copy constructor
138 
139 };
140 
141 class BaseUnit : public Unit
142 {
143 public:
145  BaseUnit( const char* name, const char* abbreviation,
146  const BinaryDataType defaultDataType = NO_TYPE )
147  : Unit( name, abbreviation, defaultDataType ) {}
148 };
149 
150 #endif /*UNITS_H_*/
BinaryDataType
These are binary type identifiers for serializing and unserializing The syntax below handles up to 16...
Definition: BinaryDataType.h:39
const BinaryDataType getDefaultDataType() const
Definition: Unit.h:116
const BinaryDataType defaultDataType_
Definition: Unit.h:126
const Unit & getBaseUnit(void) const
Definition: Unit.h:112
Unit(const char *name, const char *abbreviation, const BaseUnit &baseUnit, const double toSiMultiplier=1.0, const double toSiAddend=0.0)
General unit constructor.
Definition: Unit.cpp:30
DataValue * operator()(const int &assignFrom, const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:86
DataValue * operator()(const double &assignFrom, const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:98
double fromSiAddend_
Definition: Unit.h:129
const double getScaled(const double &siValue) const
Definition: Unit.cpp:63
const char * abbreviation_
Definition: Unit.h:124
Definition: Unit.h:141
A DataValue is an abstract base class for a data value and associated engineering units of the value...
Definition: DataValue.h:35
void toSI(double &scaledValue) const
Definition: Unit.cpp:104
const char * name_
Definition: Unit.h:123
const Unit & baseUnit_
Definition: Unit.h:125
bool operator!=(const Unit &unit) const
Definition: Unit.cpp:128
Definition: BinaryDataType.h:41
double toSiMultiplier_
Definition: Unit.h:128
bool needSiMultiplier_
Definition: Unit.h:132
DataValue * operator()(const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:69
Contains the BinaryDataType enumeration.
const char * getAbbreviation(void) const
Definition: Unit.h:104
DataValue * dataValue(const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.cpp:133
bool needSiAddend_
Definition: Unit.h:131
bool operator==(const Unit &unit) const
Definition: Unit.cpp:121
DataValue * operator()(const float &assignFrom, const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:92
double fromSiMultiplier_
Definition: Unit.h:130
const char * getName(void) const
Definition: Unit.h:108
BaseUnit(const char *name, const char *abbreviation, const BinaryDataType defaultDataType=NO_TYPE)
Base unit constructor.
Definition: Unit.h:145
virtual ~Unit()
Definition: Unit.cpp:60
void toScaled(double &siValue) const
Definition: Unit.cpp:87
double toSiAddend_
Definition: Unit.h:127
Code that represents an engineering unit.
Definition: Unit.h:24
const double getSI(const double &scaledValue) const
Definition: Unit.cpp:75
DataValue * operator()(const bool &assignFrom, const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:74
DataValue * operator()(const unsigned char &assignFrom, const BinaryDataType dataType=NO_TYPE) const
Definition: Unit.h:80