<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Doing the wrapping in an object oriented way is difficult, and maybe<br>not that useful. This does not prevent the API exposed to python to be
<br>OO, of course.</blockquote><div><br><br>I have some difficulties to do this in an automated way...<br>I&#39;m trying now to make a derived object from my function, without templates and, I&#39;m hoping so, with a correct interface 
i.e. double + 2*int to save make the conversions with numpy arrays.<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt; That works great for C then, not that well for C++...
<br>Well, this is an inherent problem of C++ when you try to use it from<br>other languages, but let&#39;s not start this (again :) ),</blockquote><div><br><br>:D<br><br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The example shows basic wrapping, and some facilities provided by<br>numpy to help. Again, ctype is pretty efficient as long as you do not<br>need to do convertion. If you call it thousand of times, it will be<br>slow, but this is more or less inherent to python (function calls are
<br>nowhere near as fast as in a compiled language, at least for now).</blockquote><div><br><br>It&#39;s for optimization, so the function will be called several hundreds of times, I suppose, and I tried porting the whole function to Python, but I&#39;m not sure that the Python version behaves like the C++ version - the results are not identic, so... -, thus the wrapping.
<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">SWIG may be better in your case because it is aware of C++ classes,<br>and is *compiling* an extension, whereas ctypes does not compile
<br>anything. This means that you do not have to care about binary<br>interfaces problemes between foreign object codes. SWIG parses a prett<br>good deal of C++, and is aware of classes (template is another matter,<br>obviously). numpy sources contain swig code to process automatically
<br>numpy arrays (that is convert C representation of a numpy array to a<br>simple C array and vice et versa), if I remember correctly.</blockquote><div><br><br>Yes, I will try to use this solution, I have trouble figuring how passing the output numpy array, Bill Baxter asked the same question today, at exactly the same time ;) Well, I saw on the docs that such arrays must be passed to the function, and already allocated, and that is a problem for me...
<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">There is also boost.python, but I don&#39;t know if its situation towards<br>
numpy array has changed (eg there was some code lying around to<br>represent numpy arrays in C++).</blockquote><div><br><br>That will be my next quest during the summer ;)<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
If I were you, and if there are only a few classes and a few member<br>functions, I would try the C wrapper called from python first.</blockquote><div><br></div></div><br>It&#39;s only one class and one method + the constructor. Not much but I&#39;m a real beginner in that domain. True, I could use the C API directly...
<br><br><br>Matthieu