11 #include "interfaces/generic/ILanguageInvoker.h" 12 #include "interfaces/legacy/Addon.h" 13 #include "interfaces/python/LanguageHook.h" 14 #include "threads/CriticalSection.h" 15 #include "threads/Event.h" 21 typedef struct _object PyObject;
29 bool Execute(
const std::string& script,
30 const std::vector<std::string>& arguments = std::vector<std::string>())
override;
32 bool IsStopping()
const override {
return m_stop || ILanguageInvoker::IsStopping(); }
34 typedef PyObject* (*PythonModuleInitialization)();
38 bool execute(
const std::string& script,
const std::vector<std::string>& arguments)
override;
39 virtual void executeScript(FILE* fp,
const std::string& script, PyObject* moduleDict);
40 bool stop(
bool abort)
override;
41 void onExecutionDone()
override;
42 void onExecutionFailed()
override;
45 virtual std::map<std::string, PythonModuleInitialization> getModules()
const = 0;
46 virtual const char* getInitializationScript()
const = 0;
47 virtual void onInitialization();
49 virtual void onPythonModuleInitialization(
void* moduleDict);
50 virtual void onDeinitialization();
52 virtual void onSuccess() {}
53 virtual void onAbort() {}
54 virtual void onError(
const std::string& exceptionType =
"",
55 const std::string& exceptionValue =
"",
56 const std::string& exceptionTraceback =
"");
58 std::string m_sourceFile;
59 CCriticalSection m_critical;
62 void initializeModules(
const std::map<std::string, PythonModuleInitialization>& modules);
63 bool initializeModule(PythonModuleInitialization module);
64 void getAddonModuleDeps(
const ADDON::AddonPtr& addon, std::set<std::string>& paths);
65 bool execute(
const std::string& script, std::vector<std::wstring>& arguments);
66 FILE* PyFile_AsFileWithMode(PyObject* py_file,
const char* mode);
68 PyThreadState* m_threadState;
73 bool m_systemExitThrown =
false;
75 static CCriticalSection s_critical;
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: PythonInvoker.h:23
Definition: ILanguageInvocationHandler.h:13
Definition: ILanguageInvoker.h:31