32 #ifndef VLXValue_INCLUDE_ONCE 33 #define VLXValue_INCLUDE_ONCE 62 const std::string&
tag()
const {
return mTag; }
83 std::string&
value() {
return mValue; }
85 const std::string&
value()
const {
return mValue; }
87 void setValue(
const char* value) { mValue = value; }
115 std::vector<T>&
value() {
return mValue; }
117 const std::vector<T>&
value()
const {
return mValue; }
119 T*
ptr() {
if (mValue.empty())
return NULL;
else return &mValue[0]; }
121 const T*
ptr()
const {
if (mValue.empty())
return NULL;
else return &mValue[0]; }
123 template<
typename T2>
void copyTo(T2*ptr)
const {
for(
size_t i=0; i<mValue.size(); ++i, ++ptr) *ptr = (T2)mValue[i]; }
125 template<
typename T2>
void copyFrom(
const T2*ptr) {
for(
size_t i=0; i<mValue.size(); ++i, ++ptr) mValue[i] = (scalar_type)*ptr; }
128 std::vector<T> mValue;
297 setRawtextBlock(rawtext);
305 setArrayInteger(arr);
364 case String: setString(str);
break;
365 case Identifier: setIdentifier(str);
break;
366 case ID: setID(str);
break;
455 mUnion.mString =
new std::string(str);
456 return *mUnion.mString;
467 mUnion.mString =
new std::string(str);
468 return *mUnion.mString;
475 const std::string&
setID(
const char* str)
479 mUnion.mString =
new std::string(str);
480 return *mUnion.mString;
483 const std::string&
getID()
const {
VL_CHECK(mType == ID);
return *mUnion.mString; }
491 return mUnion.mInteger = val;
502 return mUnion.mReal = val;
513 return mUnion.mBool = val;
547 mKeyValue.reserve(16);
553 mKeyValue.reserve(16);
560 mKeyValue.reserve(16);
569 value().resize( value().size() + 1 );
570 value().back().setKey(str);
576 value().back().setValue(val);
589 std::string&
key() {
return mKey; }
590 const std::string&
key()
const {
return mKey; }
591 void setKey(
const char* key) { mKey = key; }
602 void setID(
const char* uid) { mID = uid; }
604 const std::string&
uid()
const {
return mID; }
606 std::vector<Value>&
value() {
return mKeyValue; }
608 const std::vector<Value>&
value()
const {
return mKeyValue; }
613 for(
size_t i=0; i<mKeyValue.size(); ++i)
614 if (mKeyValue[i].key() == key)
615 return &mKeyValue[i].value();
621 for(
size_t i=0; i<mKeyValue.size(); ++i)
622 if (mKeyValue[i].key() == key)
623 return &mKeyValue[i].value();
629 std::vector<Value> mKeyValue;
645 value().push_back( val );
651 std::vector< VLXValue >&
value() {
return mValue; }
653 const std::vector< VLXValue >&
value()
const {
return mValue; }
656 std::vector< VLXValue > mValue;
VLXRawtextBlock * getRawtextBlock()
VLXStructure & operator<<(const char *str)
double setReal(double val)
long long setInteger(long long val)
void setKey(const char *key)
void copyTo(T2 *ptr) const
const std::string & getID() const
VLXValue(VLXArrayInteger *arr)
void setTag(const char *tag)
void copyFrom(const T2 *ptr)
Base class for VLX values with a tag.
void setValue(const char *value)
const std::vector< T > & value() const
VLXArrayTemplate(const char *tag=NULL)
VLXArrayInteger * getArrayInteger()
const std::string & getString() const
The String class implements an advanced UTF16 (Unicode BMP) string manipulation engine.
VLXArray(const char *tag=NULL)
const std::string & key() const
VLXRawtextBlock * mRawtextBlock
virtual void acceptVisitor(VLXVisitor *v)
const std::string & getIdentifier() const
virtual void acceptVisitor(VLXVisitor *)=0
const VLXValue * getValue(const char *key) const
VLXList & operator<<(const VLXValue &val)
virtual void visitList(VLXList *)
Base class for all arrays of VLX values.
An array of 64 bits floating point numbers, can also have a tag.
virtual void visitStructure(VLXStructure *)
const std::string & setID(const char *str)
const VLXValue & value() const
#define VL_INSTRUMENT_CLASS(ClassName, BaseClass)
VLXValue * getValue(const char *key)
const std::vector< Value > & value() const
Visualization Library main namespace.
const VLXList * getList() const
const std::string & uid() const
Key/value pair used by VLXStructure.
VLXStructure * getStructure()
VLXValue(VLXRawtextBlock *rawtext)
VLXArrayInteger(const char *tag=NULL)
VLXValue(VLXArrayReal *arr)
virtual void acceptVisitor(VLXVisitor *v)
Value(const char *key, VLXValue value)
const std::string & tag() const
std::vector< T > & value()
virtual void acceptVisitor(VLXVisitor *v)
std::vector< Value > & value()
VLXValue(const char *str, EType type)
The base class for all the reference counted objects.
virtual ~VLXTaggedValue()
void setID(const char *uid)
Base class for all visitors visiting a VLX hierarchy.
const std::vector< VLXValue > & value() const
VLXValue(VLXStructure *obj)
const std::string & value() const
VLXTaggedValue(const char *tag=NULL)
const std::string & setIdentifier(const char *str)
const VLXStructure * getStructure() const
void setLineNumber(int line)
Wrapper for all VLX value types.
VLXStructure(const char *tag, const std::string &uid)
void setLineNumber(int line)
VLXStructure & operator<<(const VLXValue &val)
virtual void visitRawtextBlock(VLXRawtextBlock *)
An array of 64 bits integers, can also have a tag.
const VLXArrayReal * getArrayReal() const
VLXArrayReal * getArrayReal()
virtual void acceptVisitor(VLXVisitor *v)
VLXList(const char *tag=NULL)
const std::string & setString(const char *str)
A simple sequence of VLXValue objects, can also have a tag.
#define VL_INSTRUMENT_ABSTRACT_CLASS(ClassName, BaseClass)
void setValue(const VLXValue &value)
const VLXArrayInteger * getArrayInteger() const
VLXStructure(const char *tag)
VLXRawtextBlock(const char *tag=NULL, const char *value=NULL)
std::vector< VLXValue > & value()
long long getInteger() const
A list of key/VLXValue pairs, can also have a tag.
VLXStructure * mStructure
VLXValue(const VLXValue &other)
virtual void visitArray(VLXArrayInteger *)
Object & operator=(const Object &other)
Copy operator: copies the object's name, ref count mutex and user data.
const VLXRawtextBlock * getRawtextBlock() const
virtual void acceptVisitor(VLXVisitor *v)
VLXArrayReal(const char *tag=NULL)