On Tue, Nov 11, 2008 at 2:19 AM, Rolf Wester <rolf.wester@ilt.fraunhofer.de> wrote:
Charles R Harris wrote:
> On Tue, Nov 11, 2008 at 1:24 AM, Rolf Wester
> <rolf.wester@ilt.fraunhofer.de>wrote:
>> Hi all,
>> I would like to wrap some C++ classes that use TNT-Arrays. Is it
>> possible to pass numpy arrays to C++ functions that expect TNT-Arrays as
>> function parameter? Does anybody know how the wrappers could be
>> generated using swig? I would be very appreciative for any help.
>> With kind regards
> IIRC, TNT does vectors and matrices, they have constructors, and they are
> contiguous. I think you can make wrappers, but it isn't going to be anything
> straight forward unless you can reuse the memory from a numpy array and I
> don't recall that that sort of constructor is available.
> Is TNT still active? It looked pretty dead last time I looked several years
> ago.
> Chuck
> ------------------------------------------------------------------------
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion

TNT has constructors like:

TNT::Array1D<double>(int n, double * data)

which do not allocate a new C-array but that use "data" as their data-array.

I don't think there is any easy way to do what you want without writing some code somewhere along the line. You can expose the C++ functions and TNT to python, but to use numpy arrays you will need some way to get the data back and forth between TNT arrays and numpy arrays. I suspect you will end up just copying data into TNT arrays, calling your function,  and then copying data back out of the result. Cython might be an alternative to swig for that.

It would help to have a better idea of what you want to do. Do you just want to wrap an existing bunch of functions that use TNT?