
![]() | Macros can greatly simplify indexing:
#define IND1(a, i) *((double *)(a->data + i*a->strides[0])) #define IND2(a, i, j) \ *((double *)(a->data + i*a->strides[0] + j*a->strides[1])) |
![]() | Application:
for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
arglist = Py_BuildValue("(dd)", IND1(xcoor,i), IND1(ycoor,j));
result = PyEval_CallObject(func1, arglist);
Py_DECREF(arglist);
if (result == NULL) return NULL; /* exception in func1 */
IND2(a,i,j) = PyFloat_AS_DOUBLE(result);
Py_DECREF(result);
}
}
|