Skip to content

Commit 23e2526

Browse files
ENH: replace direct access of struct fields with macros and static inline functions (numpy#30996)
1 parent f234b97 commit 23e2526

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

numpy/_core/include/numpy/ndarrayobject.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,12 @@ NPY_TITLE_KEY_check(PyObject *key, PyObject *value)
239239
static inline npy_intp
240240
PyArray_ITEMSIZE(const PyArrayObject *arr)
241241
{
242-
return PyDataType_ELSIZE(((PyArrayObject_fields *)arr)->descr);
242+
return PyDataType_ELSIZE(PyArray_DESCR(arr));
243243
}
244244

245245
#define PyDataType_HASFIELDS(obj) (PyDataType_ISLEGACY((PyArray_Descr*)(obj)) && PyDataType_NAMES((PyArray_Descr*)(obj)) != NULL)
246246
#define PyDataType_HASSUBARRAY(dtype) (PyDataType_ISLEGACY(dtype) && PyDataType_SUBARRAY(dtype) != NULL)
247-
#define PyDataType_ISUNSIZED(dtype) ((dtype)->elsize == 0 && \
247+
#define PyDataType_ISUNSIZED(dtype) (PyDataType_ELSIZE((PyArray_Descr*)(dtype)) == 0 && \
248248
!PyDataType_HASFIELDS(dtype))
249249

250250
#define PyDataType_FLAGCHK(dtype, flag) \
@@ -270,8 +270,7 @@ PyArray_ITEMSIZE(const PyArrayObject *arr)
270270
static inline PyObject *
271271
PyArray_GETITEM(const PyArrayObject *arr, const char *itemptr)
272272
{
273-
return PyDataType_GetArrFuncs(((PyArrayObject_fields *)arr)->descr)->getitem(
274-
(void *)itemptr, (PyArrayObject *)arr);
273+
return PyDataType_GetArrFuncs(PyArray_DESCR(arr))->getitem((void *)itemptr, (PyArrayObject *)arr);
275274
}
276275

277276
/*
@@ -282,7 +281,7 @@ PyArray_GETITEM(const PyArrayObject *arr, const char *itemptr)
282281
static inline int
283282
PyArray_SETITEM(PyArrayObject *arr, char *itemptr, PyObject *v)
284283
{
285-
return PyDataType_GetArrFuncs(((PyArrayObject_fields *)arr)->descr)->setitem(v, itemptr, arr);
284+
return PyDataType_GetArrFuncs(PyArray_DESCR(arr))->setitem(v, itemptr, arr);
286285
}
287286
#endif /* not internal */
288287

numpy/_core/src/multiarray/dtypemeta.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ PyDataType_GetArrFuncs(const PyArray_Descr *descr)
287287
static inline PyObject *
288288
PyArray_GETITEM(const PyArrayObject *arr, const char *itemptr)
289289
{
290-
return PyDataType_GetArrFuncs(((PyArrayObject_fields *)arr)->descr)->getitem(
290+
return PyDataType_GetArrFuncs(PyArray_DESCR(arr))->getitem(
291291
(void *)itemptr, (PyArrayObject *)arr);
292292
}
293293

0 commit comments

Comments
 (0)