summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2020-01-22 15:50:42 -0800
committerGitHub <noreply@github.com>2020-01-22 15:50:42 -0800
commit54f0f6e9aeff673551ccfa272fa82a27edb89552 (patch)
tree8f3a19acbb947f46f2dfe3cfefa785eb8ef73bb5 /numpy
parent1f89724d2133dcc74a11bbf9ca3468164e6bf044 (diff)
parentb7068dd6754df279248bac2cbec191866fb22784 (diff)
downloadnumpy-54f0f6e9aeff673551ccfa272fa82a27edb89552.tar.gz
Merge pull request #15386 from eric-wieser/tidy-scalar-macros
MAINT: clean up some macros in scalarapi.c
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/src/multiarray/scalarapi.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/numpy/core/src/multiarray/scalarapi.c b/numpy/core/src/multiarray/scalarapi.c
index 3a66df454..5c4332364 100644
--- a/numpy/core/src/multiarray/scalarapi.c
+++ b/numpy/core/src/multiarray/scalarapi.c
@@ -45,7 +45,7 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
type_num = descr->type_num;
}
switch (type_num) {
-#define CASE(ut,lt) case NPY_##ut: return &(((Py##lt##ScalarObject *)scalar)->obval)
+#define CASE(ut,lt) case NPY_##ut: return &PyArrayScalar_VAL(scalar, lt)
CASE(BOOL, Bool);
CASE(BYTE, Byte);
CASE(UBYTE, UByte);
@@ -73,7 +73,8 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
case NPY_UNICODE:
return (void *)PyUnicode_AS_DATA(scalar);
case NPY_VOID:
- return ((PyVoidScalarObject *)scalar)->obval;
+ /* Note: no & needed here, so can't use CASE */
+ return PyArrayScalar_VAL(scalar, Void);
}
/*
@@ -81,14 +82,13 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
* scalar it inherits from.
*/
-#define _CHK(cls) (PyObject_IsInstance(scalar, \
- (PyObject *)&Py##cls##ArrType_Type))
-#define _OBJ(lt) &(((Py##lt##ScalarObject *)scalar)->obval)
-#define _IFCASE(cls) if _CHK(cls) return _OBJ(cls)
+#define _CHK(cls) PyObject_IsInstance(scalar, \
+ (PyObject *)&Py##cls##ArrType_Type)
+#define _IFCASE(cls) if (_CHK(cls)) return &PyArrayScalar_VAL(scalar, cls)
- if _CHK(Number) {
- if _CHK(Integer) {
- if _CHK(SignedInteger) {
+ if (_CHK(Number)) {
+ if (_CHK(Integer)) {
+ if (_CHK(SignedInteger)) {
_IFCASE(Byte);
_IFCASE(Short);
_IFCASE(Int);
@@ -107,7 +107,7 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
}
else {
/* Inexact */
- if _CHK(Floating) {
+ if (_CHK(Floating)) {
_IFCASE(Half);
_IFCASE(Float);
_IFCASE(Double);
@@ -122,10 +122,10 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
}
}
else if (_CHK(Bool)) {
- return _OBJ(Bool);
+ return &PyArrayScalar_VAL(scalar, Bool);
}
else if (_CHK(Datetime)) {
- return _OBJ(Datetime);
+ return &PyArrayScalar_VAL(scalar, Datetime);
}
else if (_CHK(Flexible)) {
if (_CHK(String)) {
@@ -135,7 +135,8 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
return (void *)PyUnicode_AS_DATA(scalar);
}
if (_CHK(Void)) {
- return ((PyVoidScalarObject *)scalar)->obval;
+ /* Note: no & needed here, so can't use _IFCASE */
+ return PyArrayScalar_VAL(scalar, Void);
}
}
else {
@@ -156,7 +157,6 @@ scalar_value(PyObject *scalar, PyArray_Descr *descr)
}
return (void *)memloc;
#undef _IFCASE
-#undef _OBJ
#undef _CHK
}