This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/doric-Qt/doric/engine/v8/V8Executor.h
2021-05-20 18:27:45 +08:00

53 lines
1.4 KiB
C++

#ifndef V8EXECUTOR_H
#define V8EXECUTOR_H
#include "libplatform/libplatform.h"
#include "v8/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