LRAUV  revA
DataValue.h
Go to the documentation of this file.
1 
10 #ifndef DATAVALUE_H_
11 #define DATAVALUE_H_
12 
13 #include "data/BinaryDataType.h"
14 #include "units/Unit.h"
15 #include "utils/Str.h"
16 
17 class OutStream;
18 
35 class DataValue
36 {
37 
38  friend class DataAccess;
39 
40 public:
41 
43  virtual ~DataValue()
44  {}
45  ;
46 
48  void operator delete( void* p );
49 
51  virtual DataValue* copy() const = 0;
52 
54  virtual void minus( const DataValue* rhs, DataValue* assignTo ) const = 0;
55 
57  virtual void times( const double rhs, DataValue* assignTo ) const = 0;
58 
60  virtual double absDiff( const DataValue* rhs ) const = 0;
61 
63  virtual bool copyTo( const Unit& unit, bool& assignTo ) const;
64 
66  virtual bool copyTo( const Unit& unit, unsigned char& assignTo ) const = 0;
67 
69  virtual bool copyTo( const Unit& unit, double& assignTo ) const = 0;
70 
72  virtual bool copyTo( const Unit& unit, float& assignTo ) const = 0;
73 
75  virtual bool copyTo( const Unit& unit, int& assignTo ) const = 0;
76 
78  virtual bool copyTo( DataValue& assignTo ) const
79  {
80  return assignTo.setFrom( *this );
81  }
82 
84  virtual int compare( const Unit& unit, const bool& compareTo ) const;
85 
87  virtual int compare( const Unit& unit, const unsigned char& compareTo ) const = 0;
88 
90  virtual int compare( const Unit& unit, const double& compareTo ) const = 0;
91 
93  virtual int compare( const Unit& unit, const float& compareTo ) const = 0;
94 
96  virtual int compare( const Unit& unit, const int& compareTo ) const = 0;
97 
99  virtual int compare( const DataValue& compareTo ) const = 0;
100 
102  virtual bool equals( const Unit& unit, const bool& compareTo ) const;
103 
105  virtual bool equals( const Unit& unit, const unsigned char& compareTo ) const = 0;
106 
108  virtual bool equals( const Unit& unit, const double& compareTo ) const = 0;
109 
111  virtual bool equals( const Unit& unit, const float& compareTo ) const = 0;
112 
114  virtual bool equals( const Unit& unit, const int& compareTo ) const = 0;
115 
117  virtual bool equals( const DataValue& compareTo ) const = 0;
118 
120  virtual bool isNaN()
121  {
122  return false;
123  }
124 
126  virtual bool setFrom( const Unit& unit, bool value );
127 
129  virtual bool setFrom( const Unit& unit, unsigned char value ) = 0;
130 
132  virtual bool setFrom( const Unit& unit, double value ) = 0;
133 
135  virtual bool setFrom( const Unit& unit, float value ) = 0;
136 
138  virtual bool setFrom( const Unit& unit, int value ) = 0;
139 
141  virtual bool setFrom( const DataValue& value ) = 0;
142 
143  // as a Str
144  virtual Str toString( const Unit& unit ) const = 0;
145 
146  // as a Str with its unit
147  virtual Str toString() const
148  {
149  return toString( getUnit() ) + " " + getUnit().getAbbreviation();
150  }
151 
155  virtual unsigned int toStream( OutStream& outStream ) const = 0;
156 
160  virtual void fromBinary( const void *buffer ) = 0;
161 
163  virtual size_t getTypeSize() const
164  {
165  return typeSize_;
166  }
167 
170  virtual BinaryDataType getBinaryType( void ) const
171  {
172  return binaryType_;
173  }
174 
175  const Unit& getUnit() const
176  {
177  return *unit_;
178  }
179 
180  const Unit& getBaseUnit() const
181  {
182  return unit_->getBaseUnit();
183  }
184 
185  void setUnit( const Unit& unit )
186  {
187  unit_ = &unit;
188  }
189 
190  void clearType()
191  {
193  }
194 
195 protected:
196 
198  DataValue( const Unit& unit, const size_t& typeSize, const BinaryDataType& binaryType )
199  : unit_( &unit ),
200  typeSize_( typeSize ),
201  binaryType_( binaryType )
202  {}
203  ;
204 
206  DataValue( const size_t& typeSize, const BinaryDataType& binaryType )
207  : unit_( NULL ),
208  typeSize_( typeSize ),
209  binaryType_( binaryType )
210  {}
211  ;
212 
213  // The base "ancestor" unit of the value stored in this DataValue
214  // All values that are read to/from this DataValue must be convertable
215  // to this unit.
216  const Unit* unit_;
217 
219  size_t typeSize_;
220 
224 
225 private:
226  // Note that the copy constructor below is private and not given a body.
227  // Any attempt to call it will return a compiler error.
228  DataValue( const DataValue& old ); // disallow copy constructor};
229 
230 };
231 
232 #endif /*DATAVALUE_H_*/
Serializable representation of DataAccessor object.
Definition: DataAccess.h:30
BinaryDataType
These are binary type identifiers for serializing and unserializing The syntax below handles up to 16...
Definition: BinaryDataType.h:39
const Unit & getUnit() const
Definition: DataValue.h:175
virtual unsigned int toStream(OutStream &outStream) const =0
Send the data value to the indicated stream.
virtual bool equals(const Unit &unit, const bool &compareTo) const
Equality test with with bool.
Definition: DataValue.cpp:98
const Unit & getBaseUnit(void) const
Definition: Unit.h:112
virtual ~DataValue()
Destructor.
Definition: DataValue.h:43
virtual void minus(const DataValue *rhs, DataValue *assignTo) const =0
Subtraction of another DataValue to yield another DataValue.
virtual double absDiff(const DataValue *rhs) const =0
Return the absolute value of this difference from another DataValue.
DataValue(const Unit &unit, const size_t &typeSize, const BinaryDataType &binaryType)
Protected Constructor for abstract base class.
Definition: DataValue.h:198
const Unit * unit_
Definition: DataValue.h:211
virtual void times(const double rhs, DataValue *assignTo) const =0
Multiplication by a double to yield another DataValue.
BinaryDataType binaryType_
constant (defined in BinaryDataType.h) representing the internal storage type
Definition: DataValue.h:223
A DataValue is an abstract base class for a data value and associated engineering units of the value...
Definition: DataValue.h:35
virtual bool setFrom(const Unit &unit, bool value)
set from bool value
Definition: DataValue.cpp:104
void setUnit(const Unit &unit)
Definition: DataValue.h:185
virtual DataValue * copy() const =0
Return a pointer to a new copy.
virtual int compare(const Unit &unit, const bool &compareTo) const
Comparison with bool.
Definition: DataValue.cpp:92
virtual void fromBinary(const void *buffer)=0
Load the data from the a binary representation in the buffer Typically just a memcopy of the variable...
Replacement for standard template class string.
Definition: Str.h:12
virtual bool copyTo(const Unit &unit, bool &assignTo) const
Copy value to bool.
Definition: DataValue.cpp:80
Definition: BinaryDataType.h:41
virtual bool isNaN()
Returns true if the number is not a number.
Definition: DataValue.h:120
void clearType()
Definition: DataValue.h:190
Contains the BinaryDataType enumeration.
const char * getAbbreviation(void) const
Definition: Unit.h:104
virtual bool copyTo(DataValue &assignTo) const
Copy value to another dataValue.
Definition: DataValue.h:78
const Unit & getBaseUnit() const
Definition: DataValue.h:180
Contains the Unit class declaration.
This is a very abstract class that can be implemented by classes that want to send stream output...
Definition: OutStream.h:41
virtual BinaryDataType getBinaryType(void) const
Returns a constant (defined in BinaryDataType.h) representing the internal storage type...
Definition: DataValue.h:170
Code that represents an engineering unit.
Definition: Unit.h:24
virtual size_t getTypeSize() const
Returns the size of the internal storage type (i.e. sizeof(type))
Definition: DataValue.h:163
virtual Str toString() const
Definition: DataValue.h:147
size_t typeSize_
size of the internal storage type (i.e. sizeof(type))
Definition: DataValue.h:219
DataValue(const size_t &typeSize, const BinaryDataType &binaryType)
Protected unitless constructor for use via DataEntry class.
Definition: DataValue.h:206