16 UNDEF_VALUE, BOOL_VALUE, INT_VALUE, DOUBLE_VALUE, STRING_VALUE,
17 REFERENCE_VALUE, NAME_VALUE, LIST_VALUE, MAP_VALUE, FUNC_VALUE
32 typedef std::vector<variant> list_type;
33 typedef std::map<std::string, variant> map_type;
41 std::string* string_value;
43 std::string* name_value;
44 list_type* list_value;
66 variant(ValueType vt,
const std::string& v);
83 bool is_unary_applicable(OperatorType ot);
84 bool unary_check_defined(OperatorType ot);
85 void apply_unary(OperatorType ot);
86 bool is_binary_applicable(OperatorType ot,
const variant& v2);
87 bool binary_check_defined(OperatorType ot,
const variant& v2);
88 void apply_binary(OperatorType ot,
const variant& v2);
94 ValueType get_type()
const;
96 ValueType get_value_type()
const;
98 bool is_undefined()
const;
102 bool is_double()
const;
104 bool is_bool()
const;
108 bool is_list()
const;
112 bool is_func()
const;
114 bool is_reference()
const;
116 bool is_name()
const;
122 bool get_bool()
const;
126 double get_double()
const;
128 std::string get_str()
const;
130 const list_type& get_list()
const;
132 const map_type& get_map()
const;
134 void ensure_int_type();
136 bool match_number_type(
const variant& v2);
143 double& ref_double();
144 std::string& ref_str();
145 list_type& ref_list();
152 void set_bool(
bool v);
154 void set_double(
double v);
155 void set_str(
const std::string& v);
156 void set_name(
const std::string& n);
158 void set_list(
const std::vector<variant>& l);
160 void set_map(
const std::map<std::string, variant>& m);
166 const variant& get_value()
const;
170 variant* get_reference()
const;
172 const std::string& get_name()
const;
178 unsigned int get_size()
const;
180 unsigned get_total_nr_elements()
const;
182 variant& ref_element(
unsigned int i);
184 const variant& get_element(
unsigned int i)
const;
189 void append_to_list(
const variant& v);
190 void prepend_to_list(
const variant& v);
191 void pop_back_from_list();
192 void pop_front_from_list();
198 variant& ref_element(
const std::string& name);
200 const variant& get_element(
const std::string& name);
202 const std::string& get_element_name(
unsigned int i)
const;
204 void insert(
const std::string& name,
const variant& v);