#ifndef NATIVE_JSE_H
#define NATIVE_JSE_H

#include "DoricExport.h"

#include "DoricInterfaceJSE.h"
#include "native/NativeExecutor.h"
#include "v8/V8Executor.h"

enum class JSEType { V8, Native };

class DORIC_EXPORT DoricNativeJSE : public DoricInterfaceJSE {
private:
  JSEType mType;

  V8Executor *v8Executor;
  NativeExecutor *nativeExecutor;

public:
  DoricNativeJSE(JSEType type);

  QString loadJS(QString script, QString source) override;

  void injectGlobalJSObject(QString name, QObject *object) override;

  void injectGlobalJSFunction(QString name, QObject *function,
                              QString property) override;

  QString invokeObject(QString objectName, QString functionName,
                       QVariantList arguments) override;
};

#endif // NATIVE_JSE_H