#pragma once // [cfg-var.h]: configurable variable class 'cfgVariable' // // -------------------------------------------------------------------------------------------- // #define _CRT_SECURE_NO_WARNINGS #include <string> namespace nse { class cfgVariable { public: enum VAR_TYPE { IS_UNDEF, IS_INT, IS_DOUBLE, IS_STRING, IS_BOOLEAN }; cfgVariable(); cfgVariable(const char* value); cfgVariable(const char* name, const char* value); ~cfgVariable(); cfgVariable(const cfgVariable& var); const cfgVariable& operator=(cfgVariable var); void swap(cfgVariable& a); cfgVariable& operator+=(const cfgVariable& var); cfgVariable& operator-=(const cfgVariable& var); cfgVariable& operator*=(const cfgVariable& var); cfgVariable& operator/=(const cfgVariable& var); cfgVariable& operator%=(const cfgVariable& var); cfgVariable& operator^=(const cfgVariable& var); const cfgVariable operator+(const cfgVariable& var) const; const cfgVariable operator-(const cfgVariable& var) const; const cfgVariable operator*(const cfgVariable& var) const; const cfgVariable operator/(const cfgVariable& var) const; const cfgVariable operator%(const cfgVariable& var) const; const cfgVariable operator^(const cfgVariable& var) const; const cfgVariable operator-() const; const cfgVariable operator+() const; void set(const char* name, const char* value); void change_name(const char* name); // name == NULL - not changing variable name void clear(); int get_value(int* value) const; int get_value(float* value) const; int get_value(double* value) const; int get_value(char** value) const; int get_value(std::string& value) const; int get_value(bool* value) const; VAR_TYPE get_type() const; bool is_varname(const char* ex_name) const; bool is_valid_name() const; // name not empty string bool is_valid_type() const; // type != IS_UNDEF bool is_eq_name(const cfgVariable& var) const; void print() const; private: char* name; // default name = empty string = "\0"; // always keeping name as string != NULL VAR_TYPE type; int eint; double edouble; char *estring; bool ebool; size_t name_memsize; // memory handler for name string }; }