30.11.2013 - New PICollection namespace, Android support, my own PIVector implementation
This commit is contained in:
121
pivariable.h
121
pivariable.h
@@ -46,55 +46,55 @@ public:
|
||||
PIVariant(const PIString & v) {setValue(v);}
|
||||
PIVariant(const PIStringList & v) {setValue(v);}
|
||||
|
||||
inline void setValue(const char * v) {setValue(PIString(v));}
|
||||
inline void setValue(const bool & v) {type = PIVariant::Bool; vBool = v;}
|
||||
inline void setValue(const char & v) {type = PIVariant::Char; vChar = v;}
|
||||
inline void setValue(const short & v) {type = PIVariant::Short; vShort = v;}
|
||||
inline void setValue(const int & v) {type = PIVariant::Int; vInt = v;}
|
||||
inline void setValue(const long & v) {type = PIVariant::Long; vLong = v;}
|
||||
inline void setValue(const llong & v) {type = PIVariant::LLong; vLLong = v;}
|
||||
inline void setValue(const uchar & v) {type = PIVariant::UChar; vUChar = v;}
|
||||
inline void setValue(const ushort & v) {type = PIVariant::UShort; vUShort = v;}
|
||||
inline void setValue(const uint & v) {type = PIVariant::UInt; vUInt = v;}
|
||||
inline void setValue(const ulong & v) {type = PIVariant::ULong; vULong = v;}
|
||||
inline void setValue(const ullong & v) {type = PIVariant::ULLong; vULLong = v;}
|
||||
inline void setValue(const float & v) {type = PIVariant::Float; vFloat = v;}
|
||||
inline void setValue(const double & v) {type = PIVariant::Double; vDouble = v;}
|
||||
inline void setValue(const ldouble & v) {type = PIVariant::LDouble; vLDouble = v;}
|
||||
inline void setValue(const PIString & v) {type = PIVariant::String; vString = v;}
|
||||
inline void setValue(const PIStringList & v) {type = PIVariant::StringList; vStringList = v;}
|
||||
void setValue(const char * v) {setValue(PIString(v));}
|
||||
void setValue(const bool & v) {type = PIVariant::Bool; vBool = v;}
|
||||
void setValue(const char & v) {type = PIVariant::Char; vChar = v;}
|
||||
void setValue(const short & v) {type = PIVariant::Short; vShort = v;}
|
||||
void setValue(const int & v) {type = PIVariant::Int; vInt = v;}
|
||||
void setValue(const long & v) {type = PIVariant::Long; vLong = v;}
|
||||
void setValue(const llong & v) {type = PIVariant::LLong; vLLong = v;}
|
||||
void setValue(const uchar & v) {type = PIVariant::UChar; vUChar = v;}
|
||||
void setValue(const ushort & v) {type = PIVariant::UShort; vUShort = v;}
|
||||
void setValue(const uint & v) {type = PIVariant::UInt; vUInt = v;}
|
||||
void setValue(const ulong & v) {type = PIVariant::ULong; vULong = v;}
|
||||
void setValue(const ullong & v) {type = PIVariant::ULLong; vULLong = v;}
|
||||
void setValue(const float & v) {type = PIVariant::Float; vFloat = v;}
|
||||
void setValue(const double & v) {type = PIVariant::Double; vDouble = v;}
|
||||
void setValue(const ldouble & v) {type = PIVariant::LDouble; vLDouble = v;}
|
||||
void setValue(const PIString & v) {type = PIVariant::String; vString = v;}
|
||||
void setValue(const PIStringList & v) {type = PIVariant::StringList; vStringList = v;}
|
||||
void setValueOnly(const PIString & v);
|
||||
inline PIString typeName() const {return PIVariant::toString(type);}
|
||||
inline double doubleValue() const {return PIVariant::variableValue(&vChar, type);}
|
||||
PIString typeName() const {return PIVariant::toString(type);}
|
||||
double doubleValue() const {return PIVariant::variableValue(&vChar, type);}
|
||||
PIString stringValue() const;
|
||||
inline void typeFromString(const PIString & str) {type = PIVariant::fromString(str);}
|
||||
inline PIString typeToString() const {return PIVariant::toString(type);}
|
||||
inline uint size() {if (type != PIVariant::String && type != PIVariant::StringList) return PIVariant::variableSize(type); if (type == PIVariant::String) return vString.size(); else return vStringList.contentSize();}
|
||||
inline PIString writeToString() const {return typeName() + ":" + stringValue();}
|
||||
void typeFromString(const PIString & str) {type = PIVariant::fromString(str);}
|
||||
PIString typeToString() const {return PIVariant::toString(type);}
|
||||
uint size() {if (type != PIVariant::String && type != PIVariant::StringList) return PIVariant::variableSize(type); if (type == PIVariant::String) return vString.size(); else return vStringList.contentSize();}
|
||||
PIString writeToString() const {return typeName() + ":" + stringValue();}
|
||||
|
||||
#ifdef QNX
|
||||
inline void operator =(const PIVariant & v) {type = v.type; vLDouble = v.vLDouble; vString = v.vString; vStringList = v.vStringList;}
|
||||
void operator =(const PIVariant & v) {type = v.type; vLDouble = v.vLDouble; vString = v.vString; vStringList = v.vStringList;}
|
||||
#endif
|
||||
inline void operator =(const char * v) {setValue(PIString(v));}
|
||||
inline void operator =(const bool & v) {type = PIVariant::Bool; vBool = v;}
|
||||
inline void operator =(const char & v) {type = PIVariant::Char; vChar = v;}
|
||||
inline void operator =(const short & v) {type = PIVariant::Short; vShort = v;}
|
||||
inline void operator =(const int & v) {type = PIVariant::Int; vInt = v;}
|
||||
inline void operator =(const long & v) {type = PIVariant::Long; vLong = v;}
|
||||
inline void operator =(const llong & v) {type = PIVariant::LLong; vLLong = v;}
|
||||
inline void operator =(const uchar & v) {type = PIVariant::UChar; vUChar = v;}
|
||||
inline void operator =(const ushort & v) {type = PIVariant::UShort; vUShort = v;}
|
||||
inline void operator =(const uint & v) {type = PIVariant::UInt; vUInt = v;}
|
||||
inline void operator =(const ulong & v) {type = PIVariant::ULong; vULong = v;}
|
||||
inline void operator =(const ullong & v) {type = PIVariant::ULLong; vULLong = v;}
|
||||
inline void operator =(const float & v) {type = PIVariant::Float; vFloat = v;}
|
||||
inline void operator =(const double & v) {type = PIVariant::Double; vDouble = v;}
|
||||
inline void operator =(const ldouble & v) {type = PIVariant::LDouble; vLDouble = v;}
|
||||
inline void operator =(const PIString & v) {type = PIVariant::String; vString = v;}
|
||||
inline void operator =(const PIStringList & v) {type = PIVariant::StringList; vStringList = v;}
|
||||
void operator =(const char * v) {setValue(PIString(v));}
|
||||
void operator =(const bool & v) {type = PIVariant::Bool; vBool = v;}
|
||||
void operator =(const char & v) {type = PIVariant::Char; vChar = v;}
|
||||
void operator =(const short & v) {type = PIVariant::Short; vShort = v;}
|
||||
void operator =(const int & v) {type = PIVariant::Int; vInt = v;}
|
||||
void operator =(const long & v) {type = PIVariant::Long; vLong = v;}
|
||||
void operator =(const llong & v) {type = PIVariant::LLong; vLLong = v;}
|
||||
void operator =(const uchar & v) {type = PIVariant::UChar; vUChar = v;}
|
||||
void operator =(const ushort & v) {type = PIVariant::UShort; vUShort = v;}
|
||||
void operator =(const uint & v) {type = PIVariant::UInt; vUInt = v;}
|
||||
void operator =(const ulong & v) {type = PIVariant::ULong; vULong = v;}
|
||||
void operator =(const ullong & v) {type = PIVariant::ULLong; vULLong = v;}
|
||||
void operator =(const float & v) {type = PIVariant::Float; vFloat = v;}
|
||||
void operator =(const double & v) {type = PIVariant::Double; vDouble = v;}
|
||||
void operator =(const ldouble & v) {type = PIVariant::LDouble; vLDouble = v;}
|
||||
void operator =(const PIString & v) {type = PIVariant::String; vString = v;}
|
||||
void operator =(const PIStringList & v) {type = PIVariant::StringList; vStringList = v;}
|
||||
|
||||
bool operator ==(const PIVariant & v) const;
|
||||
inline bool operator !=(const PIVariant & v) const {return !(*this == v);}
|
||||
bool operator !=(const PIVariant & v) const {return !(*this == v);}
|
||||
|
||||
PIVariant::Type type;
|
||||
union {
|
||||
@@ -122,7 +122,7 @@ private:
|
||||
static PIVariant::Type fromString(const PIString & str);
|
||||
static PIString toString(const PIVariant::Type & var);
|
||||
static uint variableSize(const PIVariant::Type & var);
|
||||
static double variableValue(const char * var_ptr, const PIVariant::Type & var);
|
||||
static double variableValue(const void * var_ptr, const PIVariant::Type & var);
|
||||
|
||||
};
|
||||
|
||||
@@ -135,14 +135,14 @@ public:
|
||||
~PIVariable() {;}
|
||||
|
||||
void setVariable(const PIString & str);
|
||||
void writeVariable(char * dest);
|
||||
inline void readVariable(const char * var_ptr) {value_ = PIVariant::variableValue((char * )((long)var_ptr + offset), type_);}
|
||||
inline PIVariant::Type type() const {return type_;}
|
||||
inline uint size() const {return size_;}
|
||||
inline const PIString & name() {return name_;}
|
||||
inline void setName(const PIString & str) {name_ = str;}
|
||||
inline double value() const {return value_;}
|
||||
inline void setValue(const double & val) {value_ = val;}
|
||||
void writeVariable(void * dest);
|
||||
void readVariable(const void * var_ptr) {value_ = PIVariant::variableValue((char * )((long)var_ptr + offset), type_);}
|
||||
PIVariant::Type type() const {return type_;}
|
||||
uint size() const {return size_;}
|
||||
const PIString & name() {return name_;}
|
||||
void setName(const PIString & str) {name_ = str;}
|
||||
double value() const {return value_;}
|
||||
void setValue(const double & val) {value_ = val;}
|
||||
|
||||
int offset;
|
||||
|
||||
@@ -175,19 +175,20 @@ public:
|
||||
PIStruct(const PIString & str) {parseFile(str);}
|
||||
|
||||
void parseFile(const PIString & file);
|
||||
void readData(const char * data);
|
||||
void writeData(char * data);
|
||||
inline void clear() {vars.clear(); size_ = 0;}
|
||||
inline uint count() const {return vars.size();}
|
||||
inline uint size() const {return size_;}
|
||||
inline const PIString & name() {return name_;}
|
||||
inline void setName(const PIString & str) {name_ = str;}
|
||||
inline PIVariable & operator[](const uint & index) {return vars[index];}
|
||||
inline PIVariable & operator[](const PIString & name) {for (uint i = 0; i < vars.size(); ++i) if (vars[i].name() == name) return vars[i];}
|
||||
void readData(const void * data);
|
||||
void writeData(void * data);
|
||||
void clear() {vars.clear(); size_ = 0;}
|
||||
uint count() const {return vars.size();}
|
||||
uint size() const {return size_;}
|
||||
const PIString & name() {return name_;}
|
||||
void setName(const PIString & str) {name_ = str;}
|
||||
PIVariable & operator[](const uint & index) {return vars[index];}
|
||||
PIVariable & operator[](const PIString & name) {for (uint i = 0; i < vars.size(); ++i) if (vars[i].name() == name) return vars[i]; return def;}
|
||||
|
||||
private:
|
||||
uint size_;
|
||||
PIString name_;
|
||||
PIVariable def;
|
||||
PIVector<PIVariable> vars;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user