11#ifndef CHAISCRIPT_DYNAMIC_OBJECT_HPP_
12#define CHAISCRIPT_DYNAMIC_OBJECT_HPP_
33 :
std::runtime_error(
"option explicit set and parameter '" + t_param_name +
"' does not exist")
47 : m_type_name(
std::move(t_type_name)), m_option_explicit(false)
55 return m_option_explicit;
60 m_option_explicit = t_explicit;
80 auto a = m_attrs.find(t_attr_name);
82 if (a != m_attrs.end()) {
85 throw std::range_error(
"Attr not found '" + t_attr_name +
"' and cannot be added to const obj");
89 bool has_attr(
const std::string &t_attr_name)
const {
90 return m_attrs.find(t_attr_name) != m_attrs.end();
95 return m_attrs[t_attr_name];
100 if (m_option_explicit && m_attrs.find(t_method_name) == m_attrs.end()) {
109 if (m_option_explicit && m_attrs.find(t_method_name) == m_attrs.end()) {
122 const std::string m_type_name =
"";
123 bool m_option_explicit =
false;
125 std::map<std::string, Boxed_Value> m_attrs;
A wrapper for holding any valid C++ type. All types in ChaiScript are Boxed_Value objects.
Definition boxed_value.hpp:28
Definition type_conversions.hpp:321
Dynamic_Object(std::string t_type_name)
Definition dynamic_object.hpp:46
Boxed_Value & method_missing(const std::string &t_method_name)
Definition dynamic_object.hpp:98
std::string get_type_name() const
Definition dynamic_object.hpp:63
bool has_attr(const std::string &t_attr_name) const
Definition dynamic_object.hpp:89
Boxed_Value & get_attr(const std::string &t_attr_name)
Definition dynamic_object.hpp:93
std::map< std::string, Boxed_Value > get_attrs() const
Definition dynamic_object.hpp:116
void set_explicit(const bool t_explicit)
Definition dynamic_object.hpp:58
const Boxed_Value & get_attr(const std::string &t_attr_name) const
Definition dynamic_object.hpp:78
Boxed_Value & operator[](const std::string &t_attr_name)
Definition dynamic_object.hpp:73
const Boxed_Value & operator[](const std::string &t_attr_name) const
Definition dynamic_object.hpp:68
const Boxed_Value & method_missing(const std::string &t_method_name) const
Definition dynamic_object.hpp:107
bool is_explicit() const
Definition dynamic_object.hpp:53
Definition proxy_functions.hpp:196
Classes and functions specific to the runtime dispatch side of ChaiScript. Some items may be of use t...
Definition callable_traits.hpp:13
Namespace chaiscript contains every API call that the average user will be concerned with.
option_explicit_set(const std::string &t_param_name)
Definition dynamic_object.hpp:32
~option_explicit_set() noexcept override=default
option_explicit_set(const option_explicit_set &)=default