#ifndef V8EXECUTOR_H #define V8EXECUTOR_H #include "libplatform/libplatform.h" #include "v8.h" #include <QMap> #include <QObject> #include <QString> static QMap<QString, QPair<QObject *, QString>> *map = new QMap<QString, QPair<QObject *, QString>>(); class V8Executor { private: std::unique_ptr<v8::Platform> platform; v8::Isolate::CreateParams create_params; v8::Isolate *m_isolate; v8::Isolate::Scope *m_isolate_scope; v8::Global<v8::Context> *m_global_context; void injectObject(const char *string, v8::Local<v8::Value> local); v8::Local<v8::Value> innerExec(const char *script, const char *source, std::string *exception_str); void injectFunctions(const char *objectName, const char *functionName, bool hashKey); v8::Local<v8::Value> invokeMethod(const char *objectName, const char *functionName, int argc, v8::Local<v8::Value> argv[], std::string *exception_str); public: V8Executor(); ~V8Executor(); QString loadJS(QString script, QString source); void injectGlobalJSObject(QString name, std::string target); void injectGlobalJSFunction(QString name, QObject *function, QString property); void invokeObject(QString objectName, QString functionName, QVariantList arguments); }; #endif // V8EXECUTOR_H