[Numpy-discussion] checking for array type in C extension
Berthold Hoellmann
berthold.hoellmann@gl-group....
Fri Jun 18 05:49:24 CDT 2010
Hello,
I do have problems for checking for integer array types in a C extension
under Windows. I've put together a small example to illustrate the
problem:
------------------------------------------------------------------------
hoel@pc090498 ~/pytest $ cat tst.c
#include <stdio.h>
#include "Python.h"
#include "numpy/arrayobject.h"
#define TRY(E) (E) ; if(PyErr_Occurred()) {fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); return NULL;}
static PyObject*
inttest_cfunc (PyObject *dummy, PyObject *args) {
PyArrayObject *array;
TRY(PyArg_ParseTuple(args, "O!:inttest", &PyArray_Type, &array));
fprintf(stderr, "PyArray_TYPE(array): %ld; NPY_INT: %ld\n", PyArray_TYPE(array), NPY_INT);
if (PyArray_TYPE(array) == NPY_INT) { fprintf(stderr, "found NPY_INT\n");
} else { fprintf(stderr, "NPY_INT not found\n"); }
Py_RETURN_NONE;
}
static PyMethodDef mymethods[] = {
{ "inttestfunc", inttest_cfunc, METH_VARARGS, "Doc string"},
{NULL, NULL, 0, NULL} /* Sentinel */
};
PyMODINIT_FUNC
inittst(void) {
(void)Py_InitModule("tst", mymethods);
import_array();
}
hoel@pc090498 ~/pytest $ python setup.py build
running build
...
hoel@pc090498 ~/pytest $ cat xx.py
import tst, sys
import numpy as np
print >>sys.stderr, np.__version__, np.__path__
tst.inttestfunc(np.array((1,2),dtype=np.int))
tst.inttestfunc(np.array((1,2),dtype=np.int8))
tst.inttestfunc(np.array((1,2),dtype=np.int16))
tst.inttestfunc(np.array((1,2),dtype=np.int32))
tst.inttestfunc(np.array((1,2),dtype=np.int64))
hoel@pc090498 ~/pytest $ PYTHONPATH=build/lib.win32-2.5/ python xx.py
1.4.1 ['C:\\Python25\\lib\\site-packages\\numpy']
PyArray_TYPE(array): 7; NPY_INT: 5
NPY_INT not found
PyArray_TYPE(array): 1; NPY_INT: 5
NPY_INT not found
PyArray_TYPE(array): 3; NPY_INT: 5
NPY_INT not found
PyArray_TYPE(array): 7; NPY_INT: 5
NPY_INT not found
PyArray_TYPE(array): 9; NPY_INT: 5
NPY_INT not found
------------------------------------------------------------------------
NPY_INT32 is 7, but shouldn't NPY_INT correspond to numpy.int. And what
kind of int is NPY_INT in this case?
Kind regards
Berthold Höllmann
--
Germanischer Lloyd AG
Berthold Höllmann
Project Engineer, CAE Development
Brooktorkai 18
20457 Hamburg
Germany
Phone: +49(0)40 36149-7374
Fax: +49(0)40 36149-7320
e-mail: berthold.hoellmann@gl-group.com
Internet: http://www.gl-group.com
This e-mail and any attachment thereto may contain confidential information and/or information protected by intellectual property rights for the exclusive attention of the intended addressees named above. Any access of third parties to this e-mail is unauthorised. Any use of this e-mail by unintended recipients such as total or partial copying, distribution, disclosure etc. is prohibited and may be unlawful. When addressed to our clients the content of this e-mail is subject to the General Terms and Conditions of GL's Group of Companies applicable at the date of this e-mail.
If you have received this e-mail in error, please notify the sender either by telephone or by e-mail and delete the material from any computer.
GL's Group of Companies does not warrant and/or guarantee that this message at the moment of receipt is authentic, correct and its communication free of errors, interruption etc.
Germanischer Lloyd AG, 31393 AG HH, Hamburg, Vorstand: Dr. Hermann J. Klein, Dr. Joachim Segatz, Pekka Paasivaara, Vorsitzender des Aufsichtsrats: Dr. Wolfgang Peiner
More information about the NumPy-Discussion
mailing list