25 #ifndef WSCRIPTINTERPRETERPYTHON_H
26 #define WSCRIPTINTERPRETERPYTHON_H
35 #include <boost/python.hpp>
36 #include <boost/thread/mutex.hpp>
38 #include "../../common/WThreadedRunner.h"
39 #include "../WScriptInterpreter.h"
40 #include "../wrappers/WLoggerWrapper.h"
41 #include "../wrappers/WModuleContainerWrapper.h"
43 namespace pb = boost::python;
56 explicit WScriptInterpreterPython( std::shared_ptr< WModuleContainer >
const& rootContainer );
61 virtual ~WScriptInterpreterPython();
74 virtual void setParameters( std::vector< std::string >
const& params );
81 virtual void execute( std::string
const& line );
95 virtual void executeFile( std::string
const& filename );
109 virtual std::string
const getName()
const;
128 explicit ScriptThread( WScriptInterpreterPython& interpreter );
133 virtual ~ScriptThread();
139 virtual void threadMain();
146 void addToExecuteQueue( std::string
const& script );
155 std::queue< std::string > m_scriptQueue;
158 boost::mutex m_queueMutex;
161 std::shared_ptr< WCondition > m_condition;
167 WScriptInterpreterPython& m_interpreter;
171 pb::object m_pyModule;
174 pb::object m_pyMainNamespace;
189 boost::mutex m_mutex;
192 ScriptThread m_scriptThread;
Class allowing multiple conditions to be used for one waiting cycle.
Encapsulates a module container.
An abstract base class for a script interpreter.
virtual void initBindings()=0
Initialize OpenWalnut-bindings.
virtual void execute(std::string const &line)=0
Execute some code.
virtual void executeFile(std::string const &filename)=0
Execute a file.
virtual std::string const getExtension() const =0
Get the default extension for script file belonging to the script interpreter's language.
virtual void executeFileAsync(std::string const &filename)=0
Execute a script file in a seperate thread.
virtual void setParameters(std::vector< std::string > const ¶ms)=0
Sets the script parameters.
virtual std::string const getName() const =0
Get the name of the language interpreted by this interpreter.
virtual void executeAsync(std::string const &script)=0
Execute a script in a seperate thread.
Base class for all classes needing to be executed in a separate thread.