LRAUV  revA
Double.h
Go to the documentation of this file.
1 
10 #ifndef DOUBLE_H_
11 #define DOUBLE_H_
12 
13 #ifndef NAN
14 #define NAN ( nan( "" ) )
15 #endif
16 
17 #include "DataValue.h"
18 
19 class RingBufferVoid;
20 
36 class Double : public DataValue
37 {
38 public:
39 
41  Double( const Unit& unit, double value, bool scaleValue = true );
42 
44  Double( const Unit& unit, const void *binary );
45 
47  virtual ~Double()
48  {}
49  ;
50 
52  void* operator new( size_t size );
53 
55  void operator delete( void* p );
56 
58  Double* copy() const;
59 
61  virtual void minus( const DataValue* rhs, DataValue* assignTo ) const;
62 
64  virtual void times( const double rhs, DataValue* assignTo ) const;
65 
67  virtual double absDiff( const DataValue* rhs ) const;
68 
70  virtual bool copyTo( const Unit& unit, unsigned char& assignTo ) const;
71 
73  virtual bool copyTo( const Unit& unit, double& assignTo ) const;
74 
76  virtual bool copyTo( const Unit& unit, double& assignTo, unsigned int dim ) const
77  {
78  return copyTo( unit, assignTo );
79  }
80 
82  virtual bool copyTo( const Unit& unit, float& assignTo ) const;
83 
85  virtual bool copyTo( const Unit& unit, int& assignTo ) const;
86 
88  virtual int compare( const Unit& unit, const unsigned char& compareTo ) const;
89 
91  virtual int compare( const Unit& unit, const double& compareTo ) const;
92 
94  virtual int compare( const Unit& unit, const float& compareTo ) const;
95 
97  virtual int compare( const Unit& unit, const int& compareTo ) const;
98 
100  virtual int compare( const DataValue& compareTo ) const;
101 
103  virtual bool equals( const Unit& unit, const unsigned char& compareTo ) const;
104 
106  virtual bool equals( const Unit& unit, const double& compareTo ) const;
107 
109  virtual bool equals( const Unit& unit, const float& compareTo ) const;
110 
112  virtual bool equals( const Unit& unit, const int& compareTo ) const;
113 
115  virtual bool equals( const DataValue& compareTo ) const;
116 
119  virtual bool equalsForStorage( const double& compareTo ) const;
120 
122  virtual bool isNaN();
123 
125  virtual bool setFrom( const Unit& unit, unsigned char value );
126 
128  virtual bool setFrom( const Unit& unit, double value );
129 
131  virtual bool setFrom( const Unit& unit, float value );
132 
134  virtual bool setFrom( const Unit& unit, int value );
135 
137  virtual bool setFrom( const DataValue& value );
138 
139  // as a Str
140  virtual Str toString( const Unit& unit ) const;
141 
145  virtual unsigned int toStream( OutStream& outStream ) const;
146 
150  static unsigned int ToBinary( const double& value, unsigned char *buffer, unsigned int maxlen );
151 
155  virtual void fromBinary( const void *buffer );
156 
157 protected:
158 
160  Double();
161 
162  double value_;
163 
166 
169  {
170  public:
171  virtual ~StaticDestructor();
172  };
173 
176 
177 };
178 
179 #endif /*DOUBLE_H_*/
virtual bool equalsForStorage(const double &compareTo) const
A quick equality check used to see if value has changed enough to matter in logging (useful for reduc...
Definition: Double.cpp:193
virtual bool setFrom(const Unit &unit, unsigned char value)
set from unsigned char value
Definition: Double.cpp:199
virtual void fromBinary(const void *buffer)
Load the data from the a binary representation in the buffer Typically just a memcopy of the variable...
Definition: Double.cpp:293
Wraps a double precision (8-byte) floating point number and unit for storage in a DataElement...
Definition: Double.h:36
Double * copy() const
Return a pointer to a new copy.
Definition: Double.cpp:69
virtual void times(const double rhs, DataValue *assignTo) const
Multiplication by a double to yield another DataValue.
Definition: Double.cpp:85
virtual bool equals(const Unit &unit, const unsigned char &compareTo) const
Equality test with with unsigned char.
Definition: Double.cpp:160
static unsigned int ToBinary(const double &value, unsigned char *buffer, unsigned int maxlen)
Convert the specified value to a binary representation in the buffer Typically just a memcopy of the ...
Definition: Double.cpp:283
Double()
Protected Empty constructor for use by DataEntry class.
Definition: Double.cpp:299
virtual int compare(const Unit &unit, const unsigned char &compareTo) const
Comparison with unsigned char.
Definition: Double.cpp:130
Makes sure that mallocRing_s is deleted on shutdown.
Definition: Double.h:168
virtual bool isNaN()
Returns true if the number is not a number.
Definition: Double.cpp:211
virtual double absDiff(const DataValue *rhs) const
Return the absolute value of this difference from another DataValue.
Definition: Double.cpp:91
A DataValue is an abstract base class for a data value and associated engineering units of the value...
Definition: DataValue.h:35
virtual ~Double()
Destructor.
Definition: Double.h:47
static RingBufferVoid * MallocRing_
Declared as a pointer to avoid including RingBuffer.h header here.
Definition: Double.h:165
virtual bool copyTo(const Unit &unit, double &assignTo, unsigned int dim) const
Copy n-dimensional value to double.
Definition: Double.h:76
Replacement for standard template class string.
Definition: Str.h:12
virtual void minus(const DataValue *rhs, DataValue *assignTo) const
Subtraction of another DataValue to yield another DataValue.
Definition: Double.cpp:75
static Double::StaticDestructor StaticDestructor_
Static instance of StaticDestructor.
Definition: Double.h:175
virtual bool copyTo(const Unit &unit, unsigned char &assignTo) const
Copy value to unsigned char.
Definition: Double.cpp:102
Contains the DataValue class definition.
This is a very abstract class that can be implemented by classes that want to send stream output...
Definition: OutStream.h:41
virtual unsigned int toStream(OutStream &outStream) const
Send the data value to the indicated stream.
Definition: Double.cpp:275
Thread-safe ring buffer for storing void pointers.
Definition: RingBuffer.h:36
Code that represents an engineering unit.
Definition: Unit.h:24
virtual ~StaticDestructor()
Definition: Double.cpp:19
virtual Str toString() const
Definition: DataValue.h:147
double value_
Definition: Double.h:162