diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index a5c68f2..29b4acb 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -472,6 +472,22 @@ namespace chaiscript } } + + void add_global(const Boxed_Value &obj, const std::string &name) + { + validate_object_name(name); + + chaiscript::detail::threading::unique_lock l(m_global_object_mutex); + + if (m_state.m_global_objects.find(name) != m_state.m_global_objects.end()) + { + throw exception::name_conflict_error(name); + } else { + m_state.m_global_objects.insert(std::make_pair(name, obj)); + } + } + + /** * Adds a new scope to the stack */ diff --git a/include/chaiscript/language/chaiscript_engine.hpp b/include/chaiscript/language/chaiscript_engine.hpp index e526c8d..36a9fad 100644 --- a/include/chaiscript/language/chaiscript_engine.hpp +++ b/include/chaiscript/language/chaiscript_engine.hpp @@ -446,6 +446,12 @@ namespace chaiscript return *this; } + ChaiScript &add_global(const Boxed_Value &t_bv, const std::string &t_name) + { + m_engine.add_global(t_bv, t_name); + return *this; + } + /// \brief Represents the current state of the ChaiScript system. State and be saved and restored /// \sa ChaiScript::get_state /// \sa ChaiScript::set_state