From 25fb41044ca080b794cbf4e85ff10e74e571ea24 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sat, 18 Oct 2014 00:56:14 +0000 Subject: improved Variant.cpp, added ScriptEngine.hpp containing the script engine abstraction layer git-svn-id: file:///var/local/svn/basicwriter@72 daaaf23c-2e50-4459-9457-1e69db5a47bf --- src/core/script/ScriptEngine.cpp | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/core/script/ScriptEngine.cpp (limited to 'src/core/script/ScriptEngine.cpp') diff --git a/src/core/script/ScriptEngine.cpp b/src/core/script/ScriptEngine.cpp new file mode 100644 index 0000000..f34ccea --- /dev/null +++ b/src/core/script/ScriptEngine.cpp @@ -0,0 +1,65 @@ +/* + Ousía + Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include + +#include "ScriptEngine.hpp" + +namespace ousia { +namespace script { + +ScriptEngineException::ScriptEngineException(int line, int col, + const std::string &msg) : + line(line), col(col), + msg(std::to_string(line) + ":" + std::to_string(col) + " " + msg) {} + +ScriptEngineException::ScriptEngineException(const std::string &msg) : + line(-1), col(-1), msg(msg) {} + +const char* ScriptEngineException::what() const noexcept +{ + return msg.c_str(); +} + +void ScriptEngineFactory::registerScriptEngine(const std::string &name, + ScriptEngine *engine) +{ + registry[name] = engine; +} + +bool ScriptEngineFactory::unregisterScriptEngine(const std::string &name) +{ + return registry.erase(name) > 0; +} + +/* Class ScriptEngineFactory */ + +ScriptEngineScope* ScriptEngineFactory::createScope( + const std::string &name) const +{ + auto it = registry.find(name); + if (it != registry.end()) { + return it->second->createScope(); + } + return nullptr; +} + + +} +} + -- cgit v1.2.3