c++ extension, problem passing argument

Matteo tadwelessar at gmail.com
Fri Mar 13 13:03:51 EDT 2009


Hi all,

I wrote a few c++ classes for some data analysis on a physics
esperiment. Now I want to glue the lot with Python, so I built the
necessary wrap code with SWIG and compiled the library with Distutils.
All is fine, I can import the module and classes work as expected...

...but for one thing. In the "Fitter" class I have a "findTrack"
method, which takes as argument (in c++) an array of pointers to
"WireHit" object (another class). In the python code I filled a list
with WireHit objects but passing that to the function raises an
exception:

here is the (relevant) code:

import wiredevents as we
...
hits_array = []
for i in range(nhit):
    hit_data = array('l')
    hit_data.fromfile(input, hit_data_size)
    hits_array.append(we.WireHit(*hit_data))
track = we.Fitter.findTrack(hits_array, nhit)

this crashes with:
Traceback (most recent call last):
  File "./python_version.py", line 37, in <module>
    track = we.Fitter.findTrack(hits_array, nhit)
TypeError: in method 'Fitter_findTrack', argument 1 of type 'WireHit
**'

how can I pass the right type to the function, without changing the C+
+ code?



More information about the Python-list mailing list