35 #ifndef _Wolframe_TYPES_VARIANT_STRUCT_HPP_INCLUDED
36 #define _Wolframe_TYPES_VARIANT_STRUCT_HPP_INCLUDED
52 class VariantStructDescription;
54 class IndirectionDescription;
60 typedef std::map<std::string,const VariantStructDescription*>
ResolveMap;
Type
Type of the variant.
Definition: variant.hpp:70
const VariantStructDescription * description() const
Get the description of a structure (throws for other types than 'Struct')
Definition: variantStruct.hpp:122
int compare(const iterator &o) const
VariantStructConst & operator=(double o)
Definition: variantStruct.hpp:309
boost::uint64_t Timestamp
Timestamp equivalent to a date time value for variant type.
Definition: datetime.hpp:47
VariantStructConst & operator=(unsigned int o)
Definition: variantStruct.hpp:312
pointer to structure
Definition: variantStruct.hpp:77
union _Wolframe::types::Variant::Data::@18 dim
dimension and metadata
iterator & operator++()
Definition: variantStruct.hpp:208
Unresolved indirection.
Definition: variantStruct.hpp:275
const char * typeName() const
Get the type name of 'this' as string constant for logging.
Definition: variant.hpp:98
std::map< const VariantStructDescription *, const VariantStructDescription * > DescriptionAssignmentMap
Definition: variantStruct.hpp:125
bool operator<=(const VariantStruct &o) const
Definition: variantStruct.hpp:111
VariantStruct const * m_itr
Definition: variantStruct.hpp:189
bool operator==(const iterator &o) const
Definition: variantStruct.hpp:201
const VariantStruct * at(std::size_t idx) const
Random access or 0 if no random access defined (throws logic error on ABR/ABW)
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
VariantStructConst(const char *o)
Definition: variantStruct.hpp:299
VariantStructConst & operator=(const char *o)
Definition: variantStruct.hpp:313
VariantStructConst(const std::string &o)
Definition: variantStruct.hpp:301
bool operator<=(const iterator &o) const
Definition: variantStruct.hpp:204
void push()
Add a new element to an array (throws for other types than 'Array')
atomic custom data type
Definition: variantStruct.hpp:67
VariantStructConst(double o)
Definition: variantStruct.hpp:295
VariantStructConst & operator=(int o)
Definition: variantStruct.hpp:311
void initConstCopy(const VariantStruct &o)
Type for representing big numbers as binary coded decimal (BCD) numbers.
Definition: bignumber.hpp:49
Description of a variant structure as array of attributes and content elements.
Definition: variantStructDescription.hpp:57
VariantStructConst(const VariantStructConst &o)
Definition: variantStruct.hpp:293
Structure of variant type atoms or substructures.
Definition: variantStruct.hpp:57
VariantStructConst(const Variant &o)
Definition: variantStruct.hpp:291
atomic signed int
Definition: variantStruct.hpp:71
void init(const char *o, std::size_t len)
Initialization as string constant.
Definition: variantStruct.hpp:317
~VariantStruct()
Destructor.
Definition: variantStruct.hpp:93
iterator operator+(int i) const
Definition: variantStruct.hpp:215
VariantStruct()
Default constructor.
Definition: variantStruct.hpp:85
~VariantStructConst()
Destructor.
Definition: variantStruct.hpp:303
void initConstCopy(const Variant &o)
unresolved indirection
Definition: variantStruct.hpp:78
Const iterator on struct or array elements.
Definition: variantStruct.hpp:164
VariantIndirection(const VariantStructDescription *descr)
Constructor.
VariantUnresolved(const std::string &name_)
Constructor.
void initUnresolved(const std::string &name_)
VariantStructConst & operator=(bool o)
Definition: variantStruct.hpp:308
VariantStructConst(const VariantStruct &o)
Definition: variantStruct.hpp:292
value undefined (NULL)
Definition: variant.hpp:72
ostream & operator<<(ostream &os, const _Wolframe::types::Variant &o)
Output stream operators for logging etc.
bool operator==(const VariantStruct &o) const
Compare structures.
Definition: variantStruct.hpp:107
bool operator>(const VariantStruct &o) const
Definition: variantStruct.hpp:109
VariantStruct(const Variant &o)
Copy constructor.
Definition: variantStruct.hpp:89
VariantStructConst & operator=(const Variant &o)
Assignment operator, keeping the initialization flag of this.
Definition: variantStruct.hpp:306
int compare(const VariantStruct &o) const
null terminated UTF-8 string
Definition: variant.hpp:80
Variant structure that represents a variant structure copy without content ownership.
Definition: variantStruct.hpp:286
VariantStruct * operator->()
Definition: variantStruct.hpp:211
std::size_t size
size of a string - different meaning for structures (module VariantStruct)
Definition: variant.hpp:125
int operator-(const const_iterator &o) const
Definition: variantStruct.hpp:185
VariantStructConst & operator=(const VariantConst &o)
Definition: variantStruct.hpp:307
const VariantStruct & back() const
Get the last element (throws logic error on ABR/ABW)
const VariantStruct & operator*() const
Definition: variantStruct.hpp:183
atomic boolean
Definition: variantStruct.hpp:73
C++ int.
Definition: variant.hpp:77
array of VariantStruct
Definition: variantStruct.hpp:75
VariantStructConst(float o)
Definition: variantStruct.hpp:296
bool operator<(const iterator &o) const
Definition: variantStruct.hpp:203
bool operator>=(const VariantStruct &o) const
Definition: variantStruct.hpp:110
bool operator!=(const const_iterator &o) const
Definition: variantStruct.hpp:173
std::map< std::string, const VariantStructDescription * > ResolveMap
Definition: variantStruct.hpp:60
void init(const char *o)
Definition: variantStruct.hpp:318
bool operator>=(const const_iterator &o) const
Definition: variantStruct.hpp:177
big BCD fixed point number in the range of 1E-32767 to 1E+32768
Definition: variant.hpp:75
iterator(VariantStruct *itr_)
Definition: variantStruct.hpp:196
std::size_t nof_elements() const
Get the number of elements defined (throws for other types than 'Struct' or 'Array') ...
Forward declaration.
Definition: variant.hpp:65
void init(const std::string &o)
Definition: variantStruct.hpp:319
iterator begin()
Definition: variantStruct.hpp:235
VariantStructConst(unsigned int o)
Definition: variantStruct.hpp:298
const_iterator operator+(int i) const
Definition: variantStruct.hpp:186
C++ double.
Definition: variant.hpp:76
void initStruct(const VariantStructDescription *descr)
const_iterator(const const_iterator &o)
Definition: variantStruct.hpp:168
Variant value type that represents a variant copy without content ownership.
Definition: variant.hpp:286
bool operator!=(const iterator &o) const
Definition: variantStruct.hpp:202
VariantStructConst & operator=(float o)
Definition: variantStruct.hpp:310
const void * metadata
unused by base variant type - reserved for structures (module VariantStruct)
Definition: variant.hpp:124
const VariantStruct * prototype() const
Return the prototype element (initialization of new element) of an array (throws for other types than...
Definition: variantStruct.hpp:129
unsigned char m_type
Definition: variant.hpp:278
void setType(Type type_)
Definition: variantStruct.hpp:247
bool operator>(const iterator &o) const
Definition: variantStruct.hpp:205
iterator operator++(int)
Definition: variantStruct.hpp:209
std::string tostring() const
Getter with value conversion.
atomic double
Definition: variantStruct.hpp:70
Data m_data
Definition: variant.hpp:277
void resolve(const ResolveMap &rmap)
Resolve all unresolved externals according to the given map. Throws, if not all unresolved symbols co...
const_iterator begin() const
Get the an iterator on the first element (direct child)
Definition: variantStruct.hpp:234
bool operator!=(const VariantStruct &o) const
Definition: variantStruct.hpp:108
void makeArray()
Make the structure to be an array with the currently defined value as prototype element.
const VariantStruct & operator[](std::size_t idx) const
Random access (throws logic error on ABR/ABW)
bool operator<(const const_iterator &o) const
Definition: variantStruct.hpp:174
void expandIndirection()
Expands an Indirection (throws for other types than 'Indirection')
const std::string unresolvedName() const
Return the referenced name in case of an unresolved external.
Definition: variantStruct.hpp:133
void clear()
Reseting the content of this.
Definition: variantStruct.hpp:322
void clear()
Reseting the content of this.
Definition: variantStruct.hpp:103
~VariantIndirection()
Definition: variantStruct.hpp:269
undefined value
Definition: variantStruct.hpp:66
bool operator<(const VariantStruct &o) const
Definition: variantStruct.hpp:112
VariantStruct & operator*()
Definition: variantStruct.hpp:212
const_iterator find(const std::string &name_) const
Find an element (direct child)
atomic unsigned int
Definition: variantStruct.hpp:72
C++ bool.
Definition: variant.hpp:79
union _Wolframe::types::Variant::Data::@17 value
value of the variant
VariantStruct(const VariantStruct &o)
Copy constructor.
Definition: variantStruct.hpp:91
void setIndirectionDescription(const DescriptionAssignmentMap &assignmentmap)
VariantStruct * m_itr
Definition: variantStruct.hpp:218
const VariantStruct * select(const std::string &name) const
Get a substructure reference.
const VariantStruct * elementptr(std::size_t idx) const
Random access or 0 if no random access defined or invalid access.
VariantStruct * prototype()
Definition: variantStruct.hpp:130
C++ unsigned int.
Definition: variant.hpp:78
Iterator on struct or array elements.
Definition: variantStruct.hpp:193
const VariantStruct * operator->() const
Definition: variantStruct.hpp:182
bool operator>(const const_iterator &o) const
Definition: variantStruct.hpp:176
const_iterator operator++(int)
Definition: variantStruct.hpp:180
VariantStructConst(int o)
Definition: variantStruct.hpp:297
VariantStructConst(const VariantConst &o)
Constructor.
Definition: variantStruct.hpp:290
_WOLFRAME_UINTEGER UInt
unsigned integer type
Definition: variant.hpp:108
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
custom data type (types::CustomDataValue)
Definition: variant.hpp:73
void initIndirection(const VariantStructDescription *descr)
content of structure
Definition: variantStruct.hpp:76
void setConstant(bool v=true)
Set the value to be constant.
Definition: variant.hpp:232
bool operator>=(const iterator &o) const
Definition: variantStruct.hpp:206
_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
Type
Typed filter element type.
Definition: variantStruct.hpp:64
VariantStructConst(bool o)
Definition: variantStruct.hpp:294
static int compareArray(std::size_t size, const VariantStruct *a1, const VariantStruct *a2)
const_iterator find_cis(const std::string &name_) const
Find an element (direct child) with case insensitive comparison (of ascii A-Z)
Variant type as indirection: Variant value is only expanded when referenced.
Definition: variantStruct.hpp:264
const_iterator & operator++()
Definition: variantStruct.hpp:179
VariantStruct & operator=(const VariantStruct &o)
Assignment operator, keeping the initialization flag of this.
Definition: variantStruct.hpp:99
int compare(const const_iterator &o) const
VariantStruct(const VariantStructDescription *d)
Constructor from structure description.
Definition: variantStruct.hpp:87
void print(std::ostream &out, const utils::PrintFormat *pformat, std::size_t level=0) const
Print the value of a structure as string (curly bracket syntax)
bool operator==(const const_iterator &o) const
Definition: variantStruct.hpp:172
bool operator<=(const const_iterator &o) const
Definition: variantStruct.hpp:175
const char * typeName() const
Definition: variantStruct.hpp:82
Type type() const
Get the type of the structure.
Definition: variantStruct.hpp:116
void setInitialized(bool v=true)
Set the value to be initialized.
Definition: variant.hpp:224
void initCopy(const Variant &o)
void setDescription(const VariantStructDescription *descr)
static const char * typeName(Type i)
Get the type name as string constant for logging.
Definition: variantStruct.hpp:81
VariantStructConst & operator=(const std::string &o)
Definition: variantStruct.hpp:314
const_iterator(VariantStruct const *itr_)
Definition: variantStruct.hpp:167
const_iterator end() const
Get the an iterator on the end of the list of elements.
Definition: variantStruct.hpp:237
bool Bool
boolean value
Definition: variant.hpp:112
int operator-(const iterator &o) const
Definition: variantStruct.hpp:214
void initCopy(const VariantStruct &orig)
iterator end()
Definition: variantStruct.hpp:238
iterator(const iterator &o)
Definition: variantStruct.hpp:197
VariantStructConst(const char *o, std::size_t n)
Definition: variantStruct.hpp:300
VariantStruct & operator=(const Variant &o)
Definition: variantStruct.hpp:100