25 class formula_callable;
26 class variant_iterator;
37 explicit variant(
const std::vector<variant>& array);
38 explicit variant(
const std::string& str);
39 explicit variant(
const std::map<variant, variant>& map);
62 bool is_null()
const {
return type() == formula_variant::type::null; }
63 bool is_int()
const {
return type() == formula_variant::type::integer; }
66 bool is_list()
const {
return type() == formula_variant::type::list; }
67 bool is_string()
const {
return type() == formula_variant::type::string; }
68 bool is_map()
const {
return type() == formula_variant::type::map; }
78 const std::vector<variant>&
as_list()
const;
79 const std::map<variant, variant>&
as_map()
const;
85 must_be(formula_variant::type::object);
168 return value_->get_type();
variant execute_variant(const variant &to_exec)
std::string type_string() const
Gets string name of the current value type.
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
formula_variant::type type_
int as_decimal() const
Returns variant's internal representation of decimal number: ie, 1.234 is represented as 1234...
void must_be(formula_variant::type t) const
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
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
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_
formula_variant::type type() const
void must_both_be(formula_variant::type t, const variant &second) const
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
static std::string get_string(enum_type key)
Converts a enum to its string equivalent.