From: Chris S. <chr...@gm...> - 2007-02-20 07:05:01
|
Thanks for the help Nitro and John. Chris On 2/19/07, John Lenz <jl...@ma...> wrote: > On 02/19/07 10:36, Chris Spencer wrote: > > Hi, > > > > I'm a bit new to Swig, but I've managed to get a simple Python wrapper > > setup for the rtNEAT C++ Library > > (http://nn.cs.utexas.edu/keyword?rtneat). I'm currently using a single > > .i file to contain 6 class definitions. Would it be more appropriate > > to define separate .i files for each class? If so, would I use the > > same %module name, or would I use a different name for each .i file? I > > want to create a single "pyneat" module, not separate modules for each > > component, but I couldn't find in the docs how mulitple %module > > directives are interpreted. > > There are several ways to organize multiple modules together, but > perhaps this is what you want. If you want multiple files to be created > into a single module, you can do something like > > In file pyneat.i: > > %module pyneat; > %include "class1.h/i" > %include "class2.h/i" > ... > > And each class1.h only include the class definitions and any other > directives, but no %module line. > > > > > Also, the library contains a few constructors with ifstream argument > > types. I was hoping I could pass a file object, but this doesn't work. > > How can I pass a file object in Python to a Swig function that accepts > > an ifstream? > > > > Check out typemaps... http://www.swig.org/Doc1.3/Typemaps.html > > There are some typemaps already written, try > Examples/test-suite/python/li_std_stream.i > Lib/python/std_iostream.i > Lib/std/std_iostream.i > > You might need to then also write a little wrapper on the python side, > which takes a python File object, and calls the correct functions. > Might also involve directors. > > John > |