35 #ifndef _Wolframe_TYPES_VARIANT_HPP_INCLUDED
36 #define _Wolframe_TYPES_VARIANT_HPP_INCLUDED
38 #include <boost/cstdint.hpp>
52 class CustomDataValue;
55 class CustomDataInitializer;
93 static const char* ar[] = {
"null",
"custom",
"timestamp",
"bignumber",
"double",
"int",
"uint",
"bool",
"string",
"array",
"struct",
"indirection",
"unresolved"};
257 bool flags(
Flags flags_)
const {
return ((
unsigned char)
m_flags & (
unsigned char)flags_) == (
unsigned char)flags_;}
263 void initString(
const char* str_, std::size_t strsize_);
VariantConst(boost::int32_t o)
Definition: variant.hpp:298
Type
Type of the variant.
Definition: variant.hpp:70
bool operator==(const Variant &o) const
Compare data with conversion (value with different types is converted first)
Definition: variant.hpp:183
const Data & data() const
Get the internal representation of the data of this.
Definition: variant.hpp:193
void clear()
Reseting the content of this.
Definition: variant.hpp:343
VariantConst & operator=(boost::int32_t o)
Definition: variant.hpp:320
VariantConst(const Variant &o)
Definition: variant.hpp:290
VariantConst & operator=(const VariantConst &o)
Definition: variant.hpp:313
Variant & operator=(const boost::int64_t &o)
Definition: variant.hpp:161
Variant(boost::int16_t o)
Definition: variant.hpp:139
Application wide definitions of integer number value types.
value is a reference that is not owned and freed by this)
Definition: variant.hpp:85
VariantConst & operator=(const types::DateTime &o)
Definition: variant.hpp:327
union _Wolframe::types::Variant::Data::@18 dim
dimension and metadata
const char * typeName() const
Get the type name of 'this' as string constant for logging.
Definition: variant.hpp:98
VariantConst(boost::uint16_t o)
Definition: variant.hpp:301
VariantConst & operator=(const boost::uint64_t &o)
Definition: variant.hpp:319
Variant(const types::CustomDataValue &o)
Definition: variant.hpp:147
bool flags(Flags flags_) const
Definition: variant.hpp:257
void * Ref
reserved for structures (module VariantStruct)
Definition: variant.hpp:120
double Double
floating point value as double precision float
Definition: variant.hpp:113
bool initialized() const
Test if this value is initialized.
Definition: variant.hpp:222
date and time value with a precision down to microseconds
Definition: variant.hpp:74
Variant & operator=(boost::int32_t o)
Definition: variant.hpp:163
Variant(const types::CustomDataType *typ, const types::CustomDataInitializer *dsc=0)
Definition: variant.hpp:145
value is initialized (meaning depends on the user of this value)
Definition: variant.hpp:84
unsigned char m_flags
Definition: variant.hpp:279
Initializer for a custom data value.
Definition: customDataType.hpp:94
bool atomic() const
Test if this value is atomic (not VariantStruct or VariantIndirection)
Definition: variant.hpp:235
VariantConst & operator=(const types::CustomDataValue &o)
Definition: variant.hpp:325
Variant(const char *o, std::size_t n)
Definition: variant.hpp:143
Data::Int Int
signed integer value
Definition: variant.hpp:114
Variant & operator=(double o)
Definition: variant.hpp:158
Type for representing big numbers as binary coded decimal (BCD) numbers.
Definition: bignumber.hpp:49
Variant & operator=(const boost::uint64_t &o)
Definition: variant.hpp:162
~Variant()
Destructor.
Definition: variant.hpp:153
VariantConst & operator=(bool o)
Definition: variant.hpp:314
bool operator<(const Variant &o) const
Definition: variant.hpp:188
Variant & operator=(boost::uint32_t o)
Definition: variant.hpp:164
void initConstCopy(const Variant &o)
CustomDataValue * customref()
Get the pointer to the custom data object (throws for non custom data type)
Definition: variant.hpp:203
VariantConst & operator=(boost::uint32_t o)
Definition: variant.hpp:321
Data::UInt Timestamp
timestamp (DateTime) value
Definition: variant.hpp:116
void initBigNumber(const types::BigNumber &num)
value undefined (NULL)
Definition: variant.hpp:72
Variant & operator=(bool o)
Definition: variant.hpp:157
ostream & operator<<(ostream &os, const _Wolframe::types::Variant &o)
Output stream operators for logging etc.
VariantConst(boost::int16_t o)
Definition: variant.hpp:300
VariantConst & operator=(float o)
Definition: variant.hpp:316
VariantConst & operator=(const types::BigNumber &o)
Definition: variant.hpp:326
void init(const types::BigNumber &o)
Definition: variant.hpp:336
Variant(boost::int32_t o)
Definition: variant.hpp:137
Data::UInt touint() const
Flags
Definition: variant.hpp:82
VariantConst & operator=(boost::int16_t o)
Definition: variant.hpp:322
std::size_t size
size of a string - different meaning for structures (module VariantStruct)
Definition: variant.hpp:125
Data type for normalized date time (absolute time without time zone info)
Definition: datetime.hpp:55
Variant(const boost::int64_t &o)
Definition: variant.hpp:135
Custom data value.
Definition: customDataType.hpp:65
Variant & operator=(boost::int16_t o)
Definition: variant.hpp:165
Variant(bool o)
Definition: variant.hpp:131
VariantConst & operator=(const Variant &o)
Assignment operator, keeping the initialization flag of this.
Definition: variant.hpp:312
Variant(const types::DateTime &o)
Definition: variant.hpp:149
void setFlags(Flags flags_, bool v=true)
Definition: variant.hpp:258
#define _WOLFRAME_UINTEGER
Definition: integer.hpp:42
C++ int.
Definition: variant.hpp:77
VariantConst(float o)
Definition: variant.hpp:294
Variant(Type type_)
Constructor.
Definition: variant.hpp:129
std::wstring towstring() const
void move(Variant &o)
Move value from 'o' to this.
Internal representation of this value.
Definition: variant.hpp:105
VariantConst(const types::BigNumber &o)
Definition: variant.hpp:303
CustomDataValue * Custom
custom data type reference
Definition: variant.hpp:118
big BCD fixed point number in the range of 1E-32767 to 1E+32768
Definition: variant.hpp:75
VariantConst(const std::string &o)
Definition: variant.hpp:306
Forward declaration.
Definition: variant.hpp:65
VariantConst & operator=(boost::uint16_t o)
Definition: variant.hpp:323
VariantConst & operator=(double o)
Definition: variant.hpp:315
C++ double.
Definition: variant.hpp:76
Variant & operator=(const types::BigNumber &o)
Definition: variant.hpp:172
Variant(const Variant &o)
Definition: variant.hpp:148
types::BigNumber * bignumref()
Get the pointer to the big number object (throws for non big number data type)
Definition: variant.hpp:207
Variant(const boost::uint64_t &o)
Definition: variant.hpp:136
Variant value type that represents a variant copy without content ownership.
Definition: variant.hpp:286
static const char * typeName(Type i)
Get the type name as string constant for logging.
Definition: variant.hpp:91
VariantConst & operator=(const char *o)
Definition: variant.hpp:328
bool constant() const
Test if this value is constant (owned by this)
Definition: variant.hpp:227
const void * metadata
unused by base variant type - reserved for structures (module VariantStruct)
Definition: variant.hpp:124
VariantConst(const types::DateTime &o)
Definition: variant.hpp:307
void initDateTime(const types::DateTime &dt)
unsigned char m_type
Definition: variant.hpp:278
Type type() const
Get the type of this.
Definition: variant.hpp:191
Variant(const std::string &o)
Definition: variant.hpp:144
std::string tostring() const
Getter with value conversion.
VariantConst(const types::CustomDataValue &o)
Definition: variant.hpp:302
VariantConst & operator=(const std::string &o)
Definition: variant.hpp:329
Data m_data
Definition: variant.hpp:277
VariantConst()
Constructor.
Definition: variant.hpp:289
Data & data()
Definition: variant.hpp:194
Variant & operator=(const types::DateTime &o)
Definition: variant.hpp:171
void initCustom(const types::CustomDataType *typ, const CustomDataInitializer *dsc=0)
VariantConst(const char *o, std::size_t n)
Definition: variant.hpp:305
void initString(const char *str_, std::size_t strsize_)
const CustomDataValue * customref() const
Get the pointer to the custom data object (throws for non custom data type)
Definition: variant.hpp:201
Custom Data Type Definition.
Definition: customDataType.hpp:105
VariantConst(const boost::uint64_t &o)
Definition: variant.hpp:297
VariantConst(const VariantConst &o)
Definition: variant.hpp:291
void clear()
Reseting the content of this.
Definition: variant.hpp:241
void convert(Type type_)
Converting the value of this to a defined type.
Variant(boost::uint32_t o)
Definition: variant.hpp:138
Variant(float o)
Definition: variant.hpp:133
C++ bool.
Definition: variant.hpp:79
VariantConst(double o)
Definition: variant.hpp:293
union _Wolframe::types::Variant::Data::@17 value
value of the variant
Variant(boost::uint16_t o)
Definition: variant.hpp:140
#define _WOLFRAME_INTEGER
Definition: integer.hpp:41
Variant(const char *o)
Definition: variant.hpp:142
Variant & operator=(const char *o)
Definition: variant.hpp:169
void init(const char *o)
Definition: variant.hpp:333
void init(const types::CustomDataValue &o)
Definition: variant.hpp:335
void init(const char *o, std::size_t len)
Initialization as string constant.
Definition: variant.hpp:332
C++ unsigned int.
Definition: variant.hpp:78
types::BigNumber * BigNumberRef
big number data type
Definition: variant.hpp:119
int compare(const Variant &o) const
Compares two variants (implicit type conversion to the higher priority type (order of declaration in ...
VariantConst & operator=(const boost::int64_t &o)
Definition: variant.hpp:318
_WOLFRAME_UINTEGER UInt
unsigned integer type
Definition: variant.hpp:108
void initConstant(const char *o)
Definition: variant.hpp:177
void initConstant(const char *o, std::size_t l)
Initialization as string constant (Constant flag set, data not owned by this)
Type for representing strings in various encodings.
Definition: string.hpp:49
Data::Timestamp totimestamp() const
custom data type (types::CustomDataValue)
Definition: variant.hpp:73
bool operator!=(const Variant &o) const
Definition: variant.hpp:184
Data::UInt UInt
unsigned integer value
Definition: variant.hpp:115
bool defined() const
Test if this value is defined (not null)
Definition: variant.hpp:238
VariantConst(const char *o)
Definition: variant.hpp:304
~VariantConst()
Destructor.
Definition: variant.hpp:309
void init(const types::DateTime &o)
Definition: variant.hpp:337
Variant & operator=(boost::uint16_t o)
Definition: variant.hpp:166
Variant & operator=(const Variant &o)
Assignment operator, keeping the initialization flag of this.
Definition: variant.hpp:156
void setConstant(bool v=true)
Set the value to be constant.
Definition: variant.hpp:232
_WOLFRAME_INTEGER Int
signed integer type
Definition: variant.hpp:107
std::size_t size() const
Get the size of a string.
Definition: variant.hpp:219
VariantConst(bool o)
Definition: variant.hpp:292
bool operator>(const Variant &o) const
Definition: variant.hpp:185
Variant & operator=(float o)
Definition: variant.hpp:159
void initConstant(const std::string &o)
Definition: variant.hpp:176
VariantConst(const boost::int64_t &o)
Definition: variant.hpp:296
Variant & operator=(const std::string &o)
Definition: variant.hpp:170
bool operator>=(const Variant &o) const
Definition: variant.hpp:186
Variant()
Definition: variant.hpp:130
char * charptr() const
Get the pointer to the C representation of a string (throws for non string)
Definition: variant.hpp:197
char * String
pointer to the array of characters of a string
Definition: variant.hpp:117
Variant(const types::BigNumber &o)
Definition: variant.hpp:150
Variant(double o)
Definition: variant.hpp:132
void setInitialized(bool v=true)
Set the value to be initialized.
Definition: variant.hpp:224
void initCopy(const Variant &o)
VariantConst(boost::uint32_t o)
Definition: variant.hpp:299
void assign(Type type_, const Variant &o)
Assigning o to this including a conversion to a defined type.
bool Bool
boolean value
Definition: variant.hpp:112
std::size_t charsize() const
Get the size of a string (throws for non string)
Definition: variant.hpp:199
Variant & operator=(const types::CustomDataValue &o)
Definition: variant.hpp:168
bool operator<=(const Variant &o) const
Definition: variant.hpp:187
_WOLFRAME_UINTEGER Timestamp
timestamp type
Definition: variant.hpp:109
void init()
Empty initialization.
Definition: variant.hpp:340
const types::BigNumber * bignumref() const
Get the pointer to the big number object (throws for non big number data type)
Definition: variant.hpp:205
void init(const std::string &o)
Definition: variant.hpp:334