34#include <data/QuantitySelector.h>
37#include <drain/util/ReferenceMap.h>
38#include <drain/util/Range.h>
40#include "EncodingODIM.h"
51class Quantity :
public std::map<char,EncodingODIM> {
56 typedef std::map<char,EncodingODIM>
map_t;
59 typedef std::list<EncodingODIM>
list_t;
103 double undetectValue = std::numeric_limits<double>::signaling_NaN());
114 double undetectValue = std::numeric_limits<double>::signaling_NaN());
130 physicalRange(quantity.physicalRange),
154 void addEncodings(
const list_t & l);
164 bool isApplicable(
const std::string & key){
189 void setZero(
const std::string & value);
194 undetectValue = std::numeric_limits<double>::signaling_NaN();
207 physicalRange.set(min, max);
211 std::ostream &
toStream(std::ostream & ostr)
const;
217std::ostream & operator<<(std::ostream & ostr,
const Quantity & q){
218 return q.toStream(ostr);
bool test(const std::string &key, bool defaultResult=true) const
Check if key is accepted.
Definition StringMatcherList.h:249
Structure for data storage type, scaling and marker codes. Does not contain quantity.
Definition EncodingODIM.h:70
Structure for defining quantity.
Definition Quantity.h:51
void setZero(double value)
Set a value to be used like a real measurement, for example in interpolation.
Definition Quantity.h:181
void setPhysicalRange(double min, double max=std::numeric_limits< double >::max())
Sets absolute or typical range of this quantity.
Definition Quantity.h:203
Quantity(const Quantity &quantity)
Copy constructor.
Definition Quantity.h:125
std::list< EncodingODIM > list_t
List type applicable in constructors.
Definition Quantity.h:59
const EncodingODIM & get(char typecode='\0') const
Retrieve the scaling for a given storage type.
Definition Quantity.cpp:168
double undetectValue
A physical value corresponding a very small (unmeasurable) value has been defined.
Definition Quantity.h:80
std::string name
Container supporting constructors.
Definition Quantity.h:64
std::map< char, EncodingODIM > map_t
Container for default encodings.
Definition Quantity.h:56
QuantitySelector keySelector
Collection of quantities that can be similarly scaled and encoded.
Definition Quantity.h:69
bool hasUndetectValue() const
True, if a value corresponding a very small (unmeasurable) value has been defined.
Definition Quantity.h:170
std::ostream & toStream(std::ostream &ostr) const
Print declared encodings (storage types and scalings)
Definition Quantity.cpp:200
Quantity(const std::string &name="", const QuantitySelector &compatibleVariants={}, const drain::Range< double > &range={}, char defaultType='\0', const list_t &l={}, double undetectValue=std::numeric_limits< double >::signaling_NaN())
Default constructor.
Definition Quantity.cpp:56
void unsetZero()
Confirm that no value should be used as a substitute of undetected value.
Definition Quantity.h:193
char defaultType
Default storage type.
Definition Quantity.h:72
EncodingODIM & set(char typecode)
Declare encoding (a storage type and scaling) for this quantity.
Definition Quantity.cpp:151
Definition DataSelector.cpp:44