summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2020-02-01 01:14:31 -0800
committerSebastian Berg <sebastian@sipsolutions.net>2020-02-01 08:55:29 -0800
commit35bfd4846d17f1eedd0bcc4a6b47fcf8688c48e2 (patch)
treef8c0261a41e81bb224abfefaa77f7ab4144dd927 /numpy
parent6dbfbc5da438ee6025ca26fab1c452b326061076 (diff)
downloadnumpy-35bfd4846d17f1eedd0bcc4a6b47fcf8688c48e2.tar.gz
MAINT: Use `.identifier = val` intializer for all type related structs
This changes it for most occurances (not quite all), some small slots, e.g. the buffer interface, are not changed unless close to another defintion. There are no large chuncks of "filler" zeros left though (except in rationaltests.c.src). --- This was not used previously due to it requiring C99. Python itself acknowledges that it can be used (they do almost not use it as of now), except inside header files due to C++ compatibility. See also (Found by Eric Wieser in PR): https://mail.python.org/pipermail/python-dev/2017-January/147154.html and PEP 7: https://www.python.org/dev/peps/pep-0007/#c-dialect
Diffstat (limited to 'numpy')
-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**/