#include "GDCore/Serialization/SerializerValue.h" #include "GDCore/CommonTools.h" namespace gd { SerializerValue::SerializerValue() : isUnknown(true), isBoolean(false), isString(false), isInt(false), isDouble(false), booleanValue(false), intValue(0), doubleValue(0) {} SerializerValue::SerializerValue(bool val) : isUnknown(true), isBoolean(false), isString(false), isInt(false), isDouble(false), booleanValue(false), intValue(0), doubleValue(0) { SetBool(val); } SerializerValue::SerializerValue(const gd::String &val) : isUnknown(true), isBoolean(false), isString(false), isInt(false), isDouble(false), booleanValue(false), intValue(0), doubleValue(0) { SetString(val); } SerializerValue::SerializerValue(int val) : isUnknown(true), isBoolean(false), isString(false), isInt(false), isDouble(false), booleanValue(false), intValue(0), doubleValue(0) { SetInt(val); } SerializerValue::SerializerValue(double val) : isUnknown(true), isBoolean(false), isString(false), isInt(false), isDouble(false), booleanValue(false), intValue(0), doubleValue(0) { SetDouble(val); } bool SerializerValue::GetBool() const { if (isString || isUnknown) return stringValue != "false"; else if (isInt) return intValue != 0; else if (isDouble) return doubleValue != 0.0; return booleanValue; } gd::String SerializerValue::GetString() const { if (isBoolean) return booleanValue ? gd::String("true") : gd::String("false"); else if (isInt) return gd::String::From(intValue); else if (isDouble) return gd::String::From(doubleValue); else if (isUnknown) return stringValue; return stringValue; } int SerializerValue::GetInt() const { if (isBoolean) return booleanValue ? 1 : 0; else if (isString || isUnknown) return stringValue.To(); else if (isDouble) return doubleValue; return intValue; } double SerializerValue::GetDouble() const { if (isBoolean) return booleanValue ? 1 : 0; else if (isString || isUnknown) return stringValue.To(); else if (isInt) return intValue; return doubleValue; } void SerializerValue::Set(const gd::String &val) { isUnknown = true; isBoolean = false; isString = false; isInt = false; isDouble = false; stringValue = val; } void SerializerValue::SetBool(bool val) { isUnknown = false; isBoolean = true; isString = false; isInt = false; isDouble = false; booleanValue = val; } void SerializerValue::SetString(const gd::String &val) { isUnknown = false; isBoolean = false; isString = true; isInt = false; isDouble = false; stringValue = val; } void SerializerValue::SetInt(int val) { isUnknown = false; isBoolean = false; isString = false; isInt = true; isDouble = false; intValue = val; } void SerializerValue::SetDouble(double val) { isUnknown = false; isBoolean = false; isString = false; isInt = false; isDouble = true; doubleValue = val; } } // namespace gd