30.11.2013 - New PICollection namespace, Android support, my own PIVector implementation

This commit is contained in:
peri4
2013-11-30 19:34:53 +04:00
parent ec5530053a
commit f50891b376
64 changed files with 5466 additions and 3392 deletions

View File

@@ -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;
};