24 class formula_callable;
25 class variant_iterator;
36 explicit variant(
const std::vector<variant>& array);
37 explicit variant(
const std::string& str);
38 explicit variant(
const std::map<variant, variant>& map);
61 bool is_null()
const {
return type() == VARIANT_TYPE::TYPE_NULL; }
62 bool is_int()
const {
return type() == VARIANT_TYPE::TYPE_INT; }
65 bool is_list()
const {
return type() == VARIANT_TYPE::TYPE_LIST; }
67 bool is_map()
const {
return type() == VARIANT_TYPE::TYPE_MAP; }
77 const std::vector<variant>&
as_list()
const;
78 const std::map<variant, variant>&
as_map()
const;
84 must_be(VARIANT_TYPE::TYPE_CALLABLE);
149 return type().to_string();
167 return value_->get_type();
variant execute_variant(const variant &to_exec)
std::string type_string() const
Gets string name of the current value type.
void must_both_be(VARIANT_TYPE t, const variant &second) const
std::shared_ptr< variant_value_base > value_base_ptr
value_base_ptr value_
Variant value.
bool contains(const variant &other) const
variant operator-() const
const std::map< variant, variant > & as_map() const
static std::shared_ptr< T > value_cast(value_base_ptr ptr)
Casts a variant_value_base shared pointer to a new derived type.
variant operator%(const variant &) const
const std::vector< variant > & as_list() const
const std::string & as_string() const
bool operator<=(const variant &) const
variant & operator=(const variant &v)=default
int as_decimal() const
Returns variant's internal representation of decimal number: ie, 1.234 is represented as 1234...
std::shared_ptr< T > value_cast() const
variant(std::shared_ptr< T > callable)
void serialize_from_string(const std::string &str)
variant list_elements_add(const variant &v) const
bool operator!=(const variant &) const
std::string serialize_to_string() const
variant_iterator end() const
void must_be(VARIANT_TYPE t) const
variant list_elements_mul(const variant &v) const
variant operator/(const variant &) const
variant build_range(const variant &v) const
std::string string_cast() const
const_formula_callable_ptr as_callable() const
variant list_elements_div(const variant &v) const
VARIANT_TYPE type() const
std::bidirectional_iterator_tag iterator_category
std::vector< const_formula_callable_ptr > formula_seen_stack
std::shared_ptr< const formula_callable > const_formula_callable_ptr
bool operator>(const variant &) const
const variant_value_base * container_
bool is_null() const
Functions to test the type of the internal value.
variant concatenate(const variant &v) const
std::shared_ptr< T > try_convert() const
variant operator+(const variant &) const
variant_iterator begin() const
variant get_values() const
bool operator<(const variant &) const
Base class for all variant types.
std::size_t num_elements() const
variant get_member(const std::string &name) const
Iterator class for the variant.
bool as_bool() const
Returns a boolean state of the variant value.
static map_location::DIRECTION n
bool operator>=(const variant &) const
variant operator[](std::size_t n) const
variant operator^(const variant &) const
std::shared_ptr< T > convert_to() const
variant list_elements_sub(const variant &v) const
variant operator*(const variant &) const
bool operator==(const variant &) const
std::string to_debug_string(bool verbose=false, formula_seen_stack *seen=nullptr) const