4.06.2013 - Version 0.3.4 - PIOBJECT() macro, ethernet improvement, documentation based on Doxygen
This commit is contained in:
43
pivariable.h
43
pivariable.h
@@ -22,11 +22,11 @@
|
||||
|
||||
#include "piconfig.h"
|
||||
|
||||
class PIVariant {
|
||||
class PIP_EXPORT PIVariant {
|
||||
friend class PIVariable;
|
||||
public:
|
||||
enum Type {Bool, Char, Short, Int, Long, LLong, UChar, UShort, UInt, ULong, ULLong, Float, Double, LDouble, String, StringList};
|
||||
|
||||
|
||||
PIVariant() {setValue(0.);}
|
||||
PIVariant(const char * v) {setValue(v);}
|
||||
PIVariant(const bool & v) {setValue(v);}
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
PIVariant(const ldouble & v) {setValue(v);}
|
||||
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;}
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
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;}
|
||||
|
||||
|
||||
bool operator ==(const PIVariant & v) const;
|
||||
inline bool operator !=(const PIVariant & v) const {return !(*this == v);}
|
||||
|
||||
@@ -115,25 +115,25 @@ public:
|
||||
};
|
||||
PIString vString;
|
||||
PIStringList vStringList;
|
||||
|
||||
|
||||
static PIVariant readFromString(const PIString & s);
|
||||
|
||||
|
||||
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);
|
||||
|
||||
|
||||
};
|
||||
|
||||
inline std::ostream & operator <<(std::ostream & s, const PIVariant & v) {s << v.typeName() << ": " << v.stringValue(); return s;}
|
||||
|
||||
class PIVariable {
|
||||
class PIP_EXPORT PIVariable {
|
||||
public:
|
||||
PIVariable() {;}
|
||||
PIVariable(const PIString & str) {setVariable(str);}
|
||||
~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_);}
|
||||
@@ -143,37 +143,37 @@ public:
|
||||
inline void setName(const PIString & str) {name_ = str;}
|
||||
inline double value() const {return value_;}
|
||||
inline void setValue(const double & val) {value_ = val;}
|
||||
|
||||
|
||||
int offset;
|
||||
|
||||
|
||||
private:
|
||||
PIVariant::Type type_;
|
||||
uint size_;
|
||||
PIString name_;
|
||||
double value_;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* PIStruct is abstract structure, described by *.conf file with format of each line:
|
||||
* "<name> = <type> #<n|f|b> <start_value>".
|
||||
* e.g. "pi = double #f 3.1418"
|
||||
*
|
||||
*
|
||||
* You can write or read binary content of this struct
|
||||
* by functions "writeData" and "readData", e.g.
|
||||
* "char * data = new char[struct.size()];
|
||||
* struct.writeData(data);"
|
||||
*
|
||||
*
|
||||
* Access to each variable in struct is looks like
|
||||
* "double value = struct["pi"].value();"
|
||||
*/
|
||||
|
||||
class PIStruct {
|
||||
class PIP_EXPORT PIStruct {
|
||||
public:
|
||||
PIStruct() {;}
|
||||
PIStruct(const PIString & str) {parseFile(str);}
|
||||
|
||||
|
||||
void parseFile(const PIString & file);
|
||||
void readData(const char * data);
|
||||
void writeData(char * data);
|
||||
@@ -184,17 +184,12 @@ public:
|
||||
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];}
|
||||
|
||||
|
||||
private:
|
||||
uint size_;
|
||||
PIString name_;
|
||||
PIVector<PIVariable> vars;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // PIVARIABLE_H
|
||||
|
||||
#/** PhEDIT attribute block
|
||||
#-11:16777215
|
||||
#0:7338:monospace10:-3:-3:0
|
||||
#** PhEDIT attribute block ends (-0000117)**/
|
||||
|
||||
Reference in New Issue
Block a user