#ifndef VALUE_H_ #define VALUE_H_ #include #include class Value { public: enum type_e { UNDEFINED, BOOL, NUMBER, RANGE, VECTOR, STRING }; enum type_e type; bool b; double num; QVector vec; double range_begin; double range_step; double range_end; QString text; Value(); ~Value(); Value(bool v); Value(double v); Value(const QString &t); Value(const Value &v); Value& operator = (const Value &v); Value operator ! () const; Value operator && (const Value &v) const; Value operator || (const Value &v) const; Value operator + (const Value &v) const; Value operator - (const Value &v) const; Value operator * (const Value &v) const; Value operator / (const Value &v) const; Value operator % (const Value &v) const; Value operator < (const Value &v) const; Value operator <= (const Value &v) const; Value operator == (const Value &v) const; Value operator != (const Value &v) const; Value operator >= (const Value &v) const; Value operator > (const Value &v) const; Value inv() const; bool getnum(double &v) const; bool getv2(double &x, double &y) const; bool getv3(double &x, double &y, double &z) const; // FIXME: stream support QString dump() const; private: void reset_undef(); }; #endif