diff options
Diffstat (limited to 'Plugins/skins/SkinLib/V8Script.h')
-rw-r--r-- | Plugins/skins/SkinLib/V8Script.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Plugins/skins/SkinLib/V8Script.h b/Plugins/skins/SkinLib/V8Script.h new file mode 100644 index 0000000..2611f47 --- /dev/null +++ b/Plugins/skins/SkinLib/V8Script.h @@ -0,0 +1,41 @@ +#ifndef __V8_SCRIPT_H__
+# define __V8_SCRIPT_H__
+
+#include <v8.h>
+#include "V8Wrappers.h"
+
+typedef void (*ExceptionCallback)(void *param, const TCHAR *err);
+
+
+class V8Script
+{
+public:
+ V8Script();
+ ~V8Script();
+
+ bool compile(const TCHAR *source, Dialog *dlg);
+ void dispose();
+
+ bool isValid();
+
+ SkinOptions * createOptions(Dialog *dlg);
+
+ bool run(DialogState * state, SkinOptions *opts);
+
+ void setExceptionCallback(ExceptionCallback cb, void *param = NULL);
+
+private:
+ V8Wrappers wrappers;
+ v8::Persistent<v8::Context> context;
+ v8::Persistent<v8::Script> script;
+
+ ExceptionCallback exceptionCallback;
+ void *exceptionCallbackParam;
+
+ v8::Handle<v8::Function> getOptionsFunction(Dialog *dlg);
+ void reportException(v8::TryCatch *try_catch);
+};
+
+
+
+#endif // __V8_SCRIPT_H__
|