| #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 |