9 #if !defined(_Value_h_) 12 #include "format_string.hpp" 50 virtual value_type_t
getType()
const {
return m_type; }
64 virtual size_t getSize()
const = 0;
71 virtual std::string
toString()
const = 0;
103 :
Value(kIntegerValue)
115 :
Value(kIntegerValue)
128 , m_value(other.m_value)
129 , m_intType(other.m_intType)
138 virtual std::string
getTypeName()
const override {
return "integer"; }
145 virtual size_t getSize()
const override {
return sizeof(m_value); }
154 return (m_intType == kSignedLong || m_intType == kUnsignedLong) ? m_value : (uint32_t)m_value;
169 operator uint64_t()
const {
return m_value; }
191 if (m_intType == kUnsigned)
192 return format_string(
"%uU", (uint32_t)m_value);
193 else if (m_intType == kSigned)
194 return format_string(
"%d", (int32_t)m_value);
195 else if (m_intType == kUnsignedLong)
196 return format_string(
"%lluU", m_value);
198 return format_string(
"%lld", (int64_t)m_value);
257 , m_value(other.m_value)
279 virtual std::string
getTypeName()
const override {
return "float"; }
286 virtual size_t getSize()
const override {
return sizeof(m_value); }
300 operator double()
const {
return m_value; }
307 operator float()
const {
return static_cast<float>(m_value); }
340 virtual std::string
toString()
const override {
return format_string(
"%g", m_value); }
365 :
Value(kStringValue)
376 :
Value(kStringValue)
387 :
Value(kStringValue)
398 :
Value(kStringValue)
399 , m_value(other.m_value)
408 virtual std::string
getTypeName()
const override {
return "string"; }
415 virtual size_t getSize()
const override {
return m_value.size(); }
422 const std::string &
getString()
const {
return m_value; }
429 operator const char *()
const {
return m_value.c_str(); }
436 operator const std::string &()
const {
return m_value; }
443 operator std::string &() {
return m_value; }
450 operator const std::string *() {
return &m_value; }
457 operator std::string *() {
return &m_value; }
503 virtual std::string
toString()
const override {
return m_value; }
const std::string & getString() const
Get StringValue value.
Definition: Value.hpp:422
uint64_t m_value
The integer value.
Definition: Value.hpp:209
FloatValue & operator=(float value)
Assign operator.
Definition: Value.hpp:329
IntegerValue(const IntegerValue &other)
Copy constructor.
Definition: Value.hpp:126
virtual std::string toString() const override
Get StringValue type string representation.
Definition: Value.hpp:503
FloatValue & operator=(const FloatValue &other)
Assign operator.
Definition: Value.hpp:268
IntegerValue(uint64_t value, int_type_t type=kSigned)
Constructor.
Definition: Value.hpp:114
StringValue & operator=(const StringValue &other)
Assign operator.
Definition: Value.hpp:466
StringValue(const std::string &value)
Constructor.
Definition: Value.hpp:375
virtual size_t getSize() const override
Get IntegerValue type size.
Definition: Value.hpp:145
64-bit integer value.
Definition: Value.hpp:87
virtual Value * clone() const override
Clone FloatValue.
Definition: Value.hpp:347
virtual size_t getSize() const override
Get FloatValue type size.
Definition: Value.hpp:286
virtual std::string getTypeName() const =0
Get Value type name.
uint64_t getValue() const
This function returns value.
Definition: Value.hpp:152
virtual std::string toString() const =0
Get Value type string representation.
StringValue & operator=(const char *value)
Assign operator.
Definition: Value.hpp:492
Double floating point value.
Definition: Value.hpp:216
virtual Value * clone() const override
Clone StringValue.
Definition: Value.hpp:510
String value.
Definition: Value.hpp:358
FloatValue(const FloatValue &other)
Copy constructor.
Definition: Value.hpp:255
int_type_t m_intType
The integer type.
Definition: Value.hpp:210
double m_value
The double value.
Definition: Value.hpp:350
int_type_t
Supported sizes of integers.
Definition: Value.hpp:91
Abstract base class for values of arbitrary types.
Definition: Value.hpp:27
virtual value_type_t getType() const
Get Value type.
Definition: Value.hpp:50
virtual std::string getTypeName() const override
Get StringValue type name.
Definition: Value.hpp:408
virtual ~Value()
Destructor.
Definition: Value.hpp:43
virtual Value * clone() const =0
Clone Value.
virtual std::string getTypeName() const override
Get FloatValue type name.
Definition: Value.hpp:279
double getValue() const
This function returns value.
Definition: Value.hpp:293
virtual Value * clone() const override
Clone IntegerValue.
Definition: Value.hpp:206
Value(value_type_t theType)
Constructor.
Definition: Value.hpp:35
FloatValue(float value)
Constructor.
Definition: Value.hpp:244
int_type_t getIntType()
This function returns signed/unsigned type.
Definition: Value.hpp:162
virtual std::string toString() const override
Get FloatValue type string representation.
Definition: Value.hpp:340
virtual size_t getSize() const override
Get StringValue type size.
Definition: Value.hpp:415
IntegerValue(int_type_t type=kSigned)
Constructor.
Definition: Value.hpp:102
StringValue()
Constructor.
Definition: Value.hpp:364
FloatValue(double value)
Constructor.
Definition: Value.hpp:233
FloatValue & operator=(double value)
Assign operator.
Definition: Value.hpp:316
virtual std::string getTypeName() const override
Get IntegerValue type name.
Definition: Value.hpp:138
IntegerValue & operator=(int64_t value)
Assign operator.
Definition: Value.hpp:178
StringValue(const StringValue &other)
Copy constructor.
Definition: Value.hpp:397
StringValue & operator=(const std::string &value)
Assign operator.
Definition: Value.hpp:479
FloatValue()
Constructor.
Definition: Value.hpp:222
virtual std::string toString() const override
Get IntegerValue type string representation.
Definition: Value.hpp:189
std::string m_value
The string value.
Definition: Value.hpp:513
virtual size_t getSize() const =0
Get Value type size.
StringValue(const std::string *value)
Constructor.
Definition: Value.hpp:386