newbie: PyArray_Check difficulties

I'm having a problem with PyArray_Check. If I just call PyArray_Check(args) I don't have a problem, but if I try to assign the result to anything, etc., it crashes (due to acces violation). So, for example the code at the end of this note doesn't work, yet I know an array is being passed and I can, for example, calculate its trace correctly if I type cast it as a PyArrayObject*.
Also, a more general question: is this the recommended way to input numpy arrays when using swig, or do most people find it easier to use more elaborate typemaps, or something else?
Finally, I apologize if this is the wrong forum to post this question. Please let me know.
Thanks, Tom
Method from C++ class:
PyObject * Test01::trace(PyObject * args) { if (!(PyArray_Check(args))) { // <- crashes here PyErr_SetString(PyExc_ValueError, "must use NumPy array"); return NULL; } return NULL; }
Swig file: (where typemaps are the ones included with most recent swig)
/* TMatrix.i */ %module Ptest %include "typemaps.i" %{ #include "Test01.h" %}
class Test01 { public: PyObject * trace(PyObject *INPUT); Test01(); virtual ~Test01(); };
Python code:
import Ptest t = Ptest.Test01()
import Numeric a = Numeric.arange(1.1, 2.7, .1) b = Numeric.reshape(a, (4,4))
x = t.trace(b)
participants (1)
-
Tom Adelman