[vtkusers] mapping a different wrapping to SWIG wrapping

tom fogal tfogal at apollo.sr.unh.edu
Fri Feb 18 16:50:33 EST 2005

Hi all, I seem to have hit a wall in terms of application structure due
to the fact that the VTK library produces its own wrapping which is not
recognized by SWIG.

I have a C++ setup that is similar to:

class Foo {
	void Bar(vtkDataSet*) const;

the problem is that when trying to use this from python (via SWIG

import Foo
import vtkpython

foo = Foo.Foo()

I get a "TypeError: Expected a pointer". I think I know why -- SWIG
wraps the Bar method so that a C++-instantiated vtkDataSet can be
passed into the python method, but that vtkDataSet is not actually
usable from python (the pointer actually ends up like a python string
of sorts similar to "_p_vtkDataSet").

VTK on the other hand creates a wrapper that hides the fact that an
object is really a pointer. Thus vtkpython.vtkRectilinearGrid() gives a
python object back that is actually usable from within python, and
apparently NOT in a form that can be given back to C/C++ easily.

Thus the problem is Bar wants an object that is actually a pointer,
even though that "pointer" is represented a little funky when its
visible from python. This doesn't work because VTK wrapping does not
give a pointer.

Is anyone trying to use SWIG and VTK, or has run into this problem with
other libraries? What can I do? Is there a method that a majority of
VTK objects have that gives a pointer and might be mappable to the
pointer representation SWIG wrapping expects?

Or perhaps there is an ideas for alternate application structure?



More information about the vtkusers mailing list