blob: 1e2466b96169a95df6b67f620c5e203a72b9ee59 [file] [log] [blame]
#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