2 Copyright (C) 2018, Sebastian Schmidt
5 This file is part of NetRadiant.
7 NetRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 NetRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with NetRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 #include "pybindconnector.h"
25 #include "../libs/pybind11/include/pybind11/embed.h"
26 #include <../libs/pybind11/include/pybind11/eval.h>
29 namespace py = pybind11;
31 static py::dict scope;
35 // // TODO: embedded modules
36 // PYBIND11_EMBEDDED_MODULE(radiant, m) {
37 // m.def("TODO", [](){});
41 void PYBIND_initializeInterpreter() {
42 py::initialize_interpreter();
43 scope = py::module::import("__main__").attr("__dict__");
46 std::string PYBIND_callfunction(std::string modulename,std::string functionname) {
47 py::object module = py::module::import(modulename.c_str());
48 py::object f = module.attr(functionname.c_str());
50 return result.cast<std::string>();
53 void PYBIND_exec(std::string code)
55 py::exec(code.c_str(), scope);
58 std::string PYBIND_scope_as_string()
60 return py::str(scope).cast<std::string>();
63 void PYBIND_finalizeInterpreter() {
65 py::finalize_interpreter();