--- /dev/null
+#include "OptionalValue.h"\r
+\r
+#include "Constants.h"\r
+\r
+namespace Databoard {\r
+ namespace Value {\r
+ OptionalValue::OptionalValue(Databoard::Type::DataType* dataBoard) : Value(dataBoard)\r
+ {\r
+ this->value = NULL;\r
+ }\r
+\r
+ OptionalValue::~OptionalValue()\r
+ {\r
+ if(value != NULL)\r
+ {\r
+ delete value;\r
+ \r
+ value = NULL;\r
+ }\r
+ }\r
+\r
+ void OptionalValue::setValue(Value* value)\r
+ {\r
+ if(this->value != NULL)\r
+ {\r
+ delete this->value;\r
+ \r
+ this->value = NULL;\r
+ }\r
+\r
+ this->value = value;\r
+ }\r
+\r
+ void OptionalValue::setNoValue()\r
+ {\r
+ if(value != NULL)\r
+ {\r
+ delete value;\r
+ \r
+ value = NULL;\r
+ }\r
+ }\r
+\r
+ Value* OptionalValue::getValue()\r
+ {\r
+ return value;\r
+ }\r
+\r
+ bool OptionalValue::hasValue()\r
+ {\r
+ return (value != NULL);\r
+ }\r
+\r
+ std::string OptionalValue::writeOut(int /*indent*/)\r
+ {\r
+ std::string s;\r
+\r
+ if(value != NULL)\r
+ {\r
+ s += value->writeOut();\r
+ }\r
+\r
+ return s;\r
+ }\r
+\r
+ bool OptionalValue::equals(const Value* other)\r
+ {\r
+ OptionalValue* o = (OptionalValue*)other;\r
+\r
+ if(hasValue() != o->hasValue())\r
+ {\r
+ return hasValue();\r
+ }\r
+\r
+ return value->equals(o->value);\r
+ }\r
+\r
+ std::string OptionalValue::isValid()\r
+ {\r
+ if(hasValue() == true)\r
+ {\r
+ return value->isValid();\r
+ }\r
+\r
+ return STR_EMPTY;\r
+ }\r
+ }\r
+}\r