[Numpy-svn] r2894 - trunk/numpy/core/src
numpy-svn at scipy.org
numpy-svn at scipy.org
Wed Jul 26 07:37:55 EDT 2006
Author: cookedm
Date: 2006-07-26 06:37:51 -0500 (Wed, 26 Jul 2006)
New Revision: 2894
Modified:
trunk/numpy/core/src/arrayobject.c
trunk/numpy/core/src/arraytypes.inc.src
trunk/numpy/core/src/scalartypes.inc.src
Log:
Fix for longdouble not working on OS X with gcc 4 (#183).
Replace the _SOFFSET_ macro (which got the address of the obval member
by casting to a PyScalarObject) with a function scalar_value, which
checks the type_num. This allows Py*ScalarObject's to have different
binary layout than PyScalarObject (PyLongDoubleObject had its obval at
a different place due to alignment issues).
Modified: trunk/numpy/core/src/arrayobject.c
===================================================================
--- trunk/numpy/core/src/arrayobject.c 2006-07-25 22:36:18 UTC (rev 2893)
+++ trunk/numpy/core/src/arrayobject.c 2006-07-26 11:37:51 UTC (rev 2894)
@@ -1404,7 +1404,7 @@
}
}
else {
- destptr = _SOFFSET_(obj);
+ destptr = scalar_value(obj, NULL);
}
/* copyswap for OBJECT increments the reference count */
copyswap(destptr, data, swap, base);
Modified: trunk/numpy/core/src/arraytypes.inc.src
===================================================================
--- trunk/numpy/core/src/arraytypes.inc.src 2006-07-25 22:36:18 UTC (rev 2893)
+++ trunk/numpy/core/src/arraytypes.inc.src 2006-07-26 11:37:51 UTC (rev 2894)
@@ -178,13 +178,13 @@
}
/**end repeat**/
-static PyObject *
-LONGDOUBLE_getitem(char *ip, PyArrayObject *ap)
+static PyObject *
+LONGDOUBLE_getitem(char *ip, PyArrayObject *ap)
{
- return PyArray_Scalar(ip, ap->descr, NULL);
+ return PyArray_Scalar(ip, ap->descr, NULL);
}
-static int
+static int
LONGDOUBLE_setitem(PyObject *op, char *ov, PyArrayObject *ap) {
longdouble temp; /* ensures alignment */
@@ -192,17 +192,15 @@
temp = ((PyLongDoubleScalarObject *)op)->obval;
}
else {
- if (op == Py_None) temp = (longdouble)_getNAN();
- else temp = (longdouble)PyFloat_AsDouble(op);
+ temp = (longdouble) MyPyFloat_AsDouble(op);
}
if (PyErr_Occurred()) return -1;
- if (ap == NULL || PyArray_ISBEHAVED(ap))
+ if (ap == NULL || PyArray_ISBEHAVED(ap))
*((longdouble *)ov)=temp;
else {
copy_and_swap(ov, &temp, ap->descr->elsize, 1, 0,
!PyArray_ISNOTSWAPPED(ap));
}
-
return 0;
}
Modified: trunk/numpy/core/src/scalartypes.inc.src
===================================================================
--- trunk/numpy/core/src/scalartypes.inc.src 2006-07-25 22:36:18 UTC (rev 2893)
+++ trunk/numpy/core/src/scalartypes.inc.src 2006-07-26 11:37:51 UTC (rev 2894)
@@ -5,24 +5,22 @@
#endif
#include "numpy/arrayscalars.h"
-#define _SOFFSET_(obj) ((char *)obj + (offsetof(PyScalarObject, obval)))
-
static PyBoolScalarObject _PyArrayScalar_BoolValues[2] = {
{PyObject_HEAD_INIT(&PyBoolArrType_Type) 0},
{PyObject_HEAD_INIT(&PyBoolArrType_Type) 1},
};
-/* Inheritance established later when tp_bases is set (or tp_base for
+/* Inheritance established later when tp_bases is set (or tp_base for
single inheritance) */
/**begin repeat
-#name=number, integer, signedinteger, unsignedinteger, inexact, floating, complexfloating, flexible,
+#name=number, integer, signedinteger, unsignedinteger, inexact, floating, complexfloating, flexible,
character#
#NAME=Number, Integer, SignedInteger, UnsignedInteger, Inexact, Floating, ComplexFloating, Flexible, Character#
*/
-static PyTypeObject Py at NAME@ArrType_Type = {
+static PyTypeObject Py at NAME@ArrType_Type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"@name at scalar", /*tp_name*/
@@ -30,9 +28,49 @@
};
/**end repeat**/
+static void *
+scalar_value(PyObject *scalar, PyArray_Descr *descr)
+{
+ enum NPY_TYPES type_num;
+ if (descr == NULL) {
+ descr = PyArray_DescrFromScalar(scalar);
+ type_num = descr->type_num;
+ Py_DECREF(descr);
+ } else {
+ type_num = descr->type_num;
+ }
+ switch (type_num) {
+#define CASE(ut,lt) case NPY_##ut: return &(((Py##lt##ScalarObject *)scalar)->obval)
+ CASE(BOOL, Bool);
+ CASE(BYTE, Byte);
+ CASE(UBYTE, UByte);
+ CASE(SHORT, Short);
+ CASE(USHORT, UShort);
+ CASE(INT, Int);
+ CASE(UINT, UInt);
+ CASE(LONG, Long);
+ CASE(ULONG, ULong);
+ CASE(LONGLONG, LongLong);
+ CASE(ULONGLONG, ULongLong);
+ CASE(FLOAT, Float);
+ CASE(DOUBLE, Double);
+ CASE(LONGDOUBLE, LongDouble);
+ CASE(CFLOAT, CFloat);
+ CASE(CDOUBLE, CDouble);
+ CASE(CLONGDOUBLE, CLongDouble);
+ CASE(OBJECT, Object);
+#undef CASE
+ case NPY_STRING: return (void *)PyString_AS_STRING(scalar);
+ case NPY_UNICODE: return (void *)PyUnicode_AS_DATA(scalar);
+ case NPY_VOID: return ((PyVoidScalarObject *)scalar)->obval;
+ default:
+ return NULL;
+ }
+ return NULL;
+}
/* no error checking is performed -- ctypeptr must be same type as scalar */
-/* in case of flexible type, the data is not copied
+/* in case of flexible type, the data is not copied
into ctypeptr which is expected to be a pointer to pointer */
/*OBJECT_API
Convert to c-type
@@ -41,43 +79,35 @@
PyArray_ScalarAsCtype(PyObject *scalar, void *ctypeptr)
{
PyArray_Descr *typecode;
+ void *newptr;
typecode = PyArray_DescrFromScalar(scalar);
-
+ newptr = scalar_value(scalar, typecode);
+
if (PyTypeNum_ISEXTENDED(typecode->type_num)) {
- void **newptr = (void **)ctypeptr;
- switch(typecode->type_num) {
- case PyArray_STRING:
- *newptr = (void *)PyString_AS_STRING(scalar);
- break;
- case PyArray_UNICODE:
- *newptr = (void *)PyUnicode_AS_DATA(scalar);
- break;
- default:
- *newptr = ((PyVoidScalarObject *)scalar)->obval;
- break;
- }
- return;
+ void **ct = (void **)ctypeptr;
+ *ct = newptr;
+ } else {
+ memcpy(ctypeptr, newptr, typecode->elsize);
}
- memcpy(ctypeptr, _SOFFSET_(scalar), typecode->elsize);
Py_DECREF(typecode);
return;
}
/* The output buffer must be large-enough to receive the value */
/* Even for flexible types which is different from ScalarAsCtype
- where only a reference for flexible types is returned
+ where only a reference for flexible types is returned
*/
/*OBJECT_API
Cast Scalar to c-type
*/
static int
-PyArray_CastScalarToCtype(PyObject *scalar, void *ctypeptr,
+PyArray_CastScalarToCtype(PyObject *scalar, void *ctypeptr,
PyArray_Descr *outcode)
{
PyArray_Descr* descr;
PyArray_VectorUnaryFunc* castfunc;
-
+
descr = PyArray_DescrFromScalar(scalar);
castfunc = PyArray_GetCastFunc(descr, outcode->type_num);
if (castfunc == NULL) return -1;
@@ -87,11 +117,11 @@
ain = (PyArrayObject *)PyArray_FromScalar(scalar, NULL);
if (ain == NULL) {Py_DECREF(descr); return -1;}
- aout = (PyArrayObject *)\
- PyArray_NewFromDescr(&PyArray_Type,
+ aout = (PyArrayObject *)
+ PyArray_NewFromDescr(&PyArray_Type,
outcode,
- 0, NULL,
- NULL, ctypeptr,
+ 0, NULL,
+ NULL, ctypeptr,
CARRAY, NULL);
if (aout == NULL) {Py_DECREF(ain); return -1;}
castfunc(ain->data, aout->data, 1, ain, aout);
@@ -99,7 +129,7 @@
Py_DECREF(aout);
}
else {
- castfunc(_SOFFSET_(scalar), ctypeptr, 1, NULL, NULL);
+ castfunc(scalar_value(scalar, descr), ctypeptr, 1, NULL, NULL);
}
Py_DECREF(descr);
return 0;
@@ -115,12 +145,13 @@
PyArray_VectorUnaryFunc* castfunc;
castfunc = PyArray_GetCastFunc(indescr, outtype);
if (castfunc == NULL) return -1;
- castfunc(_SOFFSET_(scalar), ctypeptr, 1, NULL, NULL);
+ castfunc(scalar_value(scalar, indescr),
+ ctypeptr, 1, NULL, NULL);
return 0;
}
/* 0-dim array from array-scalar object */
-/* always contains a copy of the data
+/* always contains a copy of the data
unless outcode is NULL, it is of void type and the referrer does
not own it either.
*/
@@ -139,8 +170,8 @@
/* convert to 0-dim array of scalar typecode */
typecode = PyArray_DescrFromScalar(scalar);
- if ((typecode->type_num == PyArray_VOID) && \
- !(((PyVoidScalarObject *)scalar)->flags & OWNDATA) && \
+ if ((typecode->type_num == PyArray_VOID) &&
+ !(((PyVoidScalarObject *)scalar)->flags & OWNDATA) &&
outcode == NULL) {
r = PyArray_NewFromDescr(&PyArray_Type,
typecode,
@@ -152,53 +183,37 @@
Py_INCREF(scalar);
return r;
}
- r = PyArray_NewFromDescr(&PyArray_Type,
+ r = PyArray_NewFromDescr(&PyArray_Type,
typecode,
- 0, NULL,
+ 0, NULL,
NULL, NULL, 0, NULL);
if (r==NULL) {Py_XDECREF(outcode); return NULL;}
- switch(typecode->type_num) {
- case PyArray_STRING:
- memptr = PyString_AS_STRING(scalar);
- break;
- case PyArray_UNICODE:
- memptr = (char *)PyUnicode_AS_DATA(scalar);
-#ifdef Py_UNICODE_WIDE
- break;
-#else
- PyUCS2Buffer_AsUCS4((Py_UNICODE *)memptr,
+ memptr = scalar_value(scalar, typecode);
+#ifndef Py_UNICODE_WIDE
+ if (typecode->type_num == PyArray_UNICODE) {
+ PyUCS2Buffer_AsUCS4((Py_UNICODE *)memptr,
(PyArray_UCS4 *)PyArray_DATA(r),
PyUnicode_GET_SIZE(scalar),
PyArray_ITEMSIZE(r) >> 2);
- goto finish;
+ } else
#endif
- default:
- if (PyTypeNum_ISEXTENDED(typecode->type_num)) {
- memptr = (((PyVoidScalarObject *)scalar)->obval);
+ {
+ memcpy(PyArray_DATA(r), memptr, PyArray_ITEMSIZE(r));
+ if (PyArray_ISOBJECT(r)) {
+ Py_INCREF(*((PyObject **)memptr));
}
- else {
- memptr = _SOFFSET_(scalar);
- }
- break;
}
- memcpy(PyArray_DATA(r), memptr, PyArray_ITEMSIZE(r));
- if (PyArray_ISOBJECT(r)) {
- Py_INCREF(*((PyObject **)memptr));
- }
-#ifndef Py_UNICODE_WIDE
- finish:
-#endif
if (outcode == NULL) return r;
-
+
if (outcode->type_num == typecode->type_num) {
if (!PyTypeNum_ISEXTENDED(typecode->type_num))
return r;
if (outcode->elsize == typecode->elsize);
- return r;
+ return r;
}
-
+
/* cast if necessary to desired output typecode */
ret = PyArray_CastToType((PyArrayObject *)r, outcode, 0);
Py_DECREF(r);
@@ -215,30 +230,30 @@
PyArray_ScalarFromObject(PyObject *object)
{
PyObject *ret=NULL;
- if PyArray_IsZeroDim(object) {
+ if (PyArray_IsZeroDim(object)) {
return PyArray_ToScalar(PyArray_DATA(object), object);
}
- if PyInt_Check(object) {
+ if (PyInt_Check(object)) {
ret = PyArrayScalar_New(Long);
if (ret == NULL) return NULL;
PyArrayScalar_VAL(ret, Long) = PyInt_AS_LONG(object);
}
- else if PyFloat_Check(object) {
+ else if (PyFloat_Check(object)) {
ret = PyArrayScalar_New(Double);
if (ret == NULL) return NULL;
PyArrayScalar_VAL(ret, Double) = PyFloat_AS_DOUBLE(object);
}
- else if PyComplex_Check(object) {
+ else if (PyComplex_Check(object)) {
ret = PyArrayScalar_New(CDouble);
if (ret == NULL) return NULL;
PyArrayScalar_VAL(ret, CDouble).real = \
- ((PyComplexObject *)object)->cval.real;
+ ((PyComplexObject *)object)->cval.real;
PyArrayScalar_VAL(ret, CDouble).imag = \
((PyComplexObject *)object)->cval.imag;
}
- else if PyLong_Check(object) {
+ else if (PyLong_Check(object)) {
longlong val;
- val = PyLong_AsLongLong(object);
+ val = PyLong_AsLongLong(object);
if (val==-1 && PyErr_Occurred()) {
PyErr_Clear();
return NULL;
@@ -247,7 +262,7 @@
if (ret == NULL) return NULL;
PyArrayScalar_VAL(ret, LongLong) = val;
}
- else if PyBool_Check(object) {
+ else if (PyBool_Check(object)) {
if (object == Py_True) {
PyArrayScalar_RETURN_TRUE;
}
@@ -275,7 +290,7 @@
}
static void
-gentype_dealloc(PyObject *v)
+gentype_dealloc(PyObject *v)
{
v->ob_type->tp_free(v);
}
@@ -286,10 +301,10 @@
{
PyObject *arr, *ret, *arg2;
char *msg="unsupported operand type(s) for ** or pow()";
-
+
if (!PyArray_IsScalar(m1,Generic)) {
if (PyArray_Check(m1)) {
- ret = m1->ob_type->tp_as_number->nb_power(m1,m2,
+ ret = m1->ob_type->tp_as_number->nb_power(m1,m2,
Py_None);
}
else {
@@ -307,7 +322,7 @@
}
if (!PyArray_IsScalar(m2, Generic)) {
if (PyArray_Check(m2)) {
- ret = m2->ob_type->tp_as_number->nb_power(m1,m2,
+ ret = m2->ob_type->tp_as_number->nb_power(m1,m2,
Py_None);
}
else {
@@ -325,7 +340,7 @@
}
arr=arg2=NULL;
arr = PyArray_FromScalar(m1, NULL);
- arg2 = PyArray_FromScalar(m2, NULL);
+ arg2 = PyArray_FromScalar(m2, NULL);
if (arr == NULL || arg2 == NULL) {
Py_XDECREF(arr); Py_XDECREF(arg2); return NULL;
}
@@ -336,7 +351,7 @@
}
static PyObject *
-gentype_generic_method(PyObject *self, PyObject *args, PyObject *kwds,
+gentype_generic_method(PyObject *self, PyObject *args, PyObject *kwds,
char *str)
{
PyObject *arr, *meth, *ret;
@@ -345,7 +360,7 @@
if (arr == NULL) return NULL;
meth = PyObject_GetAttrString(arr, str);
if (meth == NULL) {Py_DECREF(arr); return NULL;}
- if (kwds == NULL)
+ if (kwds == NULL)
ret = PyObject_CallObject(meth, args);
else
ret = PyObject_Call(meth, args, kwds);
@@ -377,7 +392,7 @@
PyObject *ret=NULL;
long repeat;
- if (!PyArray_IsScalar(m1, Generic) &&
+ if (!PyArray_IsScalar(m1, Generic) &&
((m1->ob_type->tp_as_number == NULL) ||
(m1->ob_type->tp_as_number->nb_multiply == NULL))) {
/* Try to convert m2 to an int and try sequence
@@ -386,7 +401,7 @@
if (repeat == -1 && PyErr_Occurred()) return NULL;
ret = PySequence_Repeat(m1, (int) repeat);
}
- else if (!PyArray_IsScalar(m2, Generic) &&
+ else if (!PyArray_IsScalar(m2, Generic) &&
((m2->ob_type->tp_as_number == NULL) ||
(m2->ob_type->tp_as_number->nb_multiply == NULL))) {
/* Try to convert m1 to an int and try sequence
@@ -465,7 +480,7 @@
format_longdouble(char *buf, size_t buflen, longdouble val,
unsigned int precision)
{
- register char *cp;
+ char *cp;
PyOS_snprintf(buf, buflen, "%.*" LONGDOUBLE_FMT, precision, val);
cp = buf;
@@ -482,9 +497,9 @@
}
}
-/* over-ride repr and str of array-scalar strings and unicode to
- remove NULL bytes and then call the corresponding functions
- of string and unicode.
+/* over-ride repr and str of array-scalar strings and unicode to
+ remove NULL bytes and then call the corresponding functions
+ of string and unicode.
*/
/**begin repeat
@@ -529,7 +544,8 @@
longdoubletype_repr(PyObject *self)
{
static char buf[100];
- format_longdouble(buf, sizeof(buf), ((PyLongDoubleScalarObject *)self)->obval, PREC_REPR);
+ format_longdouble(buf, sizeof(buf),
+ ((PyLongDoubleScalarObject *)self)->obval, PREC_REPR);
return PyString_FromString(buf);
}
@@ -568,7 +584,7 @@
{
double dval;
PyObject *obj, *ret;
-
+
dval = (double)(((Py at CHAR@LongDoubleScalarObject *)self)->obval)@POST@;
obj = Py at KIND@_FromDouble(dval);
ret = obj->ob_type->tp_as_number->nb_ at name@(obj);
@@ -584,13 +600,13 @@
{
PyObject *obj;
if (!(PyArray_IsScalar(self, Integer))) {
- PyErr_SetString(PyExc_TypeError,
+ PyErr_SetString(PyExc_TypeError,
"not an integer type.");
return -1;
}
obj = gentype_int(self);
if (obj == NULL) return -1;
- return PyInt_AsSsize_t(obj);
+ return PyInt_AsSsize_t(obj);
}
#endif
@@ -603,8 +619,8 @@
(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_negative,
+ (unaryfunc)gentype_positive, /*nb_pos*/
(unaryfunc)gentype_absolute, /*(unaryfunc)gentype_abs,*/
(inquiry)gentype_nonzero_number, /*nb_nonzero*/
(unaryfunc)gentype_invert, /*nb_invert*/
@@ -641,7 +657,7 @@
static PyObject *
-gentype_richcompare(PyObject *self, PyObject *other, int cmp_op)
+gentype_richcompare(PyObject *self, PyObject *other, int cmp_op)
{
PyObject *arr, *ret;
@@ -668,7 +684,7 @@
static PyObject *
voidtype_flags_get(PyVoidScalarObject *self)
{
- return PyObject_CallMethod(_numpy_internal, "flagsobj", "Oii",
+ return PyObject_CallMethod(_numpy_internal, "flagsobj", "Oii",
self, self->flags, 1);
}
@@ -695,7 +711,7 @@
static PyObject *
gentype_itemsize_get(PyObject *self)
-{
+{
PyArray_Descr *typecode;
PyObject *ret;
@@ -726,7 +742,7 @@
{
PyArrayObject *arr;
PyArrayInterface *inter;
-
+
arr = (PyArrayObject *)PyArray_FromScalar(self, NULL);
inter = (PyArrayInterface *)_pya_malloc(sizeof(PyArrayInterface));
inter->two = 2;
@@ -810,7 +826,7 @@
if (obj == NULL) goto fail;
PyDict_SetItemString(dict, "data", obj);
Py_DECREF(obj);
-
+
obj = gentype_descr_get(self);
if (obj == NULL) goto fail;
PyDict_SetItemString(dict, "descr", obj);
@@ -844,15 +860,15 @@
static PyArray_Descr *
_realdescr_fromcomplexscalar(PyObject *self, int *typenum)
{
- if PyArray_IsScalar(self, CDouble) {
+ if (PyArray_IsScalar(self, CDouble)) {
*typenum = PyArray_CDOUBLE;
return PyArray_DescrFromType(PyArray_DOUBLE);
}
- if PyArray_IsScalar(self, CFloat) {
+ if (PyArray_IsScalar(self, CFloat)) {
*typenum = PyArray_CFLOAT;
return PyArray_DescrFromType(PyArray_FLOAT);
}
- if PyArray_IsScalar(self, CLongDouble) {
+ if (PyArray_IsScalar(self, CLongDouble)) {
*typenum = PyArray_CLONGDOUBLE;
return PyArray_DescrFromType(PyArray_LONGDOUBLE);
}
@@ -868,12 +884,11 @@
if (PyArray_IsScalar(self, ComplexFloating)) {
typecode = _realdescr_fromcomplexscalar(self, &typenum);
- ret = PyArray_Scalar(_SOFFSET_(self), typecode,
- NULL);
+ ret = PyArray_Scalar(scalar_value(self, NULL), typecode, NULL);
Py_DECREF(typecode);
return ret;
}
- else if PyArray_IsScalar(self, Object) {
+ else if (PyArray_IsScalar(self, Object)) {
PyObject *obj = ((PyObjectScalarObject *)self)->obval;
ret = PyObject_GetAttrString(obj, "real");
if (ret != NULL) return ret;
@@ -885,17 +900,17 @@
static PyObject *
gentype_imag_get(PyObject *self)
-{
+{
PyArray_Descr *typecode;
- PyObject *ret;
+ PyObject *ret;
int typenum;
-
+
typecode = _realdescr_fromcomplexscalar(self, &typenum);
if (PyArray_IsScalar(self, ComplexFloating)) {
- ret = PyArray_Scalar(_SOFFSET_(self) \
- + typecode->elsize, typecode, NULL);
+ ret = PyArray_Scalar(scalar_value(self, NULL)
+ + typecode->elsize, typecode, NULL);
}
- else if PyArray_IsScalar(self, Object) {
+ else if (PyArray_IsScalar(self, Object)) {
PyObject *obj = ((PyObjectScalarObject *)self)->obval;
PyArray_Descr *newtype;
ret = PyObject_GetAttrString(obj, "imag");
@@ -915,7 +930,7 @@
ret = PyArray_Scalar(temp, typecode, NULL);
PyDataMem_FREE(temp);
}
-
+
Py_DECREF(typecode);
return ret;
}
@@ -942,29 +957,29 @@
static PyGetSetDef gentype_getsets[] = {
- {"ndim",
- (getter)gentype_ndim_get,
- (setter) 0,
+ {"ndim",
+ (getter)gentype_ndim_get,
+ (setter) 0,
"number of array dimensions"},
- {"flags",
- (getter)gentype_flags_get,
- (setter)0,
+ {"flags",
+ (getter)gentype_flags_get,
+ (setter)0,
"integer value of flags"},
- {"shape",
- (getter)gentype_shape_get,
- (setter)0,
+ {"shape",
+ (getter)gentype_shape_get,
+ (setter)0,
"tuple of array dimensions"},
- {"strides",
- (getter)gentype_shape_get,
- (setter) 0,
+ {"strides",
+ (getter)gentype_shape_get,
+ (setter) 0,
"tuple of bytes steps in each dimension"},
{"data",
- (getter)gentype_data_get,
- (setter) 0,
+ (getter)gentype_data_get,
+ (setter) 0,
"pointer to start of data"},
- {"itemsize",
- (getter)gentype_itemsize_get,
- (setter)0,
+ {"itemsize",
+ (getter)gentype_itemsize_get,
+ (setter)0,
"length of one element in bytes"},
{"size",
(getter)gentype_size_get,
@@ -982,18 +997,18 @@
(getter)gentype_typedescr_get,
NULL,
"get array data-descriptor"},
- {"real",
- (getter)gentype_real_get,
+ {"real",
+ (getter)gentype_real_get,
(setter)0,
"real part of scalar"},
- {"imag",
- (getter)gentype_imag_get,
- (setter)0,
+ {"imag",
+ (getter)gentype_imag_get,
+ (setter)0,
"imaginary part of scalar"},
- {"flat",
- (getter)gentype_flat_get,
- (setter)0,
- "a 1-d view of scalar"},
+ {"flat",
+ (getter)gentype_flat_get,
+ (setter)0,
+ "a 1-d view of scalar"},
{"T",
(getter)gentype_transpose_get,
(setter)0,
@@ -1010,7 +1025,7 @@
(getter)gentype_priority_get,
NULL,
"Array priority."},
- {NULL, NULL, NULL, NULL} /* Sentinel */
+ {NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -1019,11 +1034,11 @@
static char doc_getarray[] = "sc.__array__(|type) return 0-dim array";
static PyObject *
-gentype_getarray(PyObject *scalar, PyObject *args)
+gentype_getarray(PyObject *scalar, PyObject *args)
{
PyArray_Descr *outcode=NULL;
PyObject *ret;
-
+
if (!PyArg_ParseTuple(args, "|O&", &PyArray_DescrConverter,
&outcode)) return NULL;
ret = PyArray_FromScalar(scalar, outcode);
@@ -1080,12 +1095,12 @@
gentype_byteswap(PyObject *self, PyObject *args)
{
Bool inplace=FALSE;
-
+
if (!PyArg_ParseTuple(args, "|O&", PyArray_BoolConverter, &inplace))
return NULL;
-
+
if (inplace) {
- PyErr_SetString(PyExc_ValueError,
+ PyErr_SetString(PyExc_ValueError,
"cannot byteswap a scalar in-place");
return NULL;
}
@@ -1103,7 +1118,7 @@
newmem = _pya_malloc(descr->elsize);
if (newmem == NULL) {Py_DECREF(descr); return PyErr_NoMemory();}
else memcpy(newmem, data, descr->elsize);
- byte_swap_vector(newmem, 1, descr->elsize);
+ byte_swap_vector(newmem, 1, descr->elsize);
new = PyArray_Scalar(newmem, descr, NULL);
_pya_free(newmem);
Py_DECREF(descr);
@@ -1136,7 +1151,7 @@
PyArray_Descr *new;
if (!PyArray_ISNBO(self->descr->byteorder)) {
new = PyArray_DescrFromScalar(ret);
- byte_swap_vector(_SOFFSET_(ret), 1, new->elsize);
+ byte_swap_vector(scalar_value(ret, new), 1, new->elsize);
Py_DECREF(new);
}
}
@@ -1146,11 +1161,11 @@
static PyObject *
gentype_setfield(PyObject *self, PyObject *args, PyObject *kwds)
{
-
- PyErr_SetString(PyExc_TypeError,
+
+ PyErr_SetString(PyExc_TypeError,
"Can't set fields in a non-void array scalar.");
return NULL;
-}
+}
static PyObject *
voidtype_setfield(PyVoidScalarObject *self, PyObject *args, PyObject *kwds)
@@ -1161,7 +1176,7 @@
int mysize;
char *dptr;
static char *kwlist[] = {"value", "dtype", "offset", 0};
-
+
if ((self->flags & WRITEABLE) != WRITEABLE) {
PyErr_SetString(PyExc_RuntimeError,
"Can't write to memory");
@@ -1169,11 +1184,11 @@
}
if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&|i", kwlist,
&value,
- PyArray_DescrConverter,
+ PyArray_DescrConverter,
&typecode, &offset)) return NULL;
mysize = self->ob_size;
-
+
if (offset < 0 || (offset + typecode->elsize) > mysize) {
PyErr_Format(PyExc_ValueError,
"Need 0 <= offset <= %d for requested type " \
@@ -1181,7 +1196,7 @@
mysize-typecode->elsize, offset);
Py_DECREF(typecode);
return NULL;
- }
+ }
dptr = self->obval + offset;
@@ -1196,7 +1211,7 @@
/* Copy data from value to correct place in dptr */
src = PyArray_FromAny(value, typecode, 0, 0, CARRAY, NULL);
if (src == NULL) return NULL;
- typecode->f->copyswap(dptr, PyArray_DATA(src),
+ typecode->f->copyswap(dptr, PyArray_DATA(src),
!PyArray_ISNBO(self->descr->byteorder),
src);
Py_DECREF(src);
@@ -1210,13 +1225,13 @@
gentype_reduce(PyObject *self, PyObject *args)
{
PyObject *ret=NULL, *obj=NULL, *mod=NULL;
- const char *buffer;
+ const char *buffer;
int buflen;
/* Return a tuple of (callable object, arguments) */
ret = PyTuple_New(2);
- if (ret == NULL) return NULL;
+ if (ret == NULL) return NULL;
if (PyObject_AsReadBuffer(self, (const void **)&buffer, &buflen)<0) {
Py_DECREF(ret); return NULL;
}
@@ -1227,14 +1242,14 @@
if (obj == NULL) return NULL;
PyTuple_SET_ITEM(ret, 0, obj);
obj = PyObject_GetAttrString((PyObject *)self, "dtype");
- if PyArray_IsScalar(self, Object) {
+ if (PyArray_IsScalar(self, Object)) {
mod = ((PyObjectScalarObject *)self)->obval;
PyTuple_SET_ITEM(ret, 1,
Py_BuildValue("NO", obj, mod));
}
else {
mod = PyString_FromStringAndSize(buffer, buflen);
- PyTuple_SET_ITEM(ret, 1,
+ PyTuple_SET_ITEM(ret, 1,
Py_BuildValue("NN", obj, mod));
}
return ret;
@@ -1280,24 +1295,24 @@
}
-/* need to fill in doc-strings for these methods on import -- copy from
- array docstrings
+/* need to fill in doc-strings for these methods on import -- copy from
+ array docstrings
*/
static PyMethodDef gentype_methods[] = {
{"tolist", (PyCFunction)gentype_tolist, 1, NULL},
{"item", (PyCFunction)gentype_item, METH_VARARGS, NULL},
- {"tofile", (PyCFunction)gentype_tofile,
+ {"tofile", (PyCFunction)gentype_tofile,
METH_VARARGS|METH_KEYWORDS, NULL},
{"tostring", (PyCFunction)gentype_tostring, METH_VARARGS, NULL},
{"byteswap", (PyCFunction)gentype_byteswap,1, NULL},
{"astype", (PyCFunction)gentype_astype, 1, NULL},
- {"getfield", (PyCFunction)gentype_getfield,
+ {"getfield", (PyCFunction)gentype_getfield,
METH_VARARGS | METH_KEYWORDS, NULL},
- {"setfield", (PyCFunction)gentype_setfield,
+ {"setfield", (PyCFunction)gentype_setfield,
METH_VARARGS | METH_KEYWORDS, NULL},
- {"copy", (PyCFunction)gentype_copy, 1, NULL},
- {"resize", (PyCFunction)gentype_resize,
- METH_VARARGS|METH_KEYWORDS, NULL},
+ {"copy", (PyCFunction)gentype_copy, 1, NULL},
+ {"resize", (PyCFunction)gentype_resize,
+ METH_VARARGS|METH_KEYWORDS, NULL},
{"__array__", (PyCFunction)gentype_getarray, 1, doc_getarray},
{"__array_wrap__", (PyCFunction)gentype_wraparray, 1, doc_sc_wraparray},
@@ -1307,7 +1322,7 @@
{"__deepcopy__", (PyCFunction)gentype___deepcopy__, 1, NULL},
- {"__reduce__", (PyCFunction) gentype_reduce, 1, NULL},
+ {"__reduce__", (PyCFunction) gentype_reduce, 1, NULL},
/* For consistency does nothing */
{"__setstate__", (PyCFunction) gentype_setstate, 1, NULL},
@@ -1317,33 +1332,33 @@
/* Methods for array */
{"fill", (PyCFunction)gentype_fill,
METH_VARARGS, NULL},
- {"transpose", (PyCFunction)gentype_transpose,
+ {"transpose", (PyCFunction)gentype_transpose,
METH_VARARGS, NULL},
- {"take", (PyCFunction)gentype_take,
+ {"take", (PyCFunction)gentype_take,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"put", (PyCFunction)gentype_put,
+ {"put", (PyCFunction)gentype_put,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"putmask", (PyCFunction)gentype_putmask,
+ {"putmask", (PyCFunction)gentype_putmask,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"repeat", (PyCFunction)gentype_repeat,
+ {"repeat", (PyCFunction)gentype_repeat,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"choose", (PyCFunction)gentype_choose,
- METH_VARARGS, NULL},
- {"sort", (PyCFunction)gentype_sort,
+ {"choose", (PyCFunction)gentype_choose,
METH_VARARGS, NULL},
- {"argsort", (PyCFunction)gentype_argsort,
+ {"sort", (PyCFunction)gentype_sort,
METH_VARARGS, NULL},
- {"searchsorted", (PyCFunction)gentype_searchsorted,
- METH_VARARGS, NULL},
- {"argmax", (PyCFunction)gentype_argmax,
+ {"argsort", (PyCFunction)gentype_argsort,
+ METH_VARARGS, NULL},
+ {"searchsorted", (PyCFunction)gentype_searchsorted,
+ METH_VARARGS, NULL},
+ {"argmax", (PyCFunction)gentype_argmax,
METH_VARARGS|METH_KEYWORDS, NULL},
{"argmin", (PyCFunction)gentype_argmin,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"reshape", (PyCFunction)gentype_reshape,
+ {"reshape", (PyCFunction)gentype_reshape,
METH_VARARGS|METH_KEYWORDS, NULL},
- {"squeeze", (PyCFunction)gentype_squeeze,
+ {"squeeze", (PyCFunction)gentype_squeeze,
METH_VARARGS, NULL},
- {"view", (PyCFunction)gentype_view,
+ {"view", (PyCFunction)gentype_view,
METH_VARARGS, NULL},
{"swapaxes", (PyCFunction)gentype_swapaxes,
METH_VARARGS, NULL},
@@ -1400,9 +1415,9 @@
static PyGetSetDef voidtype_getsets[] = {
- {"flags",
- (getter)voidtype_flags_get,
- (setter)0,
+ {"flags",
+ (getter)voidtype_flags_get,
+ (setter)0,
"integer value of flags"},
{"dtype",
(getter)voidtype_dtypedescr_get,
@@ -1412,9 +1427,9 @@
};
static PyMethodDef voidtype_methods[] = {
- {"getfield", (PyCFunction)voidtype_getfield,
+ {"getfield", (PyCFunction)voidtype_getfield,
METH_VARARGS | METH_KEYWORDS, NULL},
- {"setfield", (PyCFunction)voidtype_setfield,
+ {"setfield", (PyCFunction)voidtype_setfield,
METH_VARARGS | METH_KEYWORDS, NULL},
{NULL, NULL}
};
@@ -1422,7 +1437,7 @@
/************* As_mapping functions for void array scalar ************/
static Py_ssize_t
-voidtype_length(PyVoidScalarObject *self)
+voidtype_length(PyVoidScalarObject *self)
{
if (!self->descr->names) {
return 0;
@@ -1439,9 +1454,9 @@
PyObject *flist=NULL, *fieldinfo;
if (!(PyDescr_HASFIELDS(self->descr))) {
- PyErr_SetString(PyExc_IndexError,
+ PyErr_SetString(PyExc_IndexError,
"can't index void scalar without fields");
- return NULL;
+ return NULL;
}
flist = self->descr->names;
m = PyTuple_GET_SIZE(flist);
@@ -1450,7 +1465,7 @@
PyErr_Format(PyExc_IndexError, "invalid index (%d)", (int) n);
return NULL;
}
- fieldinfo = PyDict_GetItem(self->descr->fields,
+ fieldinfo = PyDict_GetItem(self->descr->fields,
PyTuple_GET_ITEM(flist, n));
return voidtype_getfield(self, fieldinfo, NULL);
}
@@ -1464,7 +1479,7 @@
PyObject *fieldinfo;
if (!(PyDescr_HASFIELDS(self->descr))) {
- PyErr_SetString(PyExc_IndexError,
+ PyErr_SetString(PyExc_IndexError,
"can't index void scalar without fields");
return NULL;
}
@@ -1475,7 +1490,7 @@
if (!fieldinfo) goto fail;
return voidtype_getfield(self, fieldinfo, NULL);
}
-
+
/* try to convert it to a number */
n = PyArray_PyIntAsIntp(ind);
if (error_converting(n)) goto fail;
@@ -1496,7 +1511,7 @@
PyObject *res;
if (!(PyDescr_HASFIELDS(self->descr))) {
- PyErr_SetString(PyExc_IndexError,
+ PyErr_SetString(PyExc_IndexError,
"can't index void scalar without fields");
return -1;
}
@@ -1505,9 +1520,9 @@
m = PyTuple_GET_SIZE(flist);
if (n < 0) n += m;
if (n < 0 || n >= m) goto fail;
- fieldinfo = PyDict_GetItem(self->descr->fields,
+ fieldinfo = PyDict_GetItem(self->descr->fields,
PyTuple_GET_ITEM(flist, n));
- newtup = Py_BuildValue("(OOO)", val,
+ newtup = Py_BuildValue("(OOO)", val,
PyTuple_GET_ITEM(fieldinfo, 0),
PyTuple_GET_ITEM(fieldinfo, 1));
res = voidtype_setfield(self, newtup, NULL);
@@ -1523,7 +1538,7 @@
}
static int
-voidtype_ass_subscript(PyVoidScalarObject *self, PyObject *ind, PyObject *val)
+voidtype_ass_subscript(PyVoidScalarObject *self, PyObject *ind, PyObject *val)
{
intp n;
char *msg = "invalid index";
@@ -1531,7 +1546,7 @@
PyObject *res;
if (!PyDescr_HASFIELDS(self->descr)) {
- PyErr_SetString(PyExc_IndexError,
+ PyErr_SetString(PyExc_IndexError,
"can't index void scalar without fields");
return -1;
}
@@ -1540,7 +1555,7 @@
/* look up in fields */
fieldinfo = PyDict_GetItem(self->descr->fields, ind);
if (!fieldinfo) goto fail;
- newtup = Py_BuildValue("(OOO)", val,
+ newtup = Py_BuildValue("(OOO)", val,
PyTuple_GET_ITEM(fieldinfo, 0),
PyTuple_GET_ITEM(fieldinfo, 1));
res = voidtype_setfield(self, newtup, NULL);
@@ -1549,7 +1564,7 @@
Py_DECREF(res);
return 0;
}
-
+
/* try to convert it to a number */
n = PyArray_PyIntAsIntp(ind);
if (error_converting(n)) goto fail;
@@ -1596,25 +1611,16 @@
{
int numbytes;
PyArray_Descr *outcode;
-
+
if (segment != 0) {
- PyErr_SetString(PyExc_SystemError,
+ PyErr_SetString(PyExc_SystemError,
"Accessing non-existent array segment");
return -1;
}
outcode = PyArray_DescrFromScalar(self);
numbytes = outcode->elsize;
- if PyArray_IsScalar(self, Flexible) {
- if PyArray_IsScalar(self, String)
- *ptrptr = PyString_AS_STRING(self);
- else if PyArray_IsScalar(self, Unicode)
- *ptrptr = (char *)PyUnicode_AS_DATA(self);
- else if PyArray_IsScalar(self, Void)
- *ptrptr = ((PyVoidScalarObject *)self)->obval;
- }
- else
- *ptrptr = (void *)_SOFFSET_(self);
+ *ptrptr = (void *)scalar_value(self, outcode);
Py_DECREF(outcode);
return numbytes;
@@ -1658,7 +1664,7 @@
#define BASEFLAGS Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_CHECKTYPES
#define LEAFFLAGS Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES
-static PyTypeObject PyGenericArrType_Type = {
+static PyTypeObject PyGenericArrType_Type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"genericscalar", /*tp_name*/
@@ -1666,7 +1672,7 @@
};
static void
-void_dealloc(PyVoidScalarObject *v)
+void_dealloc(PyVoidScalarObject *v)
{
if (v->flags & OWNDATA)
PyDataMem_FREE(v->obval);
@@ -1685,7 +1691,7 @@
/* string and unicode inherit from Python Type first and so GET_ITEM is different to get to the Python Type.
*/
/* ok is a work-around for a bug in complex_new that doesn't allocate
- memory from the sub-types memory allocator.
+ memory from the sub-types memory allocator.
*/
#define _WORK(num) \
@@ -1700,13 +1706,13 @@
if (PyTuple_GET_SIZE(args)!=1) return NULL; \
PyErr_Clear(); \
/* now do default conversion */ \
- }
+ }
#define _WORK1 _WORK(1)
#define _WORKz _WORK(0)
#define _WORK0
-/**begin repeat
+/**begin repeat
#name=byte, short, int, long, longlong, ubyte, ushort, uint, ulong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, string, unicode, object#
#TYPE=BYTE, SHORT, INT, LONG, LONGLONG, UBYTE, USHORT, UINT, ULONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, CFLOAT, CDOUBLE, CLONGDOUBLE, STRING, UNICODE, OBJECT#
#work=0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,z,z,1#
@@ -1757,7 +1763,7 @@
static PyObject *
bool_arrtype_and(PyObject *a, PyObject *b)
{
- if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
+ if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
PyArrayScalar_RETURN_BOOL_FROM_LONG
((a == PyArrayScalar_True)&(b == PyArrayScalar_True));
return PyGenericArrType_Type.tp_as_number->nb_and(a, b);
@@ -1766,7 +1772,7 @@
static PyObject *
bool_arrtype_or(PyObject *a, PyObject *b)
{
- if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
+ if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
PyArrayScalar_RETURN_BOOL_FROM_LONG
((a == PyArrayScalar_True)|(b == PyArrayScalar_True));
return PyGenericArrType_Type.tp_as_number->nb_or(a, b);
@@ -1775,7 +1781,7 @@
static PyObject *
bool_arrtype_xor(PyObject *a, PyObject *b)
{
- if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
+ if (PyArray_IsScalar(a, Bool) && PyArray_IsScalar(b, Bool))
PyArrayScalar_RETURN_BOOL_FROM_LONG
((a == PyArrayScalar_True)^(b == PyArrayScalar_True));
return PyGenericArrType_Type.tp_as_number->nb_xor(a, b);
@@ -1789,9 +1795,9 @@
/* Arithmetic methods -- only so we can override &, |, ^. */
static PyNumberMethods bool_arrtype_as_number = {
- 0, /* nb_add */
+ 0, /* nb_add */
0, /* nb_subtract */
- 0, /* nb_multiply */
+ 0, /* nb_multiply */
0, /* nb_divide */
0, /* nb_remainder */
0, /* nb_divmod */
@@ -1817,7 +1823,7 @@
char *destptr;
if (!PyArg_ParseTuple(args, "O", &obj)) return NULL;
- /* For a VOID scalar first see if obj is an integer or long
+ /* For a VOID scalar first see if obj is an integer or long
and create new memory of that size (filled with 0) for the scalar
*/
@@ -1833,7 +1839,7 @@
Py_DECREF(new);
if (PyErr_Occurred() || (memu > MAX_INT)) {
PyErr_Clear();
- PyErr_Format(PyExc_OverflowError,
+ PyErr_Format(PyExc_OverflowError,
"size must be smaller than %d",
(int) MAX_INT);
return NULL;
@@ -1990,10 +1996,10 @@
/* first look in object and then hand off to generic type */
- res = PyObject_GenericGetAttr(obj->obval, attr);
+ res = PyObject_GenericGetAttr(obj->obval, attr);
if (res) return res;
PyErr_Clear();
- return PyObject_GenericGetAttr((PyObject *)obj, attr);
+ return PyObject_GenericGetAttr((PyObject *)obj, attr);
}
static int
@@ -2014,7 +2020,7 @@
}
static Py_ssize_t
-object_arrtype_length(PyObjectScalarObject *self)
+object_arrtype_length(PyObjectScalarObject *self)
{
return PyObject_Length(self->obval);
}
@@ -2032,7 +2038,7 @@
}
static int
-object_arrtype_ass_subscript(PyObjectScalarObject *self, PyObject *key,
+object_arrtype_ass_subscript(PyObjectScalarObject *self, PyObject *key,
PyObject *value)
{
return PyObject_SetItem(self->obval, key, value);
@@ -2095,69 +2101,69 @@
};
static Py_ssize_t
-object_arrtype_getsegcount(PyObjectScalarObject *self, Py_ssize_t *lenp)
+object_arrtype_getsegcount(PyObjectScalarObject *self, Py_ssize_t *lenp)
{
int newlen;
int cnt;
PyBufferProcs *pb = self->obval->ob_type->tp_as_buffer;
-
+
if (pb == NULL || \
pb->bf_getsegcount == NULL || \
- (cnt = (*pb->bf_getsegcount)(self->obval, &newlen)) != 1)
+ (cnt = (*pb->bf_getsegcount)(self->obval, &newlen)) != 1)
return 0;
-
- if (lenp)
+
+ if (lenp)
*lenp = newlen;
-
+
return cnt;
}
static Py_ssize_t
-object_arrtype_getreadbuf(PyObjectScalarObject *self, Py_ssize_t segment, void **ptrptr)
+object_arrtype_getreadbuf(PyObjectScalarObject *self, Py_ssize_t segment, void **ptrptr)
{
PyBufferProcs *pb = self->obval->ob_type->tp_as_buffer;
if (pb == NULL || \
pb->bf_getreadbuffer == NULL ||
pb->bf_getsegcount == NULL) {
- PyErr_SetString(PyExc_TypeError,
+ PyErr_SetString(PyExc_TypeError,
"expected a readable buffer object");
return -1;
}
-
+
return (*pb->bf_getreadbuffer)(self->obval, segment, ptrptr);
}
static Py_ssize_t
-object_arrtype_getwritebuf(PyObjectScalarObject *self, Py_ssize_t segment, void **ptrptr)
+object_arrtype_getwritebuf(PyObjectScalarObject *self, Py_ssize_t segment, void **ptrptr)
{
PyBufferProcs *pb = self->obval->ob_type->tp_as_buffer;
if (pb == NULL || \
pb->bf_getwritebuffer == NULL ||
pb->bf_getsegcount == NULL) {
- PyErr_SetString(PyExc_TypeError,
+ PyErr_SetString(PyExc_TypeError,
"expected a writeable buffer object");
return -1;
}
-
+
return (*pb->bf_getwritebuffer)(self->obval, segment, ptrptr);
}
-static Py_ssize_t
-object_arrtype_getcharbuf(PyObjectScalarObject *self, Py_ssize_t segment,
- const char **ptrptr)
+static Py_ssize_t
+object_arrtype_getcharbuf(PyObjectScalarObject *self, Py_ssize_t segment,
+ const char **ptrptr)
{
PyBufferProcs *pb = self->obval->ob_type->tp_as_buffer;
if (pb == NULL || \
pb->bf_getcharbuffer == NULL ||
pb->bf_getsegcount == NULL) {
- PyErr_SetString(PyExc_TypeError,
+ PyErr_SetString(PyExc_TypeError,
"expected a character buffer object");
return -1;
}
-
+
return (*pb->bf_getcharbuffer)(self->obval, segment, ptrptr);
}
@@ -2209,7 +2215,7 @@
#name=bool, string, unicode, void#
#NAME=Bool, String, Unicode, Void#
*/
-static PyTypeObject Py at NAME@ArrType_Type = {
+static PyTypeObject Py at NAME@ArrType_Type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"@name at scalar", /*tp_name*/
@@ -2239,7 +2245,7 @@
#elif BITSOF_ at CNAME@ == 256
#define _THIS_SIZE "256"
#endif
-static PyTypeObject Py at NAME@ArrType_Type = {
+static PyTypeObject Py at NAME@ArrType_Type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"@name@" _THIS_SIZE "scalar", /*tp_name*/
@@ -2276,7 +2282,7 @@
#define _THIS_SIZE2 "256"
#define _THIS_SIZE1 "512"
#endif
-static PyTypeObject Py at NAME@ArrType_Type = {
+static PyTypeObject Py at NAME@ArrType_Type = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"@name@" _THIS_SIZE1 "scalar", /*tp_name*/
@@ -2331,7 +2337,7 @@
PyStringArrType_Type.tp_alloc = NULL;
PyStringArrType_Type.tp_free = NULL;
-
+
PyStringArrType_Type.tp_repr = stringtype_repr;
PyStringArrType_Type.tp_str = stringtype_str;
@@ -2342,9 +2348,9 @@
PyVoidArrType_Type.tp_getset = voidtype_getsets;
PyVoidArrType_Type.tp_as_mapping = &voidtype_as_mapping;
PyVoidArrType_Type.tp_as_sequence = &voidtype_as_sequence;
-
+
/**begin repeat
-#NAME=Number, Integer, SignedInteger, UnsignedInteger, Inexact, Floating,
+#NAME=Number, Integer, SignedInteger, UnsignedInteger, Inexact, Floating,
ComplexFloating, Flexible, Character#
*/
Py at NAME@ArrType_Type.tp_flags = BASEFLAGS;
@@ -2439,7 +2445,7 @@
}
i++;
}
-
+
if (!user) return typenum;
/* Search any registered types */
@@ -2459,12 +2465,12 @@
*/
static PyArray_Descr *
PyArray_DescrFromTypeObject(PyObject *type)
-{
+{
int typenum;
PyArray_Descr *new, *conv=NULL;
/* if it's a builtin type, then use the typenumber */
- typenum = _typenum_fromtypeobj(type,1);
+ typenum = _typenum_fromtypeobj(type,1);
if (typenum != PyArray_NOTYPE) {
new = PyArray_DescrFromType(typenum);
return new;
@@ -2491,7 +2497,7 @@
if (typenum != PyArray_NOTYPE) {
return PyArray_DescrFromType(typenum);
}
-
+
/* Otherwise --- type is a sub-type of an array scalar
currently only VOID allows it -- use it as the type-object.
*/
@@ -2552,7 +2558,7 @@
int type_num;
PyArray_Descr *descr;
- if PyArray_IsScalar(sc, Void) {
+ if (PyArray_IsScalar(sc, Void)) {
descr = ((PyVoidScalarObject *)sc)->descr;
Py_INCREF(descr);
return descr;
@@ -2561,24 +2567,24 @@
if (descr->elsize == 0) {
PyArray_DESCR_REPLACE(descr);
type_num = descr->type_num;
- if (type_num == PyArray_STRING)
+ if (type_num == PyArray_STRING)
descr->elsize = PyString_GET_SIZE(sc);
else if (type_num == PyArray_UNICODE) {
descr->elsize = PyUnicode_GET_DATA_SIZE(sc);
#ifndef Py_UNICODE_WIDE
descr->elsize <<= 1;
-#endif
+#endif
}
else {
- descr->elsize = \
+ descr->elsize =
((PyVoidScalarObject *)sc)->ob_size;
descr->fields = PyObject_GetAttrString(sc, "fields");
- if (!descr->fields || !PyDict_Check(descr->fields) || \
+ if (!descr->fields || !PyDict_Check(descr->fields) ||
(descr->fields == Py_None)) {
Py_XDECREF(descr->fields);
descr->fields = NULL;
}
- if (descr->fields)
+ if (descr->fields)
descr->names = PyArray_FieldNames(descr->fields);
PyErr_Clear();
}
@@ -2603,4 +2609,3 @@
Py_DECREF(descr);
return obj;
}
-
More information about the Numpy-svn
mailing list