Author: Stefan H. Muller <[email protected]>
Branch: pypy-pyarray
Changeset: r66338:53d9c2233349
Date: 2013-07-31 02:59 +0200
http://bitbucket.org/pypy/pypy/changeset/53d9c2233349/
Log: - cpyext/include/numpy/arrayobject.h: Many more definitions.
diff --git a/pypy/module/cpyext/include/numpy/arrayobject.h
b/pypy/module/cpyext/include/numpy/arrayobject.h
--- a/pypy/module/cpyext/include/numpy/arrayobject.h
+++ b/pypy/module/cpyext/include/numpy/arrayobject.h
@@ -7,6 +7,8 @@
extern "C" {
#endif
+#include <string.h> /* memset */
+
#include "old_defines.h"
#define NPY_INLINE
@@ -14,6 +16,9 @@
/* fake PyArrayObject so that code that doesn't do direct field access works */
#define PyArrayObject PyObject
+typedef unsigned char npy_bool;
+typedef unsigned char npy_uint8;
+
#ifndef npy_intp
#define npy_intp long
#endif
@@ -21,30 +26,8 @@
#define import_array()
#endif
-#ifndef PyArray_NDIM
-#define PyArray_ISCONTIGUOUS(arr) (1)
-
-#define PyArray_NDIM _PyArray_NDIM
-#define PyArray_DIM _PyArray_DIM
-#define PyArray_STRIDE _PyArray_STRIDE
-#define PyArray_SIZE _PyArray_SIZE
-#define PyArray_ITEMSIZE _PyArray_ITEMSIZE
-#define PyArray_NBYTES _PyArray_NBYTES
-#define PyArray_TYPE _PyArray_TYPE
-#define PyArray_DATA _PyArray_DATA
-
-#define PyArray_FromAny _PyArray_FromAny
-#define PyArray_FromObject _PyArray_FromObject
-#define PyArray_ContiguousFromObject PyArray_FromObject
-
-#define PyArray_SimpleNew _PyArray_SimpleNew
-#define PyArray_SimpleNewFromData _PyArray_SimpleNewFromData
-#define PyArray_SimpleNewFromDataOwning _PyArray_SimpleNewFromDataOwning
-
-#endif
-
-/* copied from numpy/ndarraytypes.h
+/* data types copied from numpy/ndarraytypes.h
* keep numbers in sync with micronumpy.interp_dtype.DTypeCache
*/
enum NPY_TYPES { NPY_BOOL=0,
@@ -86,6 +69,67 @@
#define NPY_COMPLEX32 NPY_CFLOAT
#define NPY_COMPLEX64 NPY_CDOUBLE
+
+/* functions */
+#ifndef PyArray_NDIM
+
+#define PyArray_ISCONTIGUOUS(arr) (1)
+
+#define PyArray_NDIM _PyArray_NDIM
+#define PyArray_DIM _PyArray_DIM
+#define PyArray_STRIDE _PyArray_STRIDE
+#define PyArray_SIZE _PyArray_SIZE
+#define PyArray_ITEMSIZE _PyArray_ITEMSIZE
+#define PyArray_NBYTES _PyArray_NBYTES
+#define PyArray_TYPE _PyArray_TYPE
+#define PyArray_DATA _PyArray_DATA
+
+#define PyArray_BYTES(obj) ((char *)PyArray_DATA(obj))
+
+#define PyArray_FromAny _PyArray_FromAny
+#define PyArray_FromObject _PyArray_FromObject
+#define PyArray_ContiguousFromObject PyArray_FromObject
+
+#define PyArray_SimpleNew _PyArray_SimpleNew
+#define PyArray_SimpleNewFromData _PyArray_SimpleNewFromData
+#define PyArray_SimpleNewFromDataOwning _PyArray_SimpleNewFromDataOwning
+
+#define PyArray_EMPTY(nd, dims, type_num, fortran) \
+ PyArray_SimpleNew(nd, dims, type_num)
+
+#define PyArray_ZEROS PyArray_EMPTY
+
+/*
+PyObject* PyArray_ZEROS(int nd, npy_intp* dims, int type_num, int fortran)
+{
+ PyObject *arr = PyArray_EMPTY(nd, dims, type_num, fortran);
+ memset(PyArray_DATA(arr), 0, PyArray_NBYTES(arr));
+ return arr;
+}
+*/
+
+/* Don't use these in loops! */
+
+#define PyArray_GETPTR1(obj, i) ((void *)(PyArray_BYTES(obj) + \
+ (i)*PyArray_STRIDE(obj,0)))
+
+#define PyArray_GETPTR2(obj, i, j) ((void *)(PyArray_BYTES(obj) + \
+ (i)*PyArray_STRIDE(obj,0) + \
+ (j)*PyArray_STRIDE(obj,1)))
+
+#define PyArray_GETPTR3(obj, i, j, k) ((void *)(PyArray_BYTES(obj) + \
+ (i)*PyArray_STRIDE(obj,0) + \
+ (j)*PyArray_STRIDE(obj,1) + \
+ (k)*PyArray_STRIDE(obj,2)))
+
+#define PyArray_GETPTR4(obj, i, j, k, l) ((void *)(PyArray_BYTES(obj) + \
+ (i)*PyArray_STRIDE(obj,0) + \
+ (j)*PyArray_STRIDE(obj,1) + \
+ (k)*PyArray_STRIDE(obj,2) + \
+ (l)*PyArray_STRIDE(obj,3)))
+
+#endif
+
#ifdef __cplusplus
}
#endif
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit