summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/core/src/multiarray/descriptor.c11
-rw-r--r--numpy/core/src/multiarray/number.c82
-rw-r--r--numpy/core/src/multiarray/scalartypes.c.src151
-rw-r--r--numpy/core/src/umath/scalarmath.c.src60
4 files changed, 106 insertions, 198 deletions
diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c
index 56a0dbef8..962786679 100644
--- a/numpy/core/src/multiarray/descriptor.c
+++ b/numpy/core/src/multiarray/descriptor.c
@@ -3229,16 +3229,7 @@ descr_nonzero(PyObject *NPY_UNUSED(self))
}
static PyNumberMethods descr_as_number = {
- (binaryfunc)0, /* nb_add */
- (binaryfunc)0, /* nb_subtract */
- (binaryfunc)0, /* nb_multiply */
- (binaryfunc)0, /* nb_remainder */
- (binaryfunc)0, /* nb_divmod */
- (ternaryfunc)0, /* nb_power */
- (unaryfunc)0, /* nb_negative */
- (unaryfunc)0, /* nb_positive */
- (unaryfunc)0, /* nb_absolute */
- (inquiry)descr_nonzero, /* nb_nonzero */
+ .nb_bool = (inquiry)descr_nonzero,
};
/*************************************************************************
diff --git a/numpy/core/src/multiarray/number.c b/numpy/core/src/multiarray/number.c
index 21471a80a..19ac7d7f9 100644
--- a/numpy/core/src/multiarray/number.c
+++ b/numpy/core/src/multiarray/number.c
@@ -923,47 +923,43 @@ array_index(PyArrayObject *v)
NPY_NO_EXPORT PyNumberMethods array_as_number = {
- (binaryfunc)array_add, /*nb_add*/
- (binaryfunc)array_subtract, /*nb_subtract*/
- (binaryfunc)array_multiply, /*nb_multiply*/
- (binaryfunc)array_remainder, /*nb_remainder*/
- (binaryfunc)array_divmod, /*nb_divmod*/
- (ternaryfunc)array_power, /*nb_power*/
- (unaryfunc)array_negative, /*nb_neg*/
- (unaryfunc)array_positive, /*nb_pos*/
- (unaryfunc)array_absolute, /*(unaryfunc)array_abs,*/
- (inquiry)_array_nonzero, /*nb_nonzero*/
- (unaryfunc)array_invert, /*nb_invert*/
- (binaryfunc)array_left_shift, /*nb_lshift*/
- (binaryfunc)array_right_shift, /*nb_rshift*/
- (binaryfunc)array_bitwise_and, /*nb_and*/
- (binaryfunc)array_bitwise_xor, /*nb_xor*/
- (binaryfunc)array_bitwise_or, /*nb_or*/
- (unaryfunc)array_int, /*nb_int*/
- 0, /*nb_reserved*/
- (unaryfunc)array_float, /*nb_float*/
-
- /*
- * This code adds augmented assignment functionality
- * that was made available in Python 2.0
- */
- (binaryfunc)array_inplace_add, /*nb_inplace_add*/
- (binaryfunc)array_inplace_subtract, /*nb_inplace_subtract*/
- (binaryfunc)array_inplace_multiply, /*nb_inplace_multiply*/
- (binaryfunc)array_inplace_remainder, /*nb_inplace_remainder*/
- (ternaryfunc)array_inplace_power, /*nb_inplace_power*/
- (binaryfunc)array_inplace_left_shift, /*nb_inplace_lshift*/
- (binaryfunc)array_inplace_right_shift, /*nb_inplace_rshift*/
- (binaryfunc)array_inplace_bitwise_and, /*nb_inplace_and*/
- (binaryfunc)array_inplace_bitwise_xor, /*nb_inplace_xor*/
- (binaryfunc)array_inplace_bitwise_or, /*nb_inplace_or*/
-
- (binaryfunc)array_floor_divide, /*nb_floor_divide*/
- (binaryfunc)array_true_divide, /*nb_true_divide*/
- (binaryfunc)array_inplace_floor_divide, /*nb_inplace_floor_divide*/
- (binaryfunc)array_inplace_true_divide, /*nb_inplace_true_divide*/
- (unaryfunc)array_index, /*nb_index */
-
- (binaryfunc)array_matrix_multiply, /*nb_matrix_multiply*/
- (binaryfunc)array_inplace_matrix_multiply, /*nb_inplace_matrix_multiply*/
+ .nb_add = (binaryfunc)array_add,
+ .nb_subtract = (binaryfunc)array_subtract,
+ .nb_multiply = (binaryfunc)array_multiply,
+ .nb_remainder = (binaryfunc)array_remainder,
+ .nb_divmod = (binaryfunc)array_divmod,
+ .nb_power = (ternaryfunc)array_power,
+ .nb_negative = (unaryfunc)array_negative,
+ .nb_positive = (unaryfunc)array_positive,
+ .nb_absolute = (unaryfunc)array_absolute,
+ .nb_bool = (inquiry)_array_nonzero,
+ .nb_invert = (unaryfunc)array_invert,
+ .nb_lshift = (binaryfunc)array_left_shift,
+ .nb_rshift = (binaryfunc)array_right_shift,
+ .nb_and = (binaryfunc)array_bitwise_and,
+ .nb_xor = (binaryfunc)array_bitwise_xor,
+ .nb_or = (binaryfunc)array_bitwise_or,
+
+ .nb_int = (unaryfunc)array_int,
+ .nb_float = (unaryfunc)array_float,
+ .nb_index = (unaryfunc)array_index,
+
+ .nb_inplace_add = (binaryfunc)array_inplace_add,
+ .nb_inplace_subtract = (binaryfunc)array_inplace_subtract,
+ .nb_inplace_multiply = (binaryfunc)array_inplace_multiply,
+ .nb_inplace_remainder = (binaryfunc)array_inplace_remainder,
+ .nb_inplace_power = (ternaryfunc)array_inplace_power,
+ .nb_inplace_lshift = (binaryfunc)array_inplace_left_shift,
+ .nb_inplace_rshift = (binaryfunc)array_inplace_right_shift,
+ .nb_inplace_and = (binaryfunc)array_inplace_bitwise_and,
+ .nb_inplace_xor = (binaryfunc)array_inplace_bitwise_xor,
+ .nb_inplace_or = (binaryfunc)array_inplace_bitwise_or,
+
+ .nb_floor_divide = (binaryfunc)array_floor_divide,
+ .nb_true_divide = (binaryfunc)array_true_divide,
+ .nb_inplace_floor_divide = (binaryfunc)array_inplace_floor_divide,
+ .nb_inplace_true_divide = (binaryfunc)array_inplace_true_divide,
+
+ .nb_matrix_multiply = (binaryfunc)array_matrix_multiply,
+ .nb_inplace_matrix_multiply = (binaryfunc)array_inplace_matrix_multiply,
};
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src
index 55d74873a..7657e39ee 100644
--- a/numpy/core/src/multiarray/scalartypes.c.src
+++ b/numpy/core/src/multiarray/scalartypes.c.src
@@ -971,42 +971,26 @@ static PyObject *
/**end repeat**/
static PyNumberMethods gentype_as_number = {
- (binaryfunc)gentype_add, /*nb_add*/
- (binaryfunc)gentype_subtract, /*nb_subtract*/
- (binaryfunc)gentype_multiply, /*nb_multiply*/
- (binaryfunc)gentype_remainder, /*nb_remainder*/
- (binaryfunc)gentype_divmod, /*nb_divmod*/
- (ternaryfunc)gentype_power, /*nb_power*/
- (unaryfunc)gentype_negative,
- (unaryfunc)gentype_positive, /*nb_pos*/
- (unaryfunc)gentype_absolute, /*(unaryfunc)gentype_abs,*/
- (inquiry)gentype_nonzero_number, /*nb_nonzero*/
- (unaryfunc)gentype_invert, /*nb_invert*/
- (binaryfunc)gentype_lshift, /*nb_lshift*/
- (binaryfunc)gentype_rshift, /*nb_rshift*/
- (binaryfunc)gentype_and, /*nb_and*/
- (binaryfunc)gentype_xor, /*nb_xor*/
- (binaryfunc)gentype_or, /*nb_or*/
- (unaryfunc)gentype_int, /*nb_int*/
- 0, /*nb_reserved*/
- (unaryfunc)gentype_float, /*nb_float*/
- 0, /*inplace_add*/
- 0, /*inplace_subtract*/
- 0, /*inplace_multiply*/
- 0, /*inplace_remainder*/
- 0, /*inplace_power*/
- 0, /*inplace_lshift*/
- 0, /*inplace_rshift*/
- 0, /*inplace_and*/
- 0, /*inplace_xor*/
- 0, /*inplace_or*/
- (binaryfunc)gentype_floor_divide, /*nb_floor_divide*/
- (binaryfunc)gentype_true_divide, /*nb_true_divide*/
- 0, /*nb_inplace_floor_divide*/
- 0, /*nb_inplace_true_divide*/
- (unaryfunc)NULL, /*nb_index*/
- 0, /*np_matmul*/
- 0, /*np_inplace_matmul*/
+ .nb_add = (binaryfunc)gentype_add,
+ .nb_subtract = (binaryfunc)gentype_subtract,
+ .nb_multiply = (binaryfunc)gentype_multiply,
+ .nb_remainder = (binaryfunc)gentype_remainder,
+ .nb_divmod = (binaryfunc)gentype_divmod,
+ .nb_power = (ternaryfunc)gentype_power,
+ .nb_negative = (unaryfunc)gentype_negative,
+ .nb_positive = (unaryfunc)gentype_positive,
+ .nb_absolute = (unaryfunc)gentype_absolute,
+ .nb_bool = (inquiry)gentype_nonzero_number,
+ .nb_invert = (unaryfunc)gentype_invert,
+ .nb_lshift = (binaryfunc)gentype_lshift,
+ .nb_rshift = (binaryfunc)gentype_rshift,
+ .nb_and = (binaryfunc)gentype_and,
+ .nb_xor = (binaryfunc)gentype_xor,
+ .nb_or = (binaryfunc)gentype_or,
+ .nb_int = (unaryfunc)gentype_int,
+ .nb_float = (unaryfunc)gentype_float,
+ .nb_floor_divide = (binaryfunc)gentype_floor_divide,
+ .nb_true_divide = (binaryfunc)gentype_true_divide,
};
@@ -2377,29 +2361,22 @@ fail:
}
static PyMappingMethods voidtype_as_mapping = {
- (lenfunc)voidtype_length, /*mp_length*/
- (binaryfunc)voidtype_subscript, /*mp_subscript*/
- (objobjargproc)voidtype_ass_subscript, /*mp_ass_subscript*/
+ .mp_length = (lenfunc)voidtype_length,
+ .mp_subscript = (binaryfunc)voidtype_subscript,
+ .mp_ass_subscript = (objobjargproc)voidtype_ass_subscript,
};
static PySequenceMethods voidtype_as_sequence = {
- (lenfunc)voidtype_length, /*sq_length*/
- 0, /*sq_concat*/
- 0, /*sq_repeat*/
- (ssizeargfunc)voidtype_item, /*sq_item*/
- 0, /*sq_slice*/
- (ssizeobjargproc)voidtype_ass_item, /*sq_ass_item*/
- 0, /* ssq_ass_slice */
- 0, /* sq_contains */
- 0, /* sq_inplace_concat */
- 0, /* sq_inplace_repeat */
+ .sq_length = (lenfunc)voidtype_length,
+ .sq_item = (ssizeargfunc)voidtype_item,
+ .sq_ass_item = (ssizeobjargproc)voidtype_ass_item,
};
static PyBufferProcs gentype_as_buffer = {
- gentype_getbuffer, /* bf_getbuffer */
- NULL, /* bf_releasebuffer */
+ .bf_getbuffer = gentype_getbuffer,
+ /* release buffer not defined (see buffer.c) */
};
@@ -2745,44 +2722,10 @@ bool_index(PyObject *a)
/* Arithmetic methods -- only so we can override &, |, ^. */
NPY_NO_EXPORT PyNumberMethods bool_arrtype_as_number = {
- 0, /* nb_add */
- 0, /* nb_subtract */
- 0, /* nb_multiply */
- 0, /* nb_remainder */
- 0, /* nb_divmod */
- 0, /* nb_power */
- 0, /* nb_negative */
- 0, /* nb_positive */
- 0, /* nb_absolute */
- (inquiry)bool_arrtype_nonzero, /* nb_nonzero / nb_bool */
- 0, /* nb_invert */
- 0, /* nb_lshift */
- 0, /* nb_rshift */
- (binaryfunc)bool_arrtype_and, /* nb_and */
- (binaryfunc)bool_arrtype_xor, /* nb_xor */
- (binaryfunc)bool_arrtype_or, /* nb_or */
- 0, /* nb_int */
- 0, /* nb_reserved */
- 0, /* nb_float */
- /* Added in release 2.0 */
- 0, /* nb_inplace_add */
- 0, /* nb_inplace_subtract */
- 0, /* nb_inplace_multiply */
- 0, /* nb_inplace_remainder */
- 0, /* nb_inplace_power */
- 0, /* nb_inplace_lshift */
- 0, /* nb_inplace_rshift */
- 0, /* nb_inplace_and */
- 0, /* nb_inplace_xor */
- 0, /* nb_inplace_or */
- /* Added in release 2.2 */
- /* The following require the Py_TPFLAGS_HAVE_CLASS flag */
- 0, /* nb_floor_divide */
- 0, /* nb_true_divide */
- 0, /* nb_inplace_floor_divide */
- 0, /* nb_inplace_true_divide */
- /* Added in release 2.5 */
- 0, /* nb_index */
+ .nb_bool = (inquiry)bool_arrtype_nonzero,
+ .nb_and = (binaryfunc)bool_arrtype_and,
+ .nb_xor = (binaryfunc)bool_arrtype_xor,
+ .nb_or = (binaryfunc)bool_arrtype_or,
};
static PyObject *
@@ -3119,22 +3062,18 @@ object_arrtype_inplace_repeat(PyObjectScalarObject *self, Py_ssize_t count)
}
static PySequenceMethods object_arrtype_as_sequence = {
- (lenfunc)object_arrtype_length, /*sq_length*/
- (binaryfunc)object_arrtype_concat, /*sq_concat*/
- (ssizeargfunc)object_arrtype_repeat, /*sq_repeat*/
- 0, /*sq_item*/
- 0, /*sq_slice*/
- 0, /* sq_ass_item */
- 0, /* sq_ass_slice */
- (objobjproc)object_arrtype_contains, /* sq_contains */
- (binaryfunc)object_arrtype_inplace_concat, /* sq_inplace_concat */
- (ssizeargfunc)object_arrtype_inplace_repeat, /* sq_inplace_repeat */
+ .sq_length = (lenfunc)object_arrtype_length,
+ .sq_concat = (binaryfunc)object_arrtype_concat,
+ .sq_repeat = (ssizeargfunc)object_arrtype_repeat,
+ .sq_contains = (objobjproc)object_arrtype_contains,
+ .sq_inplace_concat = (binaryfunc)object_arrtype_inplace_concat,
+ .sq_inplace_repeat = (ssizeargfunc)object_arrtype_inplace_repeat,
};
static PyMappingMethods object_arrtype_as_mapping = {
- (lenfunc)object_arrtype_length,
- (binaryfunc)object_arrtype_subscript,
- (objobjargproc)object_arrtype_ass_subscript,
+ .mp_length = (lenfunc)object_arrtype_length,
+ .mp_subscript = (binaryfunc)object_arrtype_subscript,
+ .mp_ass_subscript = (objobjargproc)object_arrtype_ass_subscript,
};
static int
@@ -3164,8 +3103,8 @@ object_arrtype_releasebuffer(PyObjectScalarObject *self, Py_buffer *view)
}
static PyBufferProcs object_arrtype_as_buffer = {
- (getbufferproc)object_arrtype_getbuffer,
- (releasebufferproc)object_arrtype_releasebuffer,
+ .bf_getbuffer = (getbufferproc)object_arrtype_getbuffer,
+ .bf_releasebuffer = (releasebufferproc)object_arrtype_releasebuffer,
};
static PyObject *
@@ -3269,9 +3208,7 @@ NPY_NO_EXPORT PyTypeObject Py@NAME@ArrType_Type = {
static PyMappingMethods gentype_as_mapping = {
- NULL,
- (binaryfunc)gen_arrtype_subscript,
- NULL
+ .mp_subscript = (binaryfunc)gen_arrtype_subscript,
};
diff --git a/numpy/core/src/umath/scalarmath.c.src b/numpy/core/src/umath/scalarmath.c.src
index b3826eef4..bb2915e09 100644
--- a/numpy/core/src/umath/scalarmath.c.src
+++ b/numpy/core/src/umath/scalarmath.c.src
@@ -1513,44 +1513,28 @@ static PyObject*
* cfloat, cdouble, clongdouble#
**/
static PyNumberMethods @name@_as_number = {
- (binaryfunc)@name@_add, /*nb_add*/
- (binaryfunc)@name@_subtract, /*nb_subtract*/
- (binaryfunc)@name@_multiply, /*nb_multiply*/
- (binaryfunc)@name@_remainder, /*nb_remainder*/
- (binaryfunc)@name@_divmod, /*nb_divmod*/
- (ternaryfunc)@name@_power, /*nb_power*/
- (unaryfunc)@name@_negative,
- (unaryfunc)@name@_positive, /*nb_pos*/
- (unaryfunc)@name@_absolute, /*nb_abs*/
- (inquiry)@name@_bool, /*nb_bool*/
- (unaryfunc)@name@_invert, /*nb_invert*/
- (binaryfunc)@name@_lshift, /*nb_lshift*/
- (binaryfunc)@name@_rshift, /*nb_rshift*/
- (binaryfunc)@name@_and, /*nb_and*/
- (binaryfunc)@name@_xor, /*nb_xor*/
- (binaryfunc)@name@_or, /*nb_or*/
- (unaryfunc)@name@_int, /*nb_int*/
- (unaryfunc)0, /*nb_reserved*/
- (unaryfunc)@name@_float, /*nb_float*/
- 0, /*inplace_add*/
- 0, /*inplace_subtract*/
- 0, /*inplace_multiply*/
- 0, /*inplace_remainder*/
- 0, /*inplace_power*/
- 0, /*inplace_lshift*/
- 0, /*inplace_rshift*/
- 0, /*inplace_and*/
- 0, /*inplace_xor*/
- 0, /*inplace_or*/
- (binaryfunc)@name@_floor_divide, /*nb_floor_divide*/
- (binaryfunc)@name@_true_divide, /*nb_true_divide*/
- 0, /*nb_inplace_floor_divide*/
- 0, /*nb_inplace_true_divide*/
- (unaryfunc)NULL, /*nb_index*/
-#if PY_VERSION_HEX >= 0x03050000
- 0, /*nb_matrix_multiply*/
- 0, /*nb_inplace_matrix_multiply*/
-#endif
+ .nb_add = (binaryfunc)@name@_add,
+ .nb_subtract = (binaryfunc)@name@_subtract,
+ .nb_multiply = (binaryfunc)@name@_multiply,
+ .nb_remainder = (binaryfunc)@name@_remainder,
+ .nb_divmod = (binaryfunc)@name@_divmod,
+ .nb_power = (ternaryfunc)@name@_power,
+ .nb_negative = (unaryfunc)@name@_negative,
+ .nb_positive = (unaryfunc)@name@_positive,
+ .nb_absolute = (unaryfunc)@name@_absolute,
+ .nb_bool = (inquiry)@name@_bool,
+ .nb_invert = (unaryfunc)@name@_invert,
+ .nb_lshift = (binaryfunc)@name@_lshift,
+ .nb_rshift = (binaryfunc)@name@_rshift,
+ .nb_and = (binaryfunc)@name@_and,
+ .nb_xor = (binaryfunc)@name@_xor,
+ .nb_or = (binaryfunc)@name@_or,
+ .nb_int = (unaryfunc)@name@_int,
+ .nb_float = (unaryfunc)@name@_float,
+ .nb_floor_divide = (binaryfunc)@name@_floor_divide,
+ .nb_true_divide = (binaryfunc)@name@_true_divide,
+ /* TODO: This struct/initialization should not be split between files */
+ .nb_index = (unaryfunc)NULL, /* set in add_scalarmath below */
};
/**end repeat**/