1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#ifndef JS_SHELL_H
#define JS_SHELL_H
#include <vector>
#include <string>
typedef void* HANDLE;
typedef void* MODULE;
class JSShell {
public:
enum Engine {
JSC = 0,
V8
};
public:
JSShell() {}
virtual ~JSShell() = 0;
static JSShell* Create(Engine engine = JSC);
std::string LoadModule(const std::string& name, HANDLE* library);
virtual bool RunScript(const std::string& scriptPath);
virtual bool RunShell();
void setModulePath(const std::vector<std::string>& modulePath) {
module_path = modulePath;
}
protected:
virtual bool InitializeEngine() = 0;
virtual bool ExecuteScript(const std::string& source, const std::string& scriptPath) = 0;
virtual bool DisposeEngine() = 0;
static std::string ReadFile(const std::string& fileName);
protected:
std::vector<HANDLE> loaded_modules;
std::vector<std::string> module_path;
};
#endif // JS_SHELL_H
|