diff options
Diffstat (limited to 'src/bindings')
-rw-r--r-- | src/bindings/ingen_bindings.cpp | 44 | ||||
-rw-r--r-- | src/bindings/ingen_bindings.hpp | 19 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/bindings/ingen_bindings.cpp b/src/bindings/ingen_bindings.cpp new file mode 100644 index 00000000..0f96feda --- /dev/null +++ b/src/bindings/ingen_bindings.cpp @@ -0,0 +1,44 @@ +#include <iostream> +#include "python2.4/Python.h" +#include "ingen_bindings.hpp" +#include "../libs/engine/Engine.hpp" + +using namespace std; + +namespace Ingen { +namespace Shared { + +Ingen::Shared::World* ingen_world = NULL; + +extern "C" { + +bool +run(Ingen::Shared::World* world, const char* filename) +{ + ingen_world = world; + + FILE* fd = fopen(filename, "r"); + if (fd) { + cerr << "EXECUTING " << filename << endl; + Py_Initialize(); + PyRun_SimpleFile(fd, filename); + Py_Finalize(); + return true; + } else { + cerr << "UNABLE TO OPEN FILE " << filename << endl; + return false; + } +} + + +void +script_iteration(Ingen::Shared::World* world) { + if (world->local_engine) + world->local_engine->main_iteration(); +} + + +} + +} // namespace Shared +} // namespace Ingen diff --git a/src/bindings/ingen_bindings.hpp b/src/bindings/ingen_bindings.hpp new file mode 100644 index 00000000..0d501de9 --- /dev/null +++ b/src/bindings/ingen_bindings.hpp @@ -0,0 +1,19 @@ +#ifndef INGEN_BINDINGS_HPP +#define INGEN_BINDINGS_HPP + +namespace Ingen { +namespace Shared { + + +class World; +extern World* ingen_world; + +extern "C" { + bool run(World* world, const char* filename); + void script_iteration(World* world); +} + +} // namespace Shared +} // namespace Ingen + +#endif // INGEN_BINDINGS_HPP |