28 class formula_callable;
30 class variant_value_base;
31 class variant_iterator;
47 explicit variant(
const std::vector<variant>& array);
48 explicit variant(std::vector<variant>&& array);
49 explicit variant(
const std::string& str);
50 explicit variant(std::string&& str);
51 explicit variant(
const std::map<variant, variant>& map);
52 explicit variant(std::map<variant, variant>&& map);
69 bool is_null()
const {
return type() == formula_variant::type::null; }
70 bool is_int()
const {
return type() == formula_variant::type::integer; }
73 bool is_list()
const {
return type() == formula_variant::type::list; }
74 bool is_string()
const {
return type() == formula_variant::type::string; }
75 bool is_map()
const {
return type() == formula_variant::type::map; }
81 int as_int(
int fallback = 0)
const;
92 const std::vector<variant>&
as_list()
const;
93 const std::map<variant, variant>&
as_map()
const;
143 std::shared_ptr<variant_value_base>
value_;
MacOS doesn't support std::any_cast when targing MacOS < 10.14 (currently we target 10....
Iterator class for the variant.
bool operator!=(const variant_iterator &that) const
const variant_value_base * container_
variant operator*() const
bool operator==(const variant_iterator &that) const
variant_iterator & operator--()
std::bidirectional_iterator_tag iterator_category
formula_variant::type type_
variant_iterator()
Constructor for a no-op iterator.
variant_iterator & operator++()
Base class for all variant types.
variant operator-() const
variant operator^(const variant &) const
variant concatenate(const variant &v) const
variant_iterator begin() const
variant & operator=(const variant &v)=default
std::shared_ptr< variant_value_base > value_
int as_int(int fallback=0) const
Returns the variant's value as an integer.
variant operator/(const variant &) const
variant get_values() const
friend std::shared_ptr< T > value_cast(const variant &v)
void serialize_from_string(const std::string &str)
int as_decimal(int fallback=0) const
Returns the variant's internal representation of decimal number: ie, 1.234 is represented as 1234.
const_formula_callable_ptr as_callable() const
bool operator>=(const variant &) const
variant(variant &&v)=default
std::size_t num_elements() const
formula_variant::type type() const
variant(const variant &v)=default
bool operator!=(const variant &) const
variant operator+(const variant &) const
bool contains(const variant &other) const
bool operator==(const variant &) const
bool operator>(const variant &) const
variant operator*(const variant &) const
variant get_member(const std::string &name) const
variant list_elements_mul(const variant &v) const
std::string serialize_to_string() const
variant list_elements_add(const variant &v) const
const std::string & as_string() const
std::string string_cast() const
variant list_elements_div(const variant &v) const
variant_iterator end() const
bool as_bool() const
Returns a boolean state of the variant value.
bool operator<(const variant &) const
variant & operator=(variant &&v)=default
variant operator[](std::size_t n) const
variant build_range(const variant &v) const
variant operator%(const variant &) const
const std::vector< variant > & as_list() const
bool operator<=(const variant &) const
std::string to_debug_string(bool verbose=false, formula_seen_stack *seen=nullptr) const
const std::map< variant, variant > & as_map() const
bool is_null() const
Functions to test the type of the internal value.
variant list_elements_sub(const variant &v) const
std::vector< const_formula_callable_ptr > formula_seen_stack
std::shared_ptr< const formula_callable > const_formula_callable_ptr
variant execute_actions(const variant &execute, const variant &context)
Executes all action_callables in execute using the provided context.
Base class for all the errors encountered by the engine.
type_error(const std::string &str)
static map_location::direction n