[Numpy-discussion] NumPy wrapper for C output buffer of unknown size
Mark Heslep
mark at mitre.org
Fri Mar 10 18:15:01 CST 2006
I'm trying to come up with a _generic_, _reusable_ numpy wrapper for a C
output buffer of unknown size. That is, only the buffer pointer is
available from a function call, and it's size is available elsewhere.
For example, the buffer access might look like this:
char * func_returns_ptr_to_allocated_buffer() { ...}
And the size of the buffer is determined elsewhere by some other
'machinery'.
I'm using Swig* here, and left to itself Swig will neatly map the char*
to a Swig Python object, something like <Swig Object __p__char...>.
That's fine unless you want access to the buffer elements via NumPy.
I'm familiar with many of the fine NumPy typemaps posted here and on the
net, but they all assume a known array size and use a
PyArray_FromDimsandData (...SimpleFrom... w/ recent Numpy) with a dims
argument provided. Instead, is there some method where I can return a
numpy array of size zero (one?) that effectively captures the data
pointer and then allows me to resize on the Python side? I note the the
restrictions on the NumPy resize method: no previous reference, and
self->base=Null.
Its simple to solve this with a helper function custom to this
application but its not maintainable with the app-library as it
evolves. Extending the solution to any other data type is also no
problem. So, as stated above, is there a generic, numpy-thonic way to
solve this?
Mark
* Im open to other methods -ctypes, etc
More information about the Numpy-discussion
mailing list