Wolframe, 0.0.3

variant.hpp
Go to the documentation of this file.
1 /************************************************************************
2 Copyright (C) 2011 - 2014 Project Wolframe.
3 All rights reserved.
4 
5 This file is part of Project Wolframe.
6 
7 Commercial Usage
8 Licensees holding valid Project Wolframe Commercial licenses may
9 use this file in accordance with the Project Wolframe
10 Commercial License Agreement provided with the Software or,
11 alternatively, in accordance with the terms contained
12 in a written agreement between the licensee and Project Wolframe.
13 
14 GNU General Public License Usage
15 Alternatively, you can redistribute this file and/or modify it
16 under the terms of the GNU General Public License as published by
17 the Free Software Foundation, either version 3 of the License, or
18 (at your option) any later version.
19 
20 Wolframe is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24 
25 You should have received a copy of the GNU General Public License
26 along with Wolframe. If not, see <http://www.gnu.org/licenses/>.
27 
28 If you have questions regarding the use of this file, please contact
29 Project Wolframe.
30 
31 ************************************************************************/
34 
35 #ifndef _Wolframe_TYPES_VARIANT_HPP_INCLUDED
36 #define _Wolframe_TYPES_VARIANT_HPP_INCLUDED
37 #include "types/integer.hpp"
38 #include <boost/cstdint.hpp>
39 #include <string>
40 #include <cstring>
41 #include <ostream>
42 #include <stdexcept>
43 
44 namespace _Wolframe {
45 namespace types {
46 
49 class CustomDataType;
52 class CustomDataValue;
55 class CustomDataInitializer;
58 class BigNumber;
61 class DateTime;
62 
65 class Variant
66 {
67 public:
70  enum Type
71  {
72  Null,
77  Int,
78  UInt,
79  Bool,
81  };
82  enum Flags
83  {
84  Initialized =0x1,
85  Constant =0x2
86  };
87 
91  static const char* typeName( Type i)
92  {
93  static const char* ar[] = {"null","custom","timestamp","bignumber","double","int","uint","bool","string","array","struct","indirection","unresolved"};
94  return ar[ (int)i];
95  }
98  const char* typeName() const
99  {
100  return typeName( (Type)m_type);
101  }
102 
105  struct Data
106  {
110  union
111  {
112  bool Bool;
113  double Double;
117  char* String;
120  void* Ref;
121  } value;
122  union
123  {
124  const void* metadata;
125  std::size_t size;
126  } dim;
127  };
129  Variant( Type type_) {init(type_);}
130  Variant() {init();}
131  Variant( bool o) {init(Bool); m_data.value.Bool = o;}
132  Variant( double o) {init(Double); m_data.value.Double = o;}
133  Variant( float o) {init(Double); m_data.value.Double = o;}
134 
135  Variant( const boost::int64_t& o) {init(Int); m_data.value.Int = (Data::Int)o;}
136  Variant( const boost::uint64_t& o) {init(UInt); m_data.value.UInt = (Data::UInt)o;}
137  Variant( boost::int32_t o) {init(Int); m_data.value.Int = o;}
138  Variant( boost::uint32_t o) {init(UInt); m_data.value.UInt = o;}
139  Variant( boost::int16_t o) {init(Int); m_data.value.Int = o;}
140  Variant( boost::uint16_t o) {init(UInt); m_data.value.UInt = o;}
141 
142  Variant( const char* o) {initString( o, std::strlen(o));}
143  Variant( const char* o, std::size_t n) {initString( o, n);}
144  Variant( const std::string& o) {initString( o.c_str(), o.size());}
146  const types::CustomDataInitializer* dsc=0) {initCustom( typ, dsc);}
148  Variant( const Variant& o) {initCopy( o);}
151 
154 
156  Variant& operator=( const Variant& o) {bool init_=initialized(); release(); initCopy( o); setInitialized(init_); return *this;}
157  Variant& operator=( bool o) {bool init_=initialized(); release(); init(Bool); m_data.value.Bool = o; setInitialized(init_); return *this;}
158  Variant& operator=( double o) {bool init_=initialized(); release(); init(Double); m_data.value.Double = o; setInitialized(init_); return *this;}
159  Variant& operator=( float o) {bool init_=initialized(); release(); init(Double); m_data.value.Double = o; setInitialized(init_); return *this;}
160 
161  Variant& operator=( const boost::int64_t& o) {bool init_=initialized(); release(); init(Int); m_data.value.Int = (Data::Int)o; setInitialized(init_); return *this;}
162  Variant& operator=( const boost::uint64_t& o) {bool init_=initialized(); release(); init(UInt); m_data.value.UInt = (Data::UInt)o; setInitialized(init_); return *this;}
163  Variant& operator=( boost::int32_t o) {bool init_=initialized(); release(); init(Int); m_data.value.Int = o; setInitialized(init_); return *this;}
164  Variant& operator=( boost::uint32_t o) {bool init_=initialized(); release(); init(UInt); m_data.value.UInt = o; setInitialized(init_); return *this;}
165  Variant& operator=( boost::int16_t o) {bool init_=initialized(); release(); init(Int); m_data.value.Int = o; setInitialized(init_); return *this;}
166  Variant& operator=( boost::uint16_t o) {bool init_=initialized(); release(); init(UInt); m_data.value.UInt = o; setInitialized(init_); return *this;}
167 
168  Variant& operator=( const types::CustomDataValue& o) {bool init_=initialized(); release(); initCustom(o); setInitialized(init_); return *this;}
169  Variant& operator=( const char* o) {bool init_=initialized(); release(); initString( o, std::strlen(o)); setInitialized(init_); return *this;}
170  Variant& operator=( const std::string& o) {bool init_=initialized(); release(); initString( o.c_str(), o.size()); setInitialized(init_); return *this;}
171  Variant& operator=( const types::DateTime& o) {bool init_=initialized(); release(); initDateTime( o); setInitialized(init_); return *this;}
172  Variant& operator=( const types::BigNumber& o) {bool init_=initialized(); release(); initBigNumber( o); setInitialized(init_); return *this;}
173 
175  void initConstant( const char* o, std::size_t l);
176  void initConstant( const std::string& o) {initConstant( o.c_str(),o.size());}
177  void initConstant( const char* o) {initConstant( o, std::strlen(o));}
178  void initConstant( const types::CustomDataValue& o);
179  void initConstant( const types::BigNumber& o);
180  void initConstant( const types::DateTime& o);
181 
183  bool operator==( const Variant& o) const {return compare( o) == 0;}
184  bool operator!=( const Variant& o) const {int cv = compare( o); return cv != 0 && cv != -2;}
185  bool operator>( const Variant& o) const {int cv = compare( o); return cv > 0;}
186  bool operator>=( const Variant& o) const {int cv = compare( o); return cv >= 0;}
187  bool operator<=( const Variant& o) const {int cv = compare( o); return cv <= 0 && cv != -2;}
188  bool operator<( const Variant& o) const {int cv = compare( o); return cv == -1;}
189 
191  Type type() const {return (Type)m_type;}
193  const Data& data() const {return m_data;}
194  Data& data() {return m_data;}
195 
197  char* charptr() const {if (type() != String) throw std::logic_error("illegal access (type mismatch)"); return m_data.value.String;}
199  std::size_t charsize() const {if (type() != String) throw std::logic_error("illegal access (type mismatch)"); return m_data.dim.size;}
201  const CustomDataValue* customref() const {if (type() != Custom) throw std::logic_error("illegal access (type mismatch)"); return m_data.value.Custom;}
203  CustomDataValue* customref() {if (type() != Custom) throw std::logic_error("illegal access (type mismatch)"); return m_data.value.Custom;}
205  const types::BigNumber* bignumref() const {if (type() != BigNumber) throw std::logic_error("illegal access (type mismatch)"); return m_data.value.BigNumberRef;}
207  types::BigNumber* bignumref() {if (type() != BigNumber) throw std::logic_error("illegal access (type mismatch)"); return m_data.value.BigNumberRef;}
208 
210  std::string tostring() const;
211  std::wstring towstring() const;
212  double todouble() const;
213  bool tobool() const;
214  Data::Int toint() const;
215  Data::UInt touint() const;
217 
219  std::size_t size() const {return (type() == String)?m_data.dim.size:1;}
220 
222  bool initialized() const {return flags( Initialized);}
224  void setInitialized( bool v=true) {setFlags( Initialized, v);}
225 
227  bool constant() const {return flags( Constant);}
228 
232  void setConstant( bool v=true) {setFlags( Constant, v);}
233 
235  bool atomic() const {return m_type <= (unsigned char)String;}
236 
238  bool defined() const {return m_type != (unsigned char)Null;}
239 
241  void clear() {release(); init();}
242 
245  void convert( Type type_);
246 
250  void assign( Type type_, const Variant& o);
251 
254  void move( Variant& o);
255 
256 protected:
257  bool flags( Flags flags_) const {return ((unsigned char)m_flags & (unsigned char)flags_) == (unsigned char)flags_;}
258  void setFlags( Flags flags_, bool v=true) {if (v) m_flags = (Flags)((unsigned char)m_flags | (unsigned char)flags_); else m_flags = (Flags)((unsigned char)m_flags - ((unsigned char)m_flags & (unsigned char)flags_));}
259 
260  void init( Type type_);
261  void init();
262  void release();
263  void initString( const char* str_, std::size_t strsize_);
264  void initCustom( const types::CustomDataType* typ,
265  const CustomDataInitializer* dsc=0);
266  void initCustom( const types::CustomDataValue& o);
267  void initCopy( const Variant& o);
268  void initConstCopy( const Variant& o);
269  void initDateTime( const types::DateTime& dt);
270  void initBigNumber( const types::BigNumber& num);
271 
274  int compare( const Variant& o) const;
275 
276 protected:
278  unsigned char m_type;
279  unsigned char m_flags;
280 };
281 
282 
286 struct VariantConst :public Variant
287 {
295 
296  VariantConst( const boost::int64_t& o) :Variant(Int){m_data.value.Int = (Data::Int)o; setConstant();}
297  VariantConst( const boost::uint64_t& o) :Variant(UInt){m_data.value.UInt = (Data::UInt)o; setConstant();}
298  VariantConst( boost::int32_t o) :Variant(Int){m_data.value.Int = o; setConstant();}
299  VariantConst( boost::uint32_t o) :Variant(UInt){m_data.value.UInt = o; setConstant();}
300  VariantConst( boost::int16_t o) :Variant(Int){m_data.value.Int = o; setConstant();}
301  VariantConst( boost::uint16_t o) :Variant(UInt){m_data.value.UInt = o; setConstant();}
304  VariantConst( const char* o) :Variant(){Variant::initConstant( o, std::strlen(o));}
305  VariantConst( const char* o, std::size_t n) :Variant(){Variant::initConstant( o, n);}
306  VariantConst( const std::string& o) :Variant(){Variant::initConstant( o.c_str(), o.size());}
310 
312  VariantConst& operator=( const Variant& o) {bool init_=initialized(); initConstCopy( o); setInitialized(init_); return *this;}
313  VariantConst& operator=( const VariantConst& o) {bool init_=initialized(); initConstCopy( o); setInitialized(init_); return *this;}
314  VariantConst& operator=( bool o) {bool init_=initialized(); Variant::init(Variant::Bool); m_data.value.Bool = o; setInitialized(init_); setConstant(); return *this;}
315  VariantConst& operator=( double o) {bool init_=initialized(); Variant::init(Variant::Double); m_data.value.Double = o; setInitialized(init_); setConstant(); return *this;}
316  VariantConst& operator=( float o) {bool init_=initialized(); Variant::init(Variant::Double); m_data.value.Double = o; setInitialized(init_); setConstant(); return *this;}
317 
318  VariantConst& operator=( const boost::int64_t& o) {bool init_=initialized(); Variant::init(Variant::Int); m_data.value.Int = (Data::Int)o; setInitialized(init_); setConstant(); return *this;}
319  VariantConst& operator=( const boost::uint64_t& o) {bool init_=initialized(); Variant::init(Variant::UInt); m_data.value.UInt = (Data::UInt)o; setInitialized(init_); setConstant(); return *this;}
320  VariantConst& operator=( boost::int32_t o) {bool init_=initialized(); Variant::init(Variant::Int); m_data.value.Int = o; setInitialized(init_); setConstant(); return *this;}
321  VariantConst& operator=( boost::uint32_t o) {bool init_=initialized(); Variant::init(Variant::UInt); m_data.value.UInt = o; setInitialized(init_); setConstant(); return *this;}
322  VariantConst& operator=( boost::int16_t o) {bool init_=initialized(); Variant::init(Variant::Int); m_data.value.Int = o; setInitialized(init_); setConstant(); return *this;}
323  VariantConst& operator=( boost::uint16_t o) {bool init_=initialized(); Variant::init(Variant::UInt); m_data.value.UInt = o; setInitialized(init_); setConstant(); return *this;}
324 
325  VariantConst& operator=( const types::CustomDataValue& o){bool init_=initialized(); initConstant( o); setInitialized(init_); return *this;}
326  VariantConst& operator=( const types::BigNumber& o) {bool init_=initialized(); initConstant( o); setInitialized(init_); return *this;}
327  VariantConst& operator=( const types::DateTime& o) {bool init_=initialized(); initConstant( o); setInitialized(init_); return *this;}
328  VariantConst& operator=( const char* o) {bool init_=initialized(); initConstant( o, std::strlen(o)); setInitialized(init_); return *this;}
329  VariantConst& operator=( const std::string& o) {bool init_=initialized(); initConstant( o.c_str(), o.size()); setInitialized(init_); return *this;}
330 
332  void init( const char* o, std::size_t len) {bool init_=initialized(); initConstant( o, len); setInitialized(init_);}
333  void init( const char* o) {bool init_=initialized(); initConstant( o, o?std::strlen(o):0); setInitialized(init_);}
334  void init( const std::string& o) {bool init_=initialized(); initConstant( o.c_str(), o.size()); setInitialized(init_);}
335  void init( const types::CustomDataValue& o) {bool init_=initialized(); initConstant( o); setInitialized(init_);}
336  void init( const types::BigNumber& o) {bool init_=initialized(); initConstant( o); setInitialized(init_);}
337  void init( const types::DateTime& o) {bool init_=initialized(); initConstant( o); setInitialized(init_);}
338 
341 
343  void clear() {Variant::init();}
344 };
345 
346 }} //namespace
347 
348 namespace std
349 {
351 ostream& operator << (ostream &os, const _Wolframe::types::Variant& o);
352 } //namespace
353 
354 #endif
355 
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
double todouble() const
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
Data::Int toint() const
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