#ifndef __V8_SCRIPT_H__ # define __V8_SCRIPT_H__ #include #include #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(); std::pair configure(Dialog *dlg); bool run(DialogState * state, SkinOptions *opts); void setExceptionCallback(ExceptionCallback cb, void *param = NULL); private: V8Wrappers wrappers; v8::Persistent context; v8::Persistent script; ExceptionCallback exceptionCallback; void *exceptionCallbackParam; v8::Handle getConfigureFunction(Dialog *dlg); void reportException(v8::TryCatch *try_catch); }; #endif // __V8_SCRIPT_H__