[vtk-developers] python wrapping

Prabhu Ramachandran prabhu at aero.iitb.ac.in
Wed Mar 11 02:23:55 EDT 2009


On 03/10/09 23:02, Burlen Loring wrote:
> I'd like to understand more about how the VTK python wrapping works. Can 
> anyone recommend a starting point? Also of interest what CMake's role in 
> this is. What macros available, when to use such and such a macro, what 
> the purpose of arguments to the macros are?

Here is a quick overview (it has been a while so I may be off, I'll let 
others correct):

  0. Big picture: All the automated wrapping code generation relies on 
the consistent coding style followed in the VTK header files and the use 
of the convenience macros. Specific markers (in comments) in the header 
mark parts that are not to be parsed (BTX/ETX). Basically, a target 
language specific parser parses the header file figures out suitable 
wrapper functions in the desired target language and spits out the 
wrapper code that is used to generate the wrappings.

  1. First look in VTK/Wrapping.  Go over the files there.  Specifically 
look at vtkWrapPython.c which actually does the code generation for Python.

  2. When VTK is built, an executable called vtkWrapPython is built from 
this.

  3. vtkWrapPython generates the Python wrappers for each wrappable VTK 
header and this is built to generate the Python wrapper.

  4. The wrapper code makes use of Common/vtkPython.h 
Common/vtkPythonUtil.cxx  and Common/vtkPythonUtil.h for various things. 
Also note that Wrapping/hints is a mechanism for helping the wrapper 
code with, err, hints to help the wrapping process along.  To see what 
the individual codes represent see Wrapping/vtkParse.y and vtkParse.tab.c

  5. The VTK module for the vtk Python package is all in 
Wrapping/Python/vtk.  There is a rambling README in Wrapping/Python that 
might be of some use. There is also a nice README_WRAP.txt in the same 
directory that is useful.

I think that should give you a pretty solid start.

I think all CMake does is to build the parser and organize the building 
of the generated code, link it correctly (which can be a bloody pain) 
etc.  I don't think it directly does anything regarding the wrapper 
generation process.  Any useful CMake macros are best gleaned by looking 
at CMake files (at least thats how I used to do it).

HTH.

cheers,
prabhu



More information about the vtk-developers mailing list