From e0efa719ab0872b852a1c50108b0b3ac73abb630 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 31 Jul 2007 15:38:31 +0000 Subject: First steps towards Ingen SWIG bindings. git-svn-id: http://svn.drobilla.net/lad/ingen@661 a436a847-0d15-0410-975c-d299462d15a1 --- src/bindings/Makefile.am | 28 ++++++++++++++++++++++++++++ src/bindings/ingen.i | 39 +++++++++++++++++++++++++++++++++++++++ src/bindings/test_ingen.py | 8 ++++++++ 3 files changed, 75 insertions(+) create mode 100644 src/bindings/Makefile.am create mode 100644 src/bindings/ingen.i create mode 100755 src/bindings/test_ingen.py (limited to 'src/bindings') diff --git a/src/bindings/Makefile.am b/src/bindings/Makefile.am new file mode 100644 index 00000000..8935eebb --- /dev/null +++ b/src/bindings/Makefile.am @@ -0,0 +1,28 @@ +FLAGS = @RAUL_CFLAGS@ @GLIBMM_CFLAGS@ -I$(top_srcdir)/ingen/src/common +LIBS = @RAUL_LIBS@ @GLIBMM_LIBS@ +AM_CXXFLAGS = -I/usr/include/python2.4 $(FLAGS) + +EXTRA_DIST = ingen.i ingen_test.py + +if WITH_SWIG +bindingsdir = $(libdir)/ingen +bindings_LTLIBRARIES = libingen_bindings.la +libingen_bindings_la_LDFLAGS = -no-undefined -module -avoid-version +libingen_bindings_la_LIBADD = @RAUL_LIBS@ @GLIBMM_LIBS@ ../libs/module/libingen_module.la +libingen_bindings_la_SOURCES = ingen_wrap.cxx + +swig: ingen.i + swig -c++ -Wall $(FLAGS) -python ingen.i + +libingen_bindings_la: swig ingen_wrap.cxx + +all-local: + ln -sf .libs/libingen_bindings.so _ingen.so + +#libtool --mode=compile g++ -fPIC -shared $(CXXFLAGS) $(FLAGS) $(LIBS) -I/usr/include/python2.4 ingen_wrap.cxx -o libingen_python.so.0.0.0 +endif + +clean-local: + rm *.cxx + rm *.so + rm *.o diff --git a/src/bindings/ingen.i b/src/bindings/ingen.i new file mode 100644 index 00000000..e9a13dc3 --- /dev/null +++ b/src/bindings/ingen.i @@ -0,0 +1,39 @@ +%include "stl.i" +%module ingen +%{ +#include "../common/interface/ClientInterface.hpp" +#include "../common/interface/EngineInterface.hpp" +#include "../libs/module/World.hpp" +#include "../libs/module/module.h" + +namespace Ingen { namespace Shared { + class World; +} } +typedef Ingen::Shared::World World; +/*struct World { + World() { me = Ingen::Shared::get_world(); } + Ingen::Shared::World* me; +};*/ +%} + +/*%ignore Ingen::Shared::EngineInterface;*/ + +%include "../common/interface/ClientInterface.hpp" +%include "../common/interface/EngineInterface.hpp" +/*%include "../libs/module/World.hpp" +%include "../libs/module/module.h"*/ +%include "../libs/module/module.h" + +using namespace Ingen::Shared; +namespace Ingen { namespace Shared { + class World; +} } +%typedef Ingen::Shared::World World; +/*struct World {};*/ +%extend World { + World() { return Ingen::Shared::get_world(); } + /*SLV2World slv2() { return $self->me->slv2_world; }*/ + +/*SharedPtr engine() { return $self->me->engine; }*/ +}; + diff --git a/src/bindings/test_ingen.py b/src/bindings/test_ingen.py new file mode 100755 index 00000000..93d524c6 --- /dev/null +++ b/src/bindings/test_ingen.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +import ingen + +world = ingen.World() +#w = ingen.get_world() +print world +e = world.engine +print e -- cgit v1.2.1