Merge branch 'onupdate'
[Tsunagari.git] / src / scriptinst.cpp
blob749b642b68d972604f1f78a87aaf4a9154dc92e1
1 #include "log.h"
2 #include "python.h"
3 #include "resourcer.h"
4 #include "scriptinst.h"
6 struct invoke_visitor : public boost::static_visitor<bool>
8 bool operator()(std::string filename) const
10 if (filename.empty()) {
11 Log::err("Script",
12 "trying to run script, but filename is empty");
13 return false;
16 Resourcer* rc = Resourcer::instance();
17 return rc->runPythonScript(filename);
20 bool operator()(boost::python::object pyfn) const
22 try {
23 inPythonScript++;
24 pyfn();
25 inPythonScript--;
26 return true;
27 } catch (boost::python::error_already_set) {
28 inPythonScript--;
29 pythonErr();
30 return false;
35 ScriptInst::ScriptInst(const std::string& filename)
36 : data(filename)
40 ScriptInst::ScriptInst(boost::python::object pyfn)
41 : data(pyfn)
45 bool ScriptInst::invoke()
47 return boost::apply_visitor(invoke_visitor(), data);