1 #include "DoubleValue.h"
\r
3 #include "DoubleType.h"
\r
4 #include "Constants.h"
\r
15 namespace Databoard {
\r
17 DoubleValue::DoubleValue(Databoard::Type::DataType* dataBoard) : Value(dataBoard)
\r
21 DoubleValue::~DoubleValue()
\r
25 void DoubleValue::setValue(double value)
\r
27 Databoard::Type::DoubleType* doubleType = dynamic_cast<Databoard::Type::DoubleType*>(dataBoard);
\r
29 if(doubleType != NULL)
\r
31 this->value = value;
\r
35 double DoubleValue::getValue()
\r
40 std::string DoubleValue::writeOut(int /*indent*/)
\r
44 std::stringstream oss;
\r
46 //oss.setf(std::ios::fixed);
\r
55 bool DoubleValue::equals(const Value* other)
\r
57 DoubleValue* o = (DoubleValue*)other;
\r
59 return (this->value < o->value);
\r
62 std::string DoubleValue::isValid()
\r
64 if(dataBoard == NULL)
\r
66 return "There is no datatype.";
\r
69 Databoard::Type::DoubleType* doubleType = (Databoard::Type::DoubleType*)dataBoard;
\r
71 if(doubleType->getRange() == NULL)
\r
76 double minValue = doubleType->minValue();
\r
77 double maxValue = doubleType->maxValue();
\r
79 if(doubleType->getRange()->getLower()->getInclusive() == true)
\r
81 if(value < minValue)
\r
83 return std::string("DoubleValue: ") + STR_ERROR_VALUE_SMALL;
\r
86 else //if(integerType->getRange()->getLower()->getInclusive() == false)
\r
88 if(value < minValue || (abs(value-minValue) < DBL_EPSILON))
\r
90 return std::string("DoubleValue: ") + STR_ERROR_VALUE_SMALL;
\r
94 if(doubleType->getRange()->getUpper()->getInclusive() == true)
\r
96 if(value > maxValue)
\r
98 return std::string("DoubleValue: ") + STR_ERROR_VALUE_LARGE;
\r
101 else //if(integerType->getRange()->getUpper()->getInclusive() == false)
\r
103 double d1 = abs(value-maxValue);
\r
104 double d2 = DBL_EPSILON;
\r
106 if(value > maxValue || (abs(value-maxValue) < DBL_EPSILON))
\r
108 return std::string("DoubleValue: ") + STR_ERROR_VALUE_LARGE;
\r