Add support for saving/restoring of chaiscript engine state.

This commit is contained in:
Jason Turner
2009-11-18 04:43:08 +00:00
parent 9f65303370
commit d3e4af433e
3 changed files with 70 additions and 21 deletions

View File

@@ -339,6 +339,32 @@ namespace chaiscript
return *this;
}
struct State
{
std::set<std::string> loaded_files;
typename Eval_Engine::State engine_state;
};
State get_state()
{
boost::lock_guard<boost::recursive_mutex> l(use_mutex);
boost::shared_lock<boost::shared_mutex> l2(mutex);
State s;
s.loaded_files = loaded_files;
s.engine_state = engine.get_state();
return s;
}
void set_state(const State &t_state)
{
boost::lock_guard<boost::recursive_mutex> l(use_mutex);
boost::shared_lock<boost::shared_mutex> l2(mutex);
loaded_files = t_state.loaded_files;
engine.set_state(t_state.engine_state);
}
/**
* Adds an object to the system: type, function, object
*/