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

53 lines
1.4 KiB
C
Raw Normal View History

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