Generated by Cython 3.1.2
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: list.c
+001: # cython: language_level=3, cdivision=True
__pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
002:
003: cimport cython
004: from cpython cimport PyObject, PyTypeObject, Py_buffer, Py_INCREF, Py_DECREF, Py_XDECREF, PyObject_Length
005: from cpython.mem cimport PyMem_Malloc, PyMem_Realloc, PyMem_Free
006: from cpython.buffer cimport PyBUF_SIMPLE, PyBUF_ND, PyBUF_FORMAT, PyObject_CheckBuffer, PyObject_GetBuffer, PyBuffer_Release
007: from cpython.bytes cimport PyBytes_FromStringAndSize, PyBytes_AsString, PyBytes_AS_STRING
008: from cpython.slice cimport PySlice_Unpack, PySlice_AdjustIndices
009: from cpython.number cimport PyNumber_Check
010: from libc.string cimport memcpy, memmove, memcmp
011: from libc.stdlib cimport malloc, free
012:
+013: import struct
__pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_struct, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_struct, __pyx_t_2) < 0) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+014: from pickle import PickleBuffer
__pyx_t_2 = __Pyx_PyList_Pack(1, __pyx_mstate_global->__pyx_n_u_PickleBuffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleBuffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_PickleBuffer, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+015: import sys
__pyx_t_3 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_sys, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_sys, __pyx_t_3) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
016:
017: cdef extern from "Python.h":
018: Py_ssize_t PyObject_LengthHint(object o, Py_ssize_t default)
019:
020:
021: from .dtypes cimport *
022:
023: # this is to avoid the issue around Py_buffer.obj = pyobject, which in cython would try to decref the initially NULL value
024: # so the value needs to be set using that function when set the first time
025: cdef extern from *:
026: """
027: void assign_buffer_obj(Py_buffer* buf, PyObject* o) {
028: Py_INCREF(o);
029: buf->obj = o;
030: }
031: """
032: void assign_buffer_obj(Py_buffer* buf, object o)
033:
034: cdef extern from *:
035: """
036: void release_buffer_obj(Py_buffer* buf) {
037: if (buf->obj != NULL)
038: Py_DECREF(buf->obj);
039: }
040: """
041: void release_buffer_obj(Py_buffer* buf)
042:
043:
044:
+045: cdef class typedlist:
struct __pyx_obj_5arrex_4list_typedlist {
PyObject_HEAD
struct __pyx_vtabstruct_5arrex_4list_typedlist *__pyx_vtab;
char *ptr;
size_t size;
size_t allocated;
struct __pyx_obj_5arrex_6dtypes_DDType *dtype;
PyObject *owner;
};
/* … */
struct __pyx_vtabstruct_5arrex_4list_typedlist {
PyObject *(*_getitem)(struct __pyx_obj_5arrex_4list_typedlist *, void *);
int (*_setitem)(struct __pyx_obj_5arrex_4list_typedlist *, void *, PyObject *);
int (*_use)(struct __pyx_obj_5arrex_4list_typedlist *, PyObject *);
int (*_reallocate)(struct __pyx_obj_5arrex_4list_typedlist *, size_t);
size_t (*_len)(struct __pyx_obj_5arrex_4list_typedlist *);
Py_ssize_t (*_index)(struct __pyx_obj_5arrex_4list_typedlist *, PyObject *);
int (*append)(struct __pyx_obj_5arrex_4list_typedlist *, PyObject *, int __pyx_skip_dispatch);
int (*extend)(struct __pyx_obj_5arrex_4list_typedlist *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_5arrex_4list_typedlist *__pyx_vtabptr_5arrex_4list_typedlist;
046: ''' list-like array that stores objects as packed data.
047: The objects added must necessarily be packed objects (builtin objects with no references).
048:
049: This is a dynamically sized, borrowing array, which mean the internal buffer of data is reallocated on insertion, but can be used to view and extract from any buffer.
050:
051: Methods added to the signature of list:
052:
053: `reserve(n)` reallocate if necessary to make sure n elements can
054: be inserted without reallocation
055: `capacity() -> int` return the current number of elements that can be
056: contained without reallocation
057: `shrink()` shorten the allocated memory to fit the current content
058:
059: also the slices do not copy the content
060:
061:
062: Use it as a list:
063:
064: >>> a = typedlist(dtype=vec3)
065: >>>
066: >>> # build from an iterable
067: >>> a = typedlist([], dtype=vec3)
068: >>>
069: >>> # append some data
070: >>> a.append(vec3(1,2,3))
071: >>>
072: >>> # extend with an iterable
073: >>> a.extend(vec3(i) for i in range(5))
074: >>>
075: >>> len(a) # the current number of elements
076: 6
077: >>>
078: >>> a.owner # the current data buffer
079: b'.........'
080:
081: Use it as a slice:
082:
083: >>> # no data is copied
084: >>> myslice = a[:5]
085: typedlist(....)
086:
087: Use it as a view on top of a random buffer
088:
089: >>> a = np.ones((6,3), dtype='f4')
090: >>> myslice = typedlist(a, dtype=vec3)
091:
092: It does support the buffer protocol, so it can be converted in a great variety of well known arrays, even without any copy
093:
094: >>> np.array(typedlist([....]))
095:
096:
097: Constructors:
098:
099: .. py:function:: typedlist()
100: .. py:function:: typedlist(dtype, reserve=None)
101: .. py:function:: typedlist(iterable, dtype, reserve=None)
102: .. py:function:: typedlist(buffer, dtype)
103:
104: Attributes:
105:
106: size (int): byte size of the current content
107: allocated (int): byte size of the memory allocated memory
108: owner: object realy owning the data instead of the current `typedlist`
109:
110: dtype (type): the python data type
111: ddtype (DDType): the data type declaration
112: '''
113:
114: cdef char *ptr
+115: cdef readonly size_t size
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_4size_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_4size___get__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_4size___get__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+116: cdef readonly size_t allocated
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_9allocated_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_9allocated_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_9allocated___get__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_9allocated___get__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->allocated); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist.allocated.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
117:
118: cdef DDType dtype
119:
+120: cdef readonly object owner
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_5owner_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_5owner_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_5owner___get__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_5owner___get__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->owner);
__pyx_r = __pyx_v_self->owner;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
121:
+122: @property
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_5dtype_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_5dtype___get__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_5dtype___get__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist.dtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
123: def dtype(self):
124: ''' the python dtype object, or the ddtype if there is not dtype '''
+125: return self.dtype.key or self.dtype
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->dtype->key); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 125, __pyx_L1_error) if (!__pyx_t_2) { } else { __Pyx_INCREF(__pyx_v_self->dtype->key); __pyx_t_1 = __pyx_v_self->dtype->key; goto __pyx_L3_bool_binop_done; } __Pyx_INCREF((PyObject *)__pyx_v_self->dtype); __pyx_t_1 = ((PyObject *)__pyx_v_self->dtype); __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
126:
+127: @property
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_6ddtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_6ddtype_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_6ddtype___get__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_6ddtype___get__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
128: def ddtype(self):
129: ''' the declaration of the dtype, a DDType instance '''
+130: return self.dtype
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self->dtype); __pyx_r = ((PyObject *)__pyx_v_self->dtype); goto __pyx_L0;
131:
132:
+133: def __init__(self, iterable=None, object dtype=None, size_t reserve=0):
/* Python wrapper */
static int __pyx_pw_5arrex_4list_9typedlist_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5arrex_4list_9typedlist_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_iterable = 0;
PyObject *__pyx_v_dtype = 0;
size_t __pyx_v_reserve;
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_iterable,&__pyx_mstate_global->__pyx_n_u_dtype,&__pyx_mstate_global->__pyx_n_u_reserve,0};
PyObject* values[3] = {0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 133, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 133, __pyx_L3_error)
if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
} else {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 133, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
}
__pyx_v_iterable = values[0];
__pyx_v_dtype = values[1];
if (values[2]) {
__pyx_v_reserve = __Pyx_PyLong_As_size_t(values[2]); if (unlikely((__pyx_v_reserve == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 133, __pyx_L3_error)
} else {
__pyx_v_reserve = ((size_t)0);
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 133, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("arrex.list.typedlist.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_5arrex_4list_9typedlist___init__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_iterable, __pyx_v_dtype, __pyx_v_reserve);
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_5arrex_4list_9typedlist___init__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_iterable, PyObject *__pyx_v_dtype, size_t __pyx_v_reserve) {
PyObject *__pyx_v_first = NULL;
int __pyx_r;
__Pyx_INCREF(__pyx_v_iterable);
__Pyx_INCREF(__pyx_v_dtype);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("arrex.list.typedlist.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_first);
__Pyx_XDECREF(__pyx_v_iterable);
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
134: # look at the type of the first element
+135: first = None
__Pyx_INCREF(Py_None);
__pyx_v_first = Py_None;
+136: if not dtype:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtype); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 136, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+137: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L9_try_end;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L9_try_end:;
}
+138: if isinstance(iterable, type) and not dtype:
__pyx_t_1 = PyType_Check(__pyx_v_iterable); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L11_bool_binop_done; } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtype); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 138, __pyx_L4_error) __pyx_t_6 = (!__pyx_t_1); __pyx_t_2 = __pyx_t_6; __pyx_L11_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L10; }
+139: iterable, dtype = None, iterable
__pyx_t_7 = Py_None;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = __pyx_v_iterable;
__Pyx_INCREF(__pyx_t_8);
__Pyx_DECREF_SET(__pyx_v_iterable, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_8);
__pyx_t_8 = 0;
+140: elif hasattr(iterable, '__next__'):
__pyx_t_2 = __Pyx_HasAttr(__pyx_v_iterable, __pyx_mstate_global->__pyx_n_u_next); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 140, __pyx_L4_error) if (__pyx_t_2) { /* … */ goto __pyx_L10; }
+141: first = next(iterable)
__pyx_t_8 = __Pyx_PyIter_Next(__pyx_v_iterable); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 141, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_first, __pyx_t_8); __pyx_t_8 = 0;
+142: dtype = type(first)
__Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_first))); __Pyx_DECREF_SET(__pyx_v_dtype, ((PyObject *)Py_TYPE(__pyx_v_first)));
+143: elif hasattr(iterable, '__iter__'):
__pyx_t_2 = __Pyx_HasAttr(__pyx_v_iterable, __pyx_mstate_global->__pyx_n_u_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 143, __pyx_L4_error) if (likely(__pyx_t_2)) { /* … */ goto __pyx_L10; }
+144: dtype = type(next(iter(iterable)))
__pyx_t_8 = PyObject_GetIter(__pyx_v_iterable); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 144, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyIter_Next(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 144, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_t_7))); __Pyx_DECREF_SET(__pyx_v_dtype, ((PyObject *)Py_TYPE(__pyx_t_7))); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
145: else:
+146: raise TypeError('dtype must be provided when it cannot be deduced from the iterable')
/*else*/ {
__pyx_t_8 = NULL;
__Pyx_INCREF(__pyx_builtin_TypeError);
__pyx_t_9 = __pyx_builtin_TypeError;
__pyx_t_10 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_dtype_must_be_provided_when_it_c};
__pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 146, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_ERR(0, 146, __pyx_L4_error)
}
__pyx_L10:;
+147: except StopIteration:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration); if (__pyx_t_11) { __Pyx_AddTraceback("arrex.list.typedlist.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(0, 147, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_8);
+148: raise ValueError('iterable is empty')
__pyx_t_13 = NULL;
__Pyx_INCREF(__pyx_builtin_ValueError);
__pyx_t_14 = __pyx_builtin_ValueError;
__pyx_t_10 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_mstate_global->__pyx_kp_u_iterable_is_empty};
__pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 148, __pyx_L6_except_error)
__Pyx_GOTREF(__pyx_t_12);
}
__Pyx_Raise(__pyx_t_12, 0, 0, 0);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__PYX_ERR(0, 148, __pyx_L6_except_error)
}
goto __pyx_L6_except_error;
149:
150: # initialize the internal structure
+151: self.owner = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->owner); __Pyx_DECREF(__pyx_v_self->owner); __pyx_v_self->owner = Py_None;
+152: self.ptr = NULL
__pyx_v_self->ptr = NULL;
+153: self.size = 0
__pyx_v_self->size = 0;
+154: self.allocated = 0
__pyx_v_self->allocated = 0;
+155: self.dtype = declared(dtype)
__pyx_t_8 = ((PyObject *)__pyx_f_5arrex_6dtypes_declared(__pyx_v_dtype, 0)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF((PyObject *)__pyx_v_self->dtype); __Pyx_DECREF((PyObject *)__pyx_v_self->dtype); __pyx_v_self->dtype = ((struct __pyx_obj_5arrex_6dtypes_DDType *)__pyx_t_8); __pyx_t_8 = 0;
+156: if not self.dtype:
__pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->dtype)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 156, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_2); if (unlikely(__pyx_t_6)) { /* … */ }
+157: raise TypeError('dtype must be a dtype declaration instance, or a key for a declared dtype')
__pyx_t_9 = NULL;
__Pyx_INCREF(__pyx_builtin_TypeError);
__pyx_t_7 = __pyx_builtin_TypeError;
__pyx_t_10 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_dtype_must_be_a_dtype_declaratio};
__pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 157, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_ERR(0, 157, __pyx_L1_error)
158:
159: # borrow a buffer
+160: if PyObject_CheckBuffer(iterable):
__pyx_t_6 = PyObject_CheckBuffer(__pyx_v_iterable);
if (__pyx_t_6) {
/* … */
goto __pyx_L16;
}
+161: self._use(iterable)
__pyx_t_11 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_use(__pyx_v_self, __pyx_v_iterable); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 161, __pyx_L1_error)
+162: self.size = self.allocated
__pyx_t_10 = __pyx_v_self->allocated;
__pyx_v_self->size = __pyx_t_10;
+163: if reserve:
__pyx_t_6 = (__pyx_v_reserve != 0);
if (__pyx_t_6) {
/* … */
}
+164: self._reallocate(reserve * self.dtype.dsize)
__pyx_t_11 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, (__pyx_v_reserve * __pyx_v_self->dtype->dsize)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 164, __pyx_L1_error)
165: # fill with an iterable
166: else:
+167: if reserve:
/*else*/ {
__pyx_t_6 = (__pyx_v_reserve != 0);
if (__pyx_t_6) {
/* … */
}
+168: self._reallocate(reserve * self.dtype.dsize)
__pyx_t_11 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, (__pyx_v_reserve * __pyx_v_self->dtype->dsize)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 168, __pyx_L1_error)
+169: if iterable is not None:
__pyx_t_6 = (__pyx_v_iterable != Py_None);
if (__pyx_t_6) {
/* … */
}
}
__pyx_L16:;
+170: if first is not None:
__pyx_t_6 = (__pyx_v_first != Py_None);
if (__pyx_t_6) {
/* … */
}
+171: self.append(first)
__pyx_t_11 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->append(__pyx_v_self, __pyx_v_first, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 171, __pyx_L1_error)
+172: self.extend(iterable)
((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->extend(__pyx_v_self, __pyx_v_iterable, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L1_error)
173:
+174: @staticmethod
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_3full(CYTHON_UNUSED PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_2full, " full(value, size)\n\t\t\n\t\t\tcreate a new typedlist with the given `size`, all elements initialized to `value`. \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_3full = {"full", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_3full, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_2full}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_3full(CYTHON_UNUSED PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_value = 0; PyObject *__pyx_v_size = 0; PyObject *__pyx_v_dtype = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("full (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,&__pyx_mstate_global->__pyx_n_u_size,&__pyx_mstate_global->__pyx_n_u_dtype,0}; PyObject* values[3] = {0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 174, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 174, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 174, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 174, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "full", 0) < 0) __PYX_ERR(0, 174, __pyx_L3_error) /* … */ /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_2full(PyObject *__pyx_v_value, PyObject *__pyx_v_size, PyObject *__pyx_v_dtype) { Py_ssize_t __pyx_v_i; struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_array = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("arrex.list.typedlist.full", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_array); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_3full, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_full, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[2]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_full, __pyx_t_3) < 0) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_builtin_staticmethod); __pyx_t_4 = __pyx_builtin_staticmethod; __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_full); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_full, __pyx_t_3) < 0) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+175: def full(value, size, dtype=None):
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("full", 0, 2, 3, i); __PYX_ERR(0, 174, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 174, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 174, __pyx_L3_error) values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 174, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_value = values[0]; __pyx_v_size = values[1]; __pyx_v_dtype = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("full", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 174, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.full", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_2full(__pyx_v_value, __pyx_v_size, __pyx_v_dtype);
176: ''' full(value, size)
177:
178: create a new typedlist with the given `size`, all elements initialized to `value`.
179: '''
180: cdef ssize_t i
+181: cdef typedlist array = typedlist(dtype=dtype or type(value), reserve=size)
__pyx_t_2 = NULL; __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_dtype); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 181, __pyx_L1_error) if (!__pyx_t_5) { } else { __Pyx_INCREF(__pyx_v_dtype); __pyx_t_4 = __pyx_v_dtype; goto __pyx_L3_bool_binop_done; } __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_value))); __pyx_t_4 = ((PyObject *)Py_TYPE(__pyx_v_value)); __pyx_L3_bool_binop_done:; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL}; __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_4, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 181, __pyx_L1_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_reserve, __pyx_v_size, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 181, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_v_array = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_1); __pyx_t_1 = 0;
+182: for i in range(size):
__pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_size); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 182, __pyx_L1_error) __pyx_t_9 = __pyx_t_8; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10;
+183: array._setitem(array.ptr + i*array.dtype.dsize, value)
__pyx_t_11 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_array->__pyx_vtab)->_setitem(__pyx_v_array, (__pyx_v_array->ptr + (__pyx_v_i * __pyx_v_array->dtype->dsize)), __pyx_v_value); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 183, __pyx_L1_error)
}
+184: array.size = array.allocated
__pyx_t_6 = __pyx_v_array->allocated; __pyx_v_array->size = __pyx_t_6;
+185: return array
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_array); __pyx_r = ((PyObject *)__pyx_v_array); goto __pyx_L0;
186:
+187: @staticmethod
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_5empty(CYTHON_UNUSED PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_4empty, " empty(dtype, size)\n\t\t\n\t\t\tcreate a new typedlist with the given `size` and unitialized elements of type `dtype`\n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_5empty = {"empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_5empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_4empty}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_5empty(CYTHON_UNUSED PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_dtype = 0; PyObject *__pyx_v_size = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("empty (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dtype,&__pyx_mstate_global->__pyx_n_u_size,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 187, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 187, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 187, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "empty", 0) < 0) __PYX_ERR(0, 187, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("empty", 1, 2, 2, i); __PYX_ERR(0, 187, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 187, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 187, __pyx_L3_error) } __pyx_v_dtype = values[0]; __pyx_v_size = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("empty", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 187, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.empty", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_4empty(__pyx_v_dtype, __pyx_v_size); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_4empty(PyObject *__pyx_v_dtype, PyObject *__pyx_v_size) { struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_array = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("arrex.list.typedlist.empty", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_array); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_5empty, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_empty, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_empty, __pyx_t_3) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_builtin_staticmethod); __pyx_t_5 = __pyx_builtin_staticmethod; __Pyx_GetNameInClass(__pyx_t_2, (PyObject*)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_empty, __pyx_t_3) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
188: def empty(dtype, size):
189: ''' empty(dtype, size)
190:
191: create a new typedlist with the given `size` and unitialized elements of type `dtype`
192: '''
+193: cdef typedlist array = typedlist(dtype=dtype, reserve=size)
__pyx_t_2 = NULL; __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_4 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_v_dtype, __pyx_t_5, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 193, __pyx_L1_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_reserve, __pyx_v_size, __pyx_t_5, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 193, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_v_array = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_1); __pyx_t_1 = 0;
+194: array.size = array.allocated
__pyx_t_4 = __pyx_v_array->allocated; __pyx_v_array->size = __pyx_t_4;
+195: return array
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_array); __pyx_r = ((PyObject *)__pyx_v_array); goto __pyx_L0;
196:
197:
198: # convenient internal functions
199:
+200: cdef object _getitem(self, void* place):
static PyObject *__pyx_f_5arrex_4list_9typedlist__getitem(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, void *__pyx_v_place) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("arrex.list.typedlist._getitem", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+201: return self.dtype.c_unpack(self.dtype, place)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = ((PyObject *)__pyx_v_self->dtype); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = __pyx_v_self->dtype->c_unpack(__pyx_t_1, __pyx_v_place); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
202:
+203: cdef int _setitem(self, void* place, obj) except -1:
static int __pyx_f_5arrex_4list_9typedlist__setitem(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, void *__pyx_v_place, PyObject *__pyx_v_obj) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist._setitem", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+204: return self.dtype.c_pack(self.dtype, place, obj)
__pyx_t_1 = ((PyObject *)__pyx_v_self->dtype); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = __pyx_v_self->dtype->c_pack(__pyx_t_1, __pyx_v_place, __pyx_v_obj); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0;
205:
+206: cdef int _use(self, buffer) except -1:
static int __pyx_f_5arrex_4list_9typedlist__use(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_buffer) {
Py_buffer __pyx_v_view;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("arrex.list.typedlist._use", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
207: cdef Py_buffer view
208:
+209: PyObject_GetBuffer(buffer, &view, PyBUF_SIMPLE)
__pyx_t_1 = PyObject_GetBuffer(__pyx_v_buffer, (&__pyx_v_view), PyBUF_SIMPLE); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
+210: self.ptr = <char*> view.buf
__pyx_v_self->ptr = ((char *)__pyx_v_view.buf);
+211: self.allocated = view.len
__pyx_t_2 = __pyx_v_view.len; __pyx_v_self->allocated = __pyx_t_2;
+212: self.owner = view.obj
__pyx_t_3 = __pyx_v_view.obj; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->owner); __Pyx_DECREF(__pyx_v_self->owner); __pyx_v_self->owner = __pyx_t_3; __pyx_t_3 = 0;
+213: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
214:
+215: cdef int _reallocate(self, size_t size) except -1:
static int __pyx_f_5arrex_4list_9typedlist__reallocate(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, size_t __pyx_v_size) {
CYTHON_UNUSED PyObject *__pyx_v_lastowner = NULL;
char *__pyx_v_lastptr;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist._reallocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_lastowner);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+216: lastowner = self.owner
__pyx_t_1 = __pyx_v_self->owner;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_lastowner = __pyx_t_1;
__pyx_t_1 = 0;
+217: lastptr = self.ptr
__pyx_t_2 = __pyx_v_self->ptr; __pyx_v_lastptr = __pyx_t_2;
218:
219: # buffer protocol is less efficient that PyBytes_AS_STRING so we use it directly here where we know that owner is bytes
+220: self.owner = PyBytes_FromStringAndSize(NULL, size)
__pyx_t_1 = PyBytes_FromStringAndSize(NULL, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->owner); __Pyx_DECREF(__pyx_v_self->owner); __pyx_v_self->owner = __pyx_t_1; __pyx_t_1 = 0;
+221: self.ptr = PyBytes_AS_STRING(self.owner)
__pyx_t_1 = __pyx_v_self->owner; __Pyx_INCREF(__pyx_t_1); __pyx_v_self->ptr = PyBytes_AS_STRING(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
222: #cdef buffer buff = buffer(size)
223: #self.owner = buff
224: #self.ptr = buff.ptr
225:
226: #print('** reallocate', sys.getrefcount(self.owner), sys.getrefcount(lastowner), lastowner is None)
227:
+228: self.allocated = size
__pyx_v_self->allocated = __pyx_v_size;
+229: self.size = min(size, self.size)
__pyx_t_3 = __pyx_v_self->size;
__pyx_t_4 = __pyx_v_size;
__pyx_t_6 = (__pyx_t_3 < __pyx_t_4);
if (__pyx_t_6) {
__pyx_t_5 = __pyx_t_3;
} else {
__pyx_t_5 = __pyx_t_4;
}
__pyx_v_self->size = __pyx_t_5;
+230: memcpy(self.ptr, lastptr, self.size)
(void)(memcpy(__pyx_v_self->ptr, __pyx_v_lastptr, __pyx_v_self->size));
231:
+232: cdef size_t _len(self):
static size_t __pyx_f_5arrex_4list_9typedlist__len(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
size_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+233: return self.size // self.dtype.dsize
__pyx_r = (__pyx_v_self->size / __pyx_v_self->dtype->dsize); goto __pyx_L0;
234:
+235: cdef Py_ssize_t _index(self, index) except -1:
static Py_ssize_t __pyx_f_5arrex_4list_9typedlist__index(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_l;
Py_ssize_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("arrex.list.typedlist._index", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
236: ''' return a C index (0 < i < l) from a python object '''
+237: cdef Py_ssize_t i = index
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 237, __pyx_L1_error) __pyx_v_i = __pyx_t_1;
+238: cdef Py_ssize_t l = self._len()
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 238, __pyx_L1_error)
__pyx_v_l = __pyx_t_2;
+239: if i < 0: i += l
__pyx_t_3 = (__pyx_v_i < 0);
if (__pyx_t_3) {
__pyx_v_i = (__pyx_v_i + __pyx_v_l);
}
+240: if i < 0 or i >= l:
__pyx_t_4 = (__pyx_v_i < 0);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_i >= __pyx_v_l);
__pyx_t_3 = __pyx_t_4;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+241: raise IndexError('index out of range')
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_7 = __pyx_builtin_IndexError;
__pyx_t_2 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_index_out_of_range};
__pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (__pyx_t_2*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 241, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 241, __pyx_L1_error)
+242: return i
__pyx_r = __pyx_v_i; goto __pyx_L0;
243:
244: # python interface
245:
+246: def reserve(self, amount):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_7reserve(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_6reserve, " reserve(amount: int)\n\t\t\n\t\t\tMake sure there is enough allocated memory to append the given amount of elements. \n\t\t\n\t\t\tif there is not enough of allocated memory, the memory is reallocated immediately.\n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_7reserve = {"reserve", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_7reserve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_6reserve}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_7reserve(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_amount = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reserve (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_amount,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 246, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 246, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reserve", 0) < 0) __PYX_ERR(0, 246, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reserve", 1, 1, 1, i); __PYX_ERR(0, 246, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 246, __pyx_L3_error) } __pyx_v_amount = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 246, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_6reserve(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_amount); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_6reserve(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_amount) { size_t __pyx_v_asked; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("arrex.list.typedlist.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_7reserve, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_reserve, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_reserve, __pyx_t_3) < 0) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
247: ''' reserve(amount: int)
248:
249: Make sure there is enough allocated memory to append the given amount of elements.
250:
251: if there is not enough of allocated memory, the memory is reallocated immediately.
252: '''
+253: if amount < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_amount, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+254: raise ValueError('amount must be positive')
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_builtin_ValueError);
__pyx_t_4 = __pyx_builtin_ValueError;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_amount_must_be_positive};
__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 254, __pyx_L1_error)
+255: cdef size_t asked = self.size + (<size_t>amount) * self.dtype.dsize
__pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_amount); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 255, __pyx_L1_error) __pyx_v_asked = (__pyx_v_self->size + (((size_t)__pyx_t_5) * __pyx_v_self->dtype->dsize));
+256: if asked > self.allocated:
__pyx_t_2 = (__pyx_v_asked > __pyx_v_self->allocated);
if (__pyx_t_2) {
/* … */
}
+257: self._reallocate(asked)
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_v_asked); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 257, __pyx_L1_error)
258:
+259: cpdef int append(self, value) except -1:
static PyObject *__pyx_pw_5arrex_4list_9typedlist_9append(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_f_5arrex_4list_9typedlist_append(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_value, int __pyx_skip_dispatch) {
int __pyx_r;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (
#if !CYTHON_USE_TYPE_SLOTS
unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist &&
__Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
#else
unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
#endif
) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_5arrex_4list_9typedlist_9append)) {
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
__pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_6;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("arrex.list.typedlist.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_9append(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_8append, " append(value)\n\t\t\n\t\t\tappend the given object at the end of the array\n\t\t\n\t\t\tif there is not enough allocated memory, reallocate enough to amortize the realocation time over the multiple appends\n\t\t");
static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_9append = {"append", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_9append, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_8append};
static PyObject *__pyx_pw_5arrex_4list_9typedlist_9append(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_value = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("append (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 259, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 259, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "append", 0) < 0) __PYX_ERR(0, 259, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("append", 1, 1, 1, i); __PYX_ERR(0, 259, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 259, __pyx_L3_error)
}
__pyx_v_value = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("append", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 259, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("arrex.list.typedlist.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_8append(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_value);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_8append(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_value) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_5arrex_4list_9typedlist_append(__pyx_v_self, __pyx_v_value, 1); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 259, __pyx_L1_error)
__pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("arrex.list.typedlist.append", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_9append, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_append, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_append, __pyx_t_3) < 0) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
260: ''' append(value)
261:
262: append the given object at the end of the array
263:
264: if there is not enough allocated memory, reallocate enough to amortize the realocation time over the multiple appends
265: '''
+266: if self.allocated < self.size + self.dtype.dsize:
__pyx_t_7 = (__pyx_v_self->allocated < (__pyx_v_self->size + __pyx_v_self->dtype->dsize));
if (__pyx_t_7) {
/* … */
}
+267: self._reallocate(self.allocated*2 or self.dtype.dsize)
__pyx_t_8 = (__pyx_v_self->allocated * 2);
if (!__pyx_t_8) {
} else {
__pyx_t_5 = __pyx_t_8;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_5 = __pyx_v_self->dtype->dsize;
__pyx_L4_bool_binop_done:;
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 267, __pyx_L1_error)
268:
+269: self._setitem(self.ptr + self.size, value)
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_setitem(__pyx_v_self, (__pyx_v_self->ptr + __pyx_v_self->size), __pyx_v_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 269, __pyx_L1_error)
+270: self.size += self.dtype.dsize
__pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->dtype->dsize);
271:
+272: def pop(self, index=None):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_11pop(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_10pop, " pop(index=None) -> object\n\t\t\n\t\t\tremove the element at index, returning it. If no index is specified, it will pop the last one .\n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_11pop = {"pop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_11pop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_10pop}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_11pop(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_index = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pop (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_index,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 272, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 272, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "pop", 0) < 0) __PYX_ERR(0, 272, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 272, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_index = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("pop", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 272, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_10pop(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_index); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_10pop(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index) { size_t __pyx_v_i; char *__pyx_v_start; PyObject *__pyx_v_e = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("arrex.list.typedlist.pop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_e); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_11pop, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_pop, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[2]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_pop, __pyx_t_3) < 0) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
273: ''' pop(index=None) -> object
274:
275: remove the element at index, returning it. If no index is specified, it will pop the last one .
276: '''
277: cdef size_t i
278: cdef char * start
279:
+280: if not self.size:
__pyx_t_1 = (!(__pyx_v_self->size != 0));
if (unlikely(__pyx_t_1)) {
/* … */
}
+281: raise IndexError('pop from empty list')
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_4 = __pyx_builtin_IndexError;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_pop_from_empty_list};
__pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(0, 281, __pyx_L1_error)
282:
+283: if index is None:
__pyx_t_1 = (__pyx_v_index == Py_None);
if (__pyx_t_1) {
/* … */
}
+284: e = self._getitem(self.ptr + self.size - self.dtype.dsize)
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_getitem(__pyx_v_self, ((__pyx_v_self->ptr + __pyx_v_self->size) - __pyx_v_self->dtype->dsize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_e = __pyx_t_2; __pyx_t_2 = 0;
+285: self.size -= self.dtype.dsize
__pyx_v_self->size = (__pyx_v_self->size - __pyx_v_self->dtype->dsize);
+286: return e
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_e); __pyx_r = __pyx_v_e; goto __pyx_L0;
287: else:
+288: i = self._index(index)
/*else*/ {
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_index(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 288, __pyx_L1_error)
__pyx_v_i = __pyx_t_6;
289:
+290: start = self.ptr + i*self.dtype.dsize
__pyx_v_start = (__pyx_v_self->ptr + (__pyx_v_i * __pyx_v_self->dtype->dsize));
+291: e = self._getitem(start)
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_getitem(__pyx_v_self, __pyx_v_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_e = __pyx_t_2; __pyx_t_2 = 0;
+292: memmove(start, start + self.dtype.dsize, self.size-(i+1)*self.dtype.dsize)
(void)(memmove(__pyx_v_start, (__pyx_v_start + __pyx_v_self->dtype->dsize), (__pyx_v_self->size - ((__pyx_v_i + 1) * __pyx_v_self->dtype->dsize))));
+293: self.size -= self.dtype.dsize
__pyx_v_self->size = (__pyx_v_self->size - __pyx_v_self->dtype->dsize);
+294: return e
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_e); __pyx_r = __pyx_v_e; goto __pyx_L0; }
295:
+296: def insert(self, index, value):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_13insert(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_12insert, " insert(index, value)\n\t\t\n\t\t\tinsert value at index \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_13insert = {"insert", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_13insert, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_12insert}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_13insert(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_index = 0; PyObject *__pyx_v_value = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("insert (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_index,&__pyx_mstate_global->__pyx_n_u_value,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 296, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 296, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 296, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "insert", 0) < 0) __PYX_ERR(0, 296, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, i); __PYX_ERR(0, 296, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 296, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 296, __pyx_L3_error) } __pyx_v_index = values[0]; __pyx_v_value = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 296, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_12insert(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_index, __pyx_v_value); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_12insert(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_l; size_t __pyx_v_j; char *__pyx_v_start; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("arrex.list.typedlist.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_13insert, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_insert, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_insert, __pyx_t_3) < 0) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
297: ''' insert(index, value)
298:
299: insert value at index
300: '''
301:
+302: cdef Py_ssize_t i = index
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) __pyx_v_i = __pyx_t_1;
+303: cdef Py_ssize_t l = self._len()
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error)
__pyx_v_l = __pyx_t_2;
+304: if i < 0: i += l
__pyx_t_3 = (__pyx_v_i < 0);
if (__pyx_t_3) {
__pyx_v_i = (__pyx_v_i + __pyx_v_l);
}
+305: if i < 0 or i > l:
__pyx_t_4 = (__pyx_v_i < 0);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_i > __pyx_v_l);
__pyx_t_3 = __pyx_t_4;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+306: raise IndexError('index out of range')
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_7 = __pyx_builtin_IndexError;
__pyx_t_2 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_index_out_of_range};
__pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (__pyx_t_2*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 306, __pyx_L1_error)
+307: cdef size_t j = i
__pyx_v_j = __pyx_v_i;
308:
+309: if self.allocated - self.size < self.dtype.dsize:
__pyx_t_3 = ((__pyx_v_self->allocated - __pyx_v_self->size) < __pyx_v_self->dtype->dsize);
if (__pyx_t_3) {
/* … */
}
+310: self._reallocate(self.allocated*2 or self.dtype.dsize)
__pyx_t_8 = (__pyx_v_self->allocated * 2);
if (!__pyx_t_8) {
} else {
__pyx_t_2 = __pyx_t_8;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_2 = __pyx_v_self->dtype->dsize;
__pyx_L8_bool_binop_done:;
__pyx_t_9 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_t_2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 310, __pyx_L1_error)
311:
+312: cdef char * start = self.ptr + j*self.dtype.dsize
__pyx_v_start = (__pyx_v_self->ptr + (__pyx_v_j * __pyx_v_self->dtype->dsize));
+313: memmove(start+self.dtype.dsize, start, self.size-j*self.dtype.dsize)
(void)(memmove((__pyx_v_start + __pyx_v_self->dtype->dsize), __pyx_v_start, (__pyx_v_self->size - (__pyx_v_j * __pyx_v_self->dtype->dsize))));
+314: self._setitem(start, value)
__pyx_t_9 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_setitem(__pyx_v_self, __pyx_v_start, __pyx_v_value); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 314, __pyx_L1_error)
+315: self.size += self.dtype.dsize
__pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->dtype->dsize);
316:
+317: def clear(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_15clear(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_14clear, " remove all elements from the array but does not deallocate, very fast operation "); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_15clear = {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_15clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_14clear}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_15clear(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("clear", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clear", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_5arrex_4list_9typedlist_14clear(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_14clear(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_15clear, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_clear, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_clear, __pyx_t_3) < 0) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
318: ''' remove all elements from the array but does not deallocate, very fast operation '''
+319: self.size = 0
__pyx_v_self->size = 0;
320:
+321: cpdef int extend(self, other) except *:
static PyObject *__pyx_pw_5arrex_4list_9typedlist_17extend(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_f_5arrex_4list_9typedlist_extend(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_skip_dispatch) {
Py_buffer __pyx_v_view;
Py_ssize_t __pyx_v_l;
PyObject *__pyx_v_o = NULL;
int __pyx_r;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (
#if !CYTHON_USE_TYPE_SLOTS
unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist &&
__Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
#else
unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
#endif
) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_extend); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_5arrex_4list_9typedlist_17extend)) {
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_other};
__pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_6;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("arrex.list.typedlist.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_o);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_17extend(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_16extend, " extend(iterable)\n\t\t\n\t\t\tappend all elements from the other array \n\t\t");
static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_17extend = {"extend", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_17extend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_16extend};
static PyObject *__pyx_pw_5arrex_4list_9typedlist_17extend(PyObject *__pyx_v_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_other = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("extend (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_other,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 321, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 321, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "extend", 0) < 0) __PYX_ERR(0, 321, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("extend", 1, 1, 1, i); __PYX_ERR(0, 321, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 321, __pyx_L3_error)
}
__pyx_v_other = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("extend", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 321, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("arrex.list.typedlist.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_16extend(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_other);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_16extend(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_5arrex_4list_9typedlist_extend(__pyx_v_self, __pyx_v_other, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L1_error)
__pyx_t_2 = __Pyx_PyLong_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("arrex.list.typedlist.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_17extend, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_extend, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_extend, __pyx_t_3) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
322: ''' extend(iterable)
323:
324: append all elements from the other array
325: '''
326: cdef Py_buffer view
327: cdef Py_ssize_t l
328:
+329: if PyObject_CheckBuffer(other):
__pyx_t_7 = PyObject_CheckBuffer(__pyx_v_other);
if (__pyx_t_7) {
/* … */
goto __pyx_L3;
}
+330: PyObject_GetBuffer(other, &view, PyBUF_SIMPLE)
__pyx_t_6 = PyObject_GetBuffer(__pyx_v_other, (&__pyx_v_view), PyBUF_SIMPLE); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 330, __pyx_L1_error)
331:
+332: if view.len % self.dtype.dsize:
__pyx_t_7 = ((__pyx_v_view.len % __pyx_v_self->dtype->dsize) != 0);
if (unlikely(__pyx_t_7)) {
/* … */
}
+333: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
+334: raise TypeError('the given buffer must have a byte size multiple of dtype size')
__pyx_t_2 = NULL;
__Pyx_INCREF(__pyx_builtin_TypeError);
__pyx_t_4 = __pyx_builtin_TypeError;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_the_given_buffer_must_have_a_byt};
__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 334, __pyx_L1_error)
335:
+336: if <size_t>view.len > self.allocated - self.size:
__pyx_t_7 = (((size_t)__pyx_v_view.len) > (__pyx_v_self->allocated - __pyx_v_self->size));
if (__pyx_t_7) {
/* … */
}
+337: self._reallocate(max(2*self.size, self.size + view.len))
__pyx_t_5 = (__pyx_v_self->size + __pyx_v_view.len);
__pyx_t_8 = (2 * __pyx_v_self->size);
__pyx_t_7 = (__pyx_t_5 > __pyx_t_8);
if (__pyx_t_7) {
__pyx_t_9 = __pyx_t_5;
} else {
__pyx_t_9 = __pyx_t_8;
}
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_t_9); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 337, __pyx_L1_error)
+338: memcpy(self.ptr+self.size, view.buf, view.len)
(void)(memcpy((__pyx_v_self->ptr + __pyx_v_self->size), __pyx_v_view.buf, __pyx_v_view.len));
+339: self.size += view.len
__pyx_v_self->size = (__pyx_v_self->size + __pyx_v_view.len);
340:
+341: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
342:
343: else:
+344: l = PyObject_LengthHint(other, 0)
/*else*/ {
__pyx_v_l = PyObject_LengthHint(__pyx_v_other, 0);
+345: if l*self.dtype.dsize > self.allocated - self.size:
__pyx_t_7 = ((__pyx_v_l * __pyx_v_self->dtype->dsize) > (__pyx_v_self->allocated - __pyx_v_self->size));
if (__pyx_t_7) {
/* … */
}
+346: self._reallocate(self.size + l*self.dtype.dsize)
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, (__pyx_v_self->size + (__pyx_v_l * __pyx_v_self->dtype->dsize))); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 346, __pyx_L1_error)
+347: for o in other:
if (likely(PyList_CheckExact(__pyx_v_other)) || PyTuple_CheckExact(__pyx_v_other)) { __pyx_t_1 = __pyx_v_other; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { __pyx_t_10 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 347, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 347, __pyx_L1_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_10); ++__pyx_t_10; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 347, __pyx_L1_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10)); #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); #endif ++__pyx_t_10; } if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) } else { __pyx_t_4 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 347, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L3:;
+348: self.append(o)
__pyx_t_6 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->append(__pyx_v_self, __pyx_v_o, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 348, __pyx_L1_error)
349:
+350: def __iadd__(self, other):
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_19__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_19__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_18__iadd__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_other));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_18__iadd__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_other) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("arrex.list.typedlist.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+351: self.extend(other)
((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->extend(__pyx_v_self, __pyx_v_other, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error)
+352: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
353:
+354: def __add__(typedlist self, other):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_21__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_20__add__, " concatenation of two arrays "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_20__add__; #endif static PyObject *__pyx_pw_5arrex_4list_9typedlist_21__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__add__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_20__add__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_other)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_20__add__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_other) { struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_result = 0; Py_buffer __pyx_v_view; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("arrex.list.typedlist.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
355: ''' concatenation of two arrays '''
356: cdef typedlist result
357: cdef Py_buffer view
358:
+359: if PyObject_CheckBuffer(other):
__pyx_t_1 = PyObject_CheckBuffer(__pyx_v_other);
if (__pyx_t_1) {
/* … */
}
+360: PyObject_GetBuffer(other, &view, PyBUF_SIMPLE)
__pyx_t_2 = PyObject_GetBuffer(__pyx_v_other, (&__pyx_v_view), PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 360, __pyx_L1_error)
361:
+362: if view.len % self.dtype.dsize:
__pyx_t_1 = ((__pyx_v_view.len % __pyx_v_self->dtype->dsize) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+363: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
+364: raise TypeError('the given buffer must have a byte size multiple of dtype size')
__pyx_t_4 = NULL;
__Pyx_INCREF(__pyx_builtin_TypeError);
__pyx_t_5 = __pyx_builtin_TypeError;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_the_given_buffer_must_have_a_byt};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 364, __pyx_L1_error)
365:
+366: result = typedlist.__new__(typedlist)
__pyx_t_3 = ((PyObject *)__pyx_tp_new_5arrex_4list_typedlist(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __pyx_v_result = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_3); __pyx_t_3 = 0;
+367: result.dtype = self.dtype
__pyx_t_3 = ((PyObject *)__pyx_v_self->dtype);
__Pyx_INCREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF((PyObject *)__pyx_v_result->dtype);
__Pyx_DECREF((PyObject *)__pyx_v_result->dtype);
__pyx_v_result->dtype = ((struct __pyx_obj_5arrex_6dtypes_DDType *)__pyx_t_3);
__pyx_t_3 = 0;
+368: result._reallocate(self.size + view.len)
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_result->__pyx_vtab)->_reallocate(__pyx_v_result, (__pyx_v_self->size + __pyx_v_view.len)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 368, __pyx_L1_error)
+369: memcpy(result.ptr, self.ptr, self.size)
(void)(memcpy(__pyx_v_result->ptr, __pyx_v_self->ptr, __pyx_v_self->size));
+370: memcpy(result.ptr+self.size, view.buf, view.len)
(void)(memcpy((__pyx_v_result->ptr + __pyx_v_self->size), __pyx_v_view.buf, __pyx_v_view.len));
+371: result.size = result.allocated
__pyx_t_6 = __pyx_v_result->allocated;
__pyx_v_result->size = __pyx_t_6;
372:
+373: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
+374: return result
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_result); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0;
375:
+376: elif hasattr(other, '__iter__'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 376, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+377: result = typedlist(None, self.dtype)
__pyx_t_5 = NULL;
__Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist);
__pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist);
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, Py_None, ((PyObject *)__pyx_v_self->dtype)};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_3);
}
__pyx_v_result = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_3);
__pyx_t_3 = 0;
+378: result.extend(self)
((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_result->__pyx_vtab)->extend(__pyx_v_result, ((PyObject *)__pyx_v_self), 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 378, __pyx_L1_error)
+379: result.extend(other)
((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_result->__pyx_vtab)->extend(__pyx_v_result, __pyx_v_other, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L1_error)
+380: return result
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_result); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0;
381:
382: else:
+383: return NotImplemented
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_builtin_NotImplemented);
__pyx_r = __pyx_builtin_NotImplemented;
goto __pyx_L0;
}
384:
+385: def __mul__(self, n):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_23__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_n); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_22__mul__, " duplicate the sequence by a certain number "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_22__mul__; #endif static PyObject *__pyx_pw_5arrex_4list_9typedlist_23__mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_n) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__mul__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_22__mul__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_n)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_22__mul__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_n) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("arrex.list.typedlist.__mul__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
386: ''' duplicate the sequence by a certain number '''
387: #if isinstance(n, int):
+388: if PyNumber_Check(n):
__pyx_t_1 = PyNumber_Check(__pyx_v_n);
if (__pyx_t_1) {
/* … */
}
+389: return typedlist(bytes(self)*n, dtype=self.dtype)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = NULL; __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_6 = NULL; __Pyx_INCREF((PyObject *)(&PyBytes_Type)); __pyx_t_7 = ((PyObject *)(&PyBytes_Type)); __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_7}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, ((PyObject *)__pyx_v_self->dtype), __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 389, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); } __pyx_r = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
390: else:
+391: return NotImplemented
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_builtin_NotImplemented);
__pyx_r = __pyx_builtin_NotImplemented;
goto __pyx_L0;
}
392:
+393: def capacity(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_25capacity(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_24capacity, " capacity()\n\t\t\n\t\t\treturn the total number of elements that can be stored with the current allocated memory \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_25capacity = {"capacity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_25capacity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_24capacity}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_25capacity(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("capacity (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("capacity", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("capacity", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_5arrex_4list_9typedlist_24capacity(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_24capacity(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("arrex.list.typedlist.capacity", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_25capacity, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_capacity, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_capacity, __pyx_t_3) < 0) __PYX_ERR(0, 393, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
394: ''' capacity()
395:
396: return the total number of elements that can be stored with the current allocated memory
397: '''
+398: return self.allocated // self.dtype.dsize
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_FromSize_t((__pyx_v_self->allocated / __pyx_v_self->dtype->dsize)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
399:
+400: def shrink(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_27shrink(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_26shrink, " shrink()\n\t\t\n\t\t\treallocate the array to have allocated the exact current size of the array \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_27shrink = {"shrink", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_27shrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_26shrink}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_27shrink(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("shrink (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("shrink", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("shrink", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_5arrex_4list_9typedlist_26shrink(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_26shrink(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("arrex.list.typedlist.shrink", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_27shrink, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_shrink, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_shrink, __pyx_t_3) < 0) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
401: ''' shrink()
402:
403: reallocate the array to have allocated the exact current size of the array
404: '''
+405: self._reallocate(self.size)
__pyx_t_1 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_v_self->size); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 405, __pyx_L1_error)
406:
+407: def __len__(self):
/* Python wrapper */ static Py_ssize_t __pyx_pw_5arrex_4list_9typedlist_29__len__(PyObject *__pyx_v_self); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_28__len__, " return the current amount of elements inserted "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_28__len__; #endif static Py_ssize_t __pyx_pw_5arrex_4list_9typedlist_29__len__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_28__len__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_5arrex_4list_9typedlist_28__len__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("arrex.list.typedlist.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; }
408: ''' return the current amount of elements inserted '''
+409: return self._len()
__pyx_t_1 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
410:
+411: def __getitem__(self, index):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_31__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_30__getitem__, " self[index]\n\t\t\n\t\t\tcurrently supports:\n\t\t\t\n\t\t\t\t- indices\n\t\t\t\t- negative indices\n\t\t\t\t- slices with step=1\n\t\t"); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_30__getitem__; #endif static PyObject *__pyx_pw_5arrex_4list_9typedlist_31__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_30__getitem__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_index)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_30__getitem__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index) { struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_view = 0; Py_ssize_t __pyx_v_start; Py_ssize_t __pyx_v_stop; Py_ssize_t __pyx_v_step; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("arrex.list.typedlist.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_view); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
412: ''' self[index]
413:
414: currently supports:
415:
416: - indices
417: - negative indices
418: - slices with step=1
419: '''
420: cdef typedlist view
421: cdef Py_ssize_t start, stop, step
422:
423: #if isinstance(index, int):
+424: if PyNumber_Check(index):
__pyx_t_1 = PyNumber_Check(__pyx_v_index);
if (__pyx_t_1) {
/* … */
}
+425: return self._getitem(self.ptr + self._index(index)*self.dtype.dsize)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_index(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 425, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_getitem(__pyx_v_self, (__pyx_v_self->ptr + (__pyx_t_2 * __pyx_v_self->dtype->dsize))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
426:
+427: elif isinstance(index, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_index);
if (likely(__pyx_t_1)) {
/* … */
}
+428: if PySlice_Unpack(index, &start, &stop, &step):
__pyx_t_4 = PySlice_Unpack(__pyx_v_index, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 428, __pyx_L1_error) __pyx_t_1 = (__pyx_t_4 != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+429: raise IndexError('incorrect slice')
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_incorrect_slice};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 429, __pyx_L1_error)
+430: if step != 1:
__pyx_t_1 = (__pyx_v_step != 1);
if (unlikely(__pyx_t_1)) {
/* … */
}
+431: raise IndexError('slice step is not supported')
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_5 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_slice_step_is_not_supported};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 431, __pyx_L1_error)
+432: PySlice_AdjustIndices(self._len(), &start, &stop, step)
__pyx_t_7 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 432, __pyx_L1_error) (void)(PySlice_AdjustIndices(__pyx_t_7, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_step));
+433: if stop < start:
__pyx_t_1 = (__pyx_v_stop < __pyx_v_start);
if (__pyx_t_1) {
/* … */
}
+434: stop = start
__pyx_v_stop = __pyx_v_start;
435:
+436: view = typedlist.__new__(typedlist)
__pyx_t_3 = ((PyObject *)__pyx_tp_new_5arrex_4list_typedlist(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __pyx_v_view = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_3); __pyx_t_3 = 0;
+437: view.ptr = self.ptr + start*self.dtype.dsize
__pyx_v_view->ptr = (__pyx_v_self->ptr + (__pyx_v_start * __pyx_v_self->dtype->dsize));
+438: view.size = (stop-start)*self.dtype.dsize
__pyx_v_view->size = ((__pyx_v_stop - __pyx_v_start) * __pyx_v_self->dtype->dsize);
+439: view.allocated = view.size
__pyx_t_7 = __pyx_v_view->size;
__pyx_v_view->allocated = __pyx_t_7;
+440: view.owner = self.owner
__pyx_t_3 = __pyx_v_self->owner;
__Pyx_INCREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_view->owner);
__Pyx_DECREF(__pyx_v_view->owner);
__pyx_v_view->owner = __pyx_t_3;
__pyx_t_3 = 0;
+441: view.dtype = self.dtype
__pyx_t_3 = ((PyObject *)__pyx_v_self->dtype);
__Pyx_INCREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF((PyObject *)__pyx_v_view->dtype);
__Pyx_DECREF((PyObject *)__pyx_v_view->dtype);
__pyx_v_view->dtype = ((struct __pyx_obj_5arrex_6dtypes_DDType *)__pyx_t_3);
__pyx_t_3 = 0;
+442: return view
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_view); __pyx_r = ((PyObject *)__pyx_v_view); goto __pyx_L0;
443:
444: else:
+445: raise IndexError('index must be int or slice')
/*else*/ {
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_index_must_be_int_or_slice};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 445, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 445, __pyx_L1_error)
}
446:
+447: def __setitem__(self, index, value):
/* Python wrapper */
static int __pyx_pw_5arrex_4list_9typedlist_33__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_5arrex_4list_9typedlist_33__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_32__setitem__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_5arrex_4list_9typedlist_32__setitem__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
Py_buffer __pyx_v_view;
Py_ssize_t __pyx_v_start;
Py_ssize_t __pyx_v_stop;
Py_ssize_t __pyx_v_step;
size_t __pyx_v_newsize;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("arrex.list.typedlist.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
448: cdef Py_buffer view
449: cdef Py_ssize_t start, stop, step
450: cdef size_t newsize
451:
452: #if isinstance(index, int):
+453: if PyNumber_Check(index):
__pyx_t_1 = PyNumber_Check(__pyx_v_index);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+454: self._setitem(self.ptr + self._index(index)*self.dtype.dsize, value)
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_index(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 454, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_setitem(__pyx_v_self, (__pyx_v_self->ptr + (__pyx_t_2 * __pyx_v_self->dtype->dsize)), __pyx_v_value); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error)
455:
+456: elif isinstance(index, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_index);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L3;
}
+457: if PySlice_Unpack(index, &start, &stop, &step):
__pyx_t_3 = PySlice_Unpack(__pyx_v_index, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 457, __pyx_L1_error) __pyx_t_1 = (__pyx_t_3 != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+458: raise IndexError('incorrect slice')
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_incorrect_slice};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 458, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 458, __pyx_L1_error)
+459: if step != 1:
__pyx_t_1 = (__pyx_v_step != 1);
if (unlikely(__pyx_t_1)) {
/* … */
}
+460: raise IndexError('slice step is not supported')
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_5 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_slice_step_is_not_supported};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 460, __pyx_L1_error)
+461: PySlice_AdjustIndices(self._len(), &start, &stop, step)
__pyx_t_7 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 461, __pyx_L1_error) (void)(PySlice_AdjustIndices(__pyx_t_7, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_step));
+462: if stop < start:
__pyx_t_1 = (__pyx_v_stop < __pyx_v_start);
if (__pyx_t_1) {
/* … */
}
+463: stop = start
__pyx_v_stop = __pyx_v_start;
464:
+465: if PyObject_CheckBuffer(value):
__pyx_t_1 = PyObject_CheckBuffer(__pyx_v_value);
if (__pyx_t_1) {
/* … */
goto __pyx_L7;
}
+466: PyObject_GetBuffer(value, &view, PyBUF_SIMPLE)
__pyx_t_3 = PyObject_GetBuffer(__pyx_v_value, (&__pyx_v_view), PyBUF_SIMPLE); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 466, __pyx_L1_error)
+467: start *= self.dtype.dsize
__pyx_v_start = (__pyx_v_start * __pyx_v_self->dtype->dsize);
+468: stop *= self.dtype.dsize
__pyx_v_stop = (__pyx_v_stop * __pyx_v_self->dtype->dsize);
469:
+470: if view.len != stop-start:
__pyx_t_1 = (__pyx_v_view.len != (__pyx_v_stop - __pyx_v_start));
if (__pyx_t_1) {
/* … */
}
+471: if view.len % self.dtype.dsize:
__pyx_t_1 = ((__pyx_v_view.len % __pyx_v_self->dtype->dsize) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+472: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
+473: raise TypeError('the given buffer must have a byte size multiple of dtype size')
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_TypeError);
__pyx_t_6 = __pyx_builtin_TypeError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_the_given_buffer_must_have_a_byt};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 473, __pyx_L1_error)
474:
+475: newsize = self.size + view.len + start - stop
__pyx_v_newsize = (((__pyx_v_self->size + __pyx_v_view.len) + __pyx_v_start) - __pyx_v_stop);
+476: if newsize > self.allocated:
__pyx_t_1 = (__pyx_v_newsize > __pyx_v_self->allocated);
if (__pyx_t_1) {
/* … */
}
+477: self._reallocate(max(2*self.size, newsize))
__pyx_t_7 = __pyx_v_newsize;
__pyx_t_8 = (2 * __pyx_v_self->size);
__pyx_t_1 = (__pyx_t_7 > __pyx_t_8);
if (__pyx_t_1) {
__pyx_t_9 = __pyx_t_7;
} else {
__pyx_t_9 = __pyx_t_8;
}
__pyx_t_3 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_reallocate(__pyx_v_self, __pyx_t_9); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 477, __pyx_L1_error)
478:
+479: memmove(self.ptr+start+view.len, self.ptr+stop, self.size-stop)
(void)(memmove(((__pyx_v_self->ptr + __pyx_v_start) + __pyx_v_view.len), (__pyx_v_self->ptr + __pyx_v_stop), (__pyx_v_self->size - __pyx_v_stop)));
+480: self.size = newsize
__pyx_v_self->size = __pyx_v_newsize;
481:
+482: memcpy(self.ptr+start, view.buf, view.len)
(void)(memcpy((__pyx_v_self->ptr + __pyx_v_start), __pyx_v_view.buf, __pyx_v_view.len));
483:
+484: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
485:
+486: elif hasattr(value, '__iter__'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 486, __pyx_L1_error) if (likely(__pyx_t_1)) { /* … */ goto __pyx_L7; }
+487: self[index] = typedlist(value, self.dtype)
__pyx_t_6 = NULL;
__Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist);
__pyx_t_5 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist);
__pyx_t_9 = 1;
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_value, ((PyObject *)__pyx_v_self->dtype)};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_4);
}
if (unlikely((PyObject_SetItem(((PyObject *)__pyx_v_self), __pyx_v_index, ((PyObject *)__pyx_t_4)) < 0))) __PYX_ERR(0, 487, __pyx_L1_error)
__Pyx_DECREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0;
488:
489: else:
+490: raise IndexError('the assigned value must be a buffer or an iterable')
/*else*/ {
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_9 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_the_assigned_value_must_be_a_buf};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 490, __pyx_L1_error)
}
__pyx_L7:;
491:
492: else:
+493: raise IndexError('index must be int or slice')
/*else*/ {
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_5 = __pyx_builtin_IndexError;
__pyx_t_9 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_index_must_be_int_or_slice};
__pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 493, __pyx_L1_error)
}
__pyx_L3:;
494:
+495: def __delitem__(self, index):
/* Python wrapper */
static int __pyx_pw_5arrex_4list_9typedlist_35__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
static int __pyx_pw_5arrex_4list_9typedlist_35__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_34__delitem__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_index));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_5arrex_4list_9typedlist_34__delitem__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_index) {
Py_ssize_t __pyx_v_start;
Py_ssize_t __pyx_v_stop;
Py_ssize_t __pyx_v_step;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("arrex.list.typedlist.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
496: cdef Py_ssize_t start, stop, step
497:
+498: if PyNumber_Check(index):
__pyx_t_1 = PyNumber_Check(__pyx_v_index);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+499: start = index
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L1_error) __pyx_v_start = __pyx_t_2;
+500: stop = index+1
__pyx_t_3 = __Pyx_PyLong_AddObjC(__pyx_v_index, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_stop = __pyx_t_2;
+501: elif isinstance(index, slice):
__pyx_t_1 = PySlice_Check(__pyx_v_index);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L3;
}
+502: if PySlice_Unpack(index, &start, &stop, &step):
__pyx_t_4 = PySlice_Unpack(__pyx_v_index, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 502, __pyx_L1_error) __pyx_t_1 = (__pyx_t_4 != 0); if (unlikely(__pyx_t_1)) { /* … */ }
+503: raise IndexError('incorrect slice')
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_incorrect_slice};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 503, __pyx_L1_error)
+504: if step != 1:
__pyx_t_1 = (__pyx_v_step != 1);
if (unlikely(__pyx_t_1)) {
/* … */
}
+505: raise IndexError('slice step is not supported')
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_5 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_slice_step_is_not_supported};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 505, __pyx_L1_error)
+506: PySlice_AdjustIndices(self._len(), &start, &stop, step)
__pyx_t_7 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) (void)(PySlice_AdjustIndices(__pyx_t_7, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_step));
507: else:
+508: raise IndexError('index must be int or slice')
/*else*/ {
__pyx_t_5 = NULL;
__Pyx_INCREF(__pyx_builtin_IndexError);
__pyx_t_6 = __pyx_builtin_IndexError;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_index_must_be_int_or_slice};
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 508, __pyx_L1_error)
}
__pyx_L3:;
509:
+510: start *= self.dtype.dsize
__pyx_v_start = (__pyx_v_start * __pyx_v_self->dtype->dsize);
+511: stop *= self.dtype.dsize
__pyx_v_stop = (__pyx_v_stop * __pyx_v_self->dtype->dsize);
+512: memmove(self.ptr+start, self.ptr+stop, self.size-stop)
(void)(memmove((__pyx_v_self->ptr + __pyx_v_start), (__pyx_v_self->ptr + __pyx_v_stop), (__pyx_v_self->size - __pyx_v_stop)));
+513: self.size = self.size + start - stop
__pyx_v_self->size = ((__pyx_v_self->size + __pyx_v_start) - __pyx_v_stop);
514:
515:
+516: def __iter__(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_37__iter__(PyObject *__pyx_v_self); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_36__iter__, " yield successive elements in the list "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_36__iter__; #endif static PyObject *__pyx_pw_5arrex_4list_9typedlist_37__iter__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_36__iter__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_36__iter__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { struct __pyx_obj_5arrex_4list_arrayiter *__pyx_v_it = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("arrex.list.typedlist.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_it); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
517: ''' yield successive elements in the list '''
+518: cdef arrayiter it = arrayiter.__new__(arrayiter)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_5arrex_4list_arrayiter(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_arrayiter), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_it = ((struct __pyx_obj_5arrex_4list_arrayiter *)__pyx_t_1); __pyx_t_1 = 0;
+519: it.array = self
__Pyx_INCREF((PyObject *)__pyx_v_self); __Pyx_GIVEREF((PyObject *)__pyx_v_self); __Pyx_GOTREF((PyObject *)__pyx_v_it->array); __Pyx_DECREF((PyObject *)__pyx_v_it->array); __pyx_v_it->array = __pyx_v_self;
+520: it.position = 0
__pyx_v_it->position = 0;
+521: return it
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_it); __pyx_r = ((PyObject *)__pyx_v_it); goto __pyx_L0;
522:
+523: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_39__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9typedlist_39__repr__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_38__repr__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_38__repr__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) {
size_t __pyx_v_i;
PyObject *__pyx_v_text = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("arrex.list.typedlist.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_text);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
524: cdef size_t i
+525: text = 'typedlist(['
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_typedlist);
__pyx_v_text = __pyx_mstate_global->__pyx_kp_u_typedlist;
+526: for i in range(self._len()):
__pyx_t_1 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 526, __pyx_L1_error)
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_i = __pyx_t_3;
+527: if i: text += ', '
__pyx_t_4 = (__pyx_v_i != 0);
if (__pyx_t_4) {
__pyx_t_5 = __Pyx_PyUnicode_ConcatInPlace(__pyx_v_text, __pyx_mstate_global->__pyx_kp_u_); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_5));
__pyx_t_5 = 0;
}
+528: text += repr(self._getitem(self.ptr + i*self.dtype.dsize))
__pyx_t_5 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_getitem(__pyx_v_self, (__pyx_v_self->ptr + (__pyx_v_i * __pyx_v_self->dtype->dsize))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_Repr(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyUnicode_ConcatInPlaceSafe(__pyx_v_text, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; }
+529: text += '])'
__pyx_t_5 = __Pyx_PyUnicode_ConcatInPlace(__pyx_v_text, __pyx_mstate_global->__pyx_kp_u__2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF_SET(__pyx_v_text, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0;
+530: return text
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_text); __pyx_r = __pyx_v_text; goto __pyx_L0;
531:
+532: def __eq__(self, other):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_41__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_40__eq__, " return True if other is a typedlist and its buffer byte contents is the same "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_5arrex_4list_9typedlist_40__eq__; #endif static PyObject *__pyx_pw_5arrex_4list_9typedlist_41__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_5arrex_4list_9typedlist_40__eq__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((PyObject *)__pyx_v_other)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_40__eq__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_other) { struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_o = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("arrex.list.typedlist.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_o); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
533: ''' return True if other is a typedlist and its buffer byte contents is the same '''
+534: if not isinstance(other, typedlist): return False
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_False); __pyx_r = Py_False; goto __pyx_L0; }
+535: cdef typedlist o = other
__pyx_t_3 = __pyx_v_other; __Pyx_INCREF(__pyx_t_3); if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist))))) __PYX_ERR(0, 535, __pyx_L1_error) __pyx_v_o = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_3); __pyx_t_3 = 0;
+536: if self.size != o.size: return False
__pyx_t_2 = (__pyx_v_self->size != __pyx_v_o->size);
if (__pyx_t_2) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(Py_False);
__pyx_r = Py_False;
goto __pyx_L0;
}
+537: return 0 == memcmp(self.ptr, o.ptr, self.size)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyBool_FromLong((0 == memcmp(__pyx_v_self->ptr, __pyx_v_o->ptr, __pyx_v_self->size))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
538:
+539: def __copy__(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_43__copy__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_42__copy__, " shallow copy will create a copy of that array referencing the same buffer "); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_43__copy__ = {"__copy__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_43__copy__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_42__copy__}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_43__copy__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__copy__", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__copy__", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_5arrex_4list_9typedlist_42__copy__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_42__copy__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("arrex.list.typedlist.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_43__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist___copy, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_copy, __pyx_t_3) < 0) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
540: ''' shallow copy will create a copy of that array referencing the same buffer '''
+541: return self[:]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self), 0, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* … */ __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]);
542:
+543: def __deepcopy__(self, memo):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_45__deepcopy__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_44__deepcopy__, " deep recursive copy, will duplicate the viewed data in the underlying buffer "); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_45__deepcopy__ = {"__deepcopy__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_45__deepcopy__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_44__deepcopy__}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_45__deepcopy__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v_memo = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__deepcopy__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_memo,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 543, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 543, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__deepcopy__", 0) < 0) __PYX_ERR(0, 543, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__deepcopy__", 1, 1, 1, i); __PYX_ERR(0, 543, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 543, __pyx_L3_error) } __pyx_v_memo = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__deepcopy__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 543, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.__deepcopy__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_44__deepcopy__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_memo); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_44__deepcopy__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_memo) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("arrex.list.typedlist.__deepcopy__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_45__deepcopy__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist___deepcopy, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_deepcopy, __pyx_t_3) < 0) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
544: ''' deep recursive copy, will duplicate the viewed data in the underlying buffer '''
+545: return typedlist(PyBytes_FromStringAndSize(<char*>self.ptr, self.size), self.dtype)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_4 = PyBytes_FromStringAndSize(((char *)__pyx_v_self->ptr), __pyx_v_self->size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_self->dtype)}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_r = ((PyObject *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
546:
+547: def __reduce_ex__(self, protocol):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_47__reduce_ex__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_46__reduce_ex__, " serialization protocol "); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_47__reduce_ex__ = {"__reduce_ex__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_47__reduce_ex__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_46__reduce_ex__}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_47__reduce_ex__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_protocol = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_ex__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_protocol,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 547, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 547, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__reduce_ex__", 0) < 0) __PYX_ERR(0, 547, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__reduce_ex__", 1, 1, 1, i); __PYX_ERR(0, 547, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 547, __pyx_L3_error) } __pyx_v_protocol = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__reduce_ex__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 547, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.__reduce_ex__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_46__reduce_ex__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_protocol); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_46__reduce_ex__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_protocol) { Py_buffer __pyx_v_view; PyObject *__pyx_v_stuff = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("arrex.list.typedlist.__reduce_ex__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_stuff); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_47__reduce_ex__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist___reduce_ex, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_reduce_ex, __pyx_t_3) < 0) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
548: ''' serialization protocol '''
549: cdef Py_buffer view
550:
+551: if protocol >= 5:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_protocol, __pyx_mstate_global->__pyx_int_5, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+552: if not PyObject_CheckBuffer(self.owner):
__pyx_t_1 = __pyx_v_self->owner;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = (!PyObject_CheckBuffer(__pyx_t_1));
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(__pyx_t_2)) {
/* … */
}
+553: raise RuntimeError("the buffer owner doens't implement the buffer protocol")
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_builtin_RuntimeError);
__pyx_t_4 = __pyx_builtin_RuntimeError;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_the_buffer_owner_doens_t_impleme};
__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 553, __pyx_L1_error)
+554: PyObject_GetBuffer(self.owner, &view, PyBUF_SIMPLE)
__pyx_t_1 = __pyx_v_self->owner;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_6 = PyObject_GetBuffer(__pyx_t_1, (&__pyx_v_view), PyBUF_SIMPLE); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
555: stuff = (
+556: PickleBuffer(self.owner),
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleBuffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->owner};
__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
/* … */
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_1);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 556, __pyx_L1_error);
__Pyx_INCREF((PyObject *)__pyx_v_self->dtype);
__Pyx_GIVEREF((PyObject *)__pyx_v_self->dtype);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)__pyx_v_self->dtype)) != (0)) __PYX_ERR(0, 556, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_3);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3) != (0)) __PYX_ERR(0, 556, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4) != (0)) __PYX_ERR(0, 556, __pyx_L1_error);
__pyx_t_1 = 0;
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_v_stuff = ((PyObject*)__pyx_t_7);
__pyx_t_7 = 0;
557: self.dtype,
+558: self.ptr - <char*>view.buf,
__pyx_t_3 = __Pyx_PyLong_From_ptrdiff_t((__pyx_v_self->ptr - ((char *)__pyx_v_view.buf))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+559: self.size,
__pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_self->size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4);
560: )
+561: PyBuffer_Release(&view)
PyBuffer_Release((&__pyx_v_view));
+562: return self._rebuild, stuff, None
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_rebuild); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 562, __pyx_L1_error); __Pyx_INCREF(__pyx_v_stuff); __Pyx_GIVEREF(__pyx_v_stuff); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_stuff) != (0)) __PYX_ERR(0, 562, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None) != (0)) __PYX_ERR(0, 562, __pyx_L1_error); __pyx_t_7 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
563: else:
+564: return self._rebuild, (
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_rebuild); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* … */
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 564, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 564, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_1);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 564, __pyx_L1_error);
__pyx_t_4 = 0;
__pyx_t_1 = 0;
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
}
+565: PyBytes_FromStringAndSize(<char*>self.ptr, self.size),
__pyx_t_7 = PyBytes_FromStringAndSize(((char *)__pyx_v_self->ptr), __pyx_v_self->size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 565, __pyx_L1_error); __Pyx_INCREF((PyObject *)__pyx_v_self->dtype); __Pyx_GIVEREF((PyObject *)__pyx_v_self->dtype); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->dtype)) != (0)) __PYX_ERR(0, 565, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 565, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3) != (0)) __PYX_ERR(0, 565, __pyx_L1_error); __pyx_t_7 = 0; __pyx_t_3 = 0;
566: self.dtype,
567: 0,
+568: self.size,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_self->size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
569: )
570:
+571: @classmethod
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9typedlist_49_rebuild(PyObject *__pyx_v_cls,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_49_rebuild = {"_rebuild", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_49_rebuild, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_5arrex_4list_9typedlist_49_rebuild(PyObject *__pyx_v_cls,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_owner = 0;
PyObject *__pyx_v_dtype = 0;
size_t __pyx_v_start;
size_t __pyx_v_size;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_rebuild (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_owner,&__pyx_mstate_global->__pyx_n_u_dtype,&__pyx_mstate_global->__pyx_n_u_start,&__pyx_mstate_global->__pyx_n_u_size,0};
PyObject* values[4] = {0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 571, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 571, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 571, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 571, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 571, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_rebuild", 0) < 0) __PYX_ERR(0, 571, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_rebuild", 1, 4, 4, i); __PYX_ERR(0, 571, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 4)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 571, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 571, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 571, __pyx_L3_error)
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 571, __pyx_L3_error)
}
__pyx_v_owner = values[0];
__pyx_v_dtype = values[1];
__pyx_v_start = __Pyx_PyLong_As_size_t(values[2]); if (unlikely((__pyx_v_start == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L3_error)
__pyx_v_size = __Pyx_PyLong_As_size_t(values[3]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L3_error)
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_rebuild", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 571, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("arrex.list.typedlist._rebuild", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_48_rebuild(((PyTypeObject*)__pyx_v_cls), __pyx_v_owner, __pyx_v_dtype, __pyx_v_start, __pyx_v_size);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9typedlist_48_rebuild(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_owner, PyObject *__pyx_v_dtype, size_t __pyx_v_start, size_t __pyx_v_size) {
struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_new = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("arrex.list.typedlist._rebuild", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_new);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_49_rebuild, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist__rebuild, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_rebuild, __pyx_t_3) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GetNameInClass(__pyx_t_3, (PyObject*)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_rebuild); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_rebuild, __pyx_t_5) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
572: def _rebuild(cls, owner, dtype, size_t start, size_t size):
+573: new = typedlist(owner, dtype)
__pyx_t_2 = NULL; __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist); __pyx_t_4 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_owner, __pyx_v_dtype}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_v_new = ((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_t_1); __pyx_t_1 = 0;
+574: assert start <= size
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(__pyx_assertions_enabled())) {
__pyx_t_5 = (__pyx_v_start <= __pyx_v_size);
if (unlikely(!__pyx_t_5)) {
__Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
__PYX_ERR(0, 574, __pyx_L1_error)
}
}
#else
if ((1)); else __PYX_ERR(0, 574, __pyx_L1_error)
#endif
+575: assert size <= new.size
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(__pyx_assertions_enabled())) {
__pyx_t_5 = (__pyx_v_size <= __pyx_v_new->size);
if (unlikely(!__pyx_t_5)) {
__Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
__PYX_ERR(0, 575, __pyx_L1_error)
}
}
#else
if ((1)); else __PYX_ERR(0, 575, __pyx_L1_error)
#endif
+576: new.ptr = new.ptr + start
__pyx_v_new->ptr = (__pyx_v_new->ptr + __pyx_v_start);
+577: new.size = size
__pyx_v_new->size = __pyx_v_size;
+578: return new
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_new); __pyx_r = ((PyObject *)__pyx_v_new); goto __pyx_L0;
579:
+580: def __getbuffer__(self, Py_buffer *view, int flags):
/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_5arrex_4list_9typedlist_51__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_5arrex_4list_9typedlist_51__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9typedlist_50__getbuffer__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_5arrex_4list_9typedlist_50__getbuffer__(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
struct __pyx_obj_5arrex_4list_arrayexposer *__pyx_v_exp = 0;
PyObject *__pyx_v_fmt = NULL;
int __pyx_r;
if (unlikely(__pyx_v_view == NULL)) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
}
__pyx_v_view->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_view->obj);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("arrex.list.typedlist.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_view->obj != NULL) {
__Pyx_GOTREF(__pyx_v_view->obj);
__Pyx_DECREF(__pyx_v_view->obj); __pyx_v_view->obj = 0;
}
goto __pyx_L2;
__pyx_L0:;
if (__pyx_v_view->obj == Py_None) {
__Pyx_GOTREF(__pyx_v_view->obj);
__Pyx_DECREF(__pyx_v_view->obj); __pyx_v_view->obj = 0;
}
__pyx_L2:;
__Pyx_XDECREF((PyObject *)__pyx_v_exp);
__Pyx_XDECREF(__pyx_v_fmt);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+581: cdef arrayexposer exp = arrayexposer.__new__(arrayexposer)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_5arrex_4list_arrayexposer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_5arrex_4list_arrayexposer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_exp = ((struct __pyx_obj_5arrex_4list_arrayexposer *)__pyx_t_1); __pyx_t_1 = 0;
+582: exp.owner = self.owner
__pyx_t_1 = __pyx_v_self->owner; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_exp->owner); __Pyx_DECREF(__pyx_v_exp->owner); __pyx_v_exp->owner = __pyx_t_1; __pyx_t_1 = 0;
+583: exp.shape[0] = self._len()
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_len(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 583, __pyx_L1_error)
(__pyx_v_exp->shape[0]) = __pyx_t_2;
584:
+585: assign_buffer_obj(view, None)
assign_buffer_obj(__pyx_v_view, Py_None);
+586: view.obj = exp
__Pyx_INCREF((PyObject *)__pyx_v_exp); __Pyx_GIVEREF((PyObject *)__pyx_v_exp); __Pyx_GOTREF(__pyx_v_view->obj); __Pyx_DECREF(__pyx_v_view->obj); __pyx_v_view->obj = ((PyObject *)__pyx_v_exp);
+587: view.buf = self.ptr
__pyx_t_3 = __pyx_v_self->ptr; __pyx_v_view->buf = __pyx_t_3;
+588: view.len = self.size
__pyx_t_2 = __pyx_v_self->size; __pyx_v_view->len = __pyx_t_2;
+589: view.ndim = 1
__pyx_v_view->ndim = 1;
590:
+591: if flags & PyBUF_FORMAT:
__pyx_t_4 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L3;
}
+592: fmt = self.dtype.layout
__pyx_t_1 = __pyx_v_self->dtype->layout;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_fmt = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+593: if fmt is not None:
__pyx_t_4 = (__pyx_v_fmt != ((PyObject*)Py_None));
if (__pyx_t_4) {
/* … */
goto __pyx_L4;
}
+594: view.itemsize = self.dtype.dsize
__pyx_t_2 = __pyx_v_self->dtype->dsize;
__pyx_v_view->itemsize = __pyx_t_2;
+595: view.format = PyBytes_AS_STRING(fmt)
__pyx_v_view->format = PyBytes_AS_STRING(__pyx_v_fmt);
596: else:
+597: view.itemsize = 1
/*else*/ {
__pyx_v_view->itemsize = 1;
+598: view.format = 'B'
__pyx_v_view->format = ((char *)"B");
}
__pyx_L4:;
599: else:
+600: view.itemsize = 1
/*else*/ {
__pyx_v_view->itemsize = 1;
+601: view.format = NULL
__pyx_v_view->format = NULL; } __pyx_L3:;
602:
+603: if flags & PyBUF_ND:
__pyx_t_4 = ((__pyx_v_flags & PyBUF_ND) != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L5;
}
+604: view.suboffsets = NULL
__pyx_v_view->suboffsets = NULL;
+605: view.strides = &view.itemsize
__pyx_v_view->strides = (&__pyx_v_view->itemsize);
+606: view.shape = exp.shape
__pyx_t_5 = __pyx_v_exp->shape;
__pyx_v_view->shape = __pyx_t_5;
607: else:
+608: view.shape = NULL
/*else*/ {
__pyx_v_view->shape = NULL;
}
__pyx_L5:;
609:
610:
+611: def __releasebuffer__(self, Py_buffer *view):
/* Python wrapper */
CYTHON_UNUSED static void __pyx_pw_5arrex_4list_9typedlist_53__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view); /*proto*/
CYTHON_UNUSED static void __pyx_pw_5arrex_4list_9typedlist_53__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_5arrex_4list_9typedlist_52__releasebuffer__(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), ((Py_buffer *)__pyx_v_view));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_5arrex_4list_9typedlist_52__releasebuffer__(CYTHON_UNUSED struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, Py_buffer *__pyx_v_view) {
struct __pyx_obj_5arrex_4list_arrayexposer *__pyx_v_exp = 0;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_WriteUnraisable("arrex.list.typedlist.__releasebuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_exp);
__Pyx_RefNannyFinishContext();
}
+612: cdef arrayexposer exp = view.obj
__pyx_t_1 = __pyx_v_view->obj; __Pyx_INCREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_5arrex_4list_arrayexposer))))) __PYX_ERR(0, 612, __pyx_L1_error) __pyx_v_exp = ((struct __pyx_obj_5arrex_4list_arrayexposer *)__pyx_t_1); __pyx_t_1 = 0;
+613: print('** release buffer', sys.getrefcount(exp.owner))
__pyx_t_2 = NULL; __Pyx_INCREF(__pyx_builtin_print); __pyx_t_3 = __pyx_builtin_print; __pyx_t_5 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_getrefcount); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_exp->owner}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_8 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_release_buffer, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+614: exp.owner = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_exp->owner); __Pyx_DECREF(__pyx_v_exp->owner); __pyx_v_exp->owner = Py_None;
+615: view.obj = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_view->obj); __Pyx_DECREF(__pyx_v_view->obj); __pyx_v_view->obj = Py_None;
616:
+617: def reverse(self):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_55reverse(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_54reverse, " reverse()\n\t\t\n\t\t\treverse the order of elementd contained \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_55reverse = {"reverse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_55reverse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_54reverse}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_55reverse(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("reverse (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("reverse", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("reverse", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_5arrex_4list_9typedlist_54reverse(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_54reverse(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self) { char *__pyx_v_temp; char *__pyx_v_first; char *__pyx_v_last; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_55reverse, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_reverse, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_reverse, __pyx_t_5) < 0) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
618: ''' reverse()
619:
620: reverse the order of elementd contained
621: '''
622: cdef char *temp
623: cdef char *first
624: cdef char *last
625: cdef size_t i
626:
+627: temp = <char*> PyMem_Malloc(self.dtype.dsize)
__pyx_v_temp = ((char *)PyMem_Malloc(__pyx_v_self->dtype->dsize));
+628: first = self.ptr
__pyx_t_1 = __pyx_v_self->ptr; __pyx_v_first = __pyx_t_1;
+629: last = self.ptr + self.size - self.dtype.dsize
__pyx_v_last = ((__pyx_v_self->ptr + __pyx_v_self->size) - __pyx_v_self->dtype->dsize);
+630: while <size_t>first < <size_t>last:
while (1) {
__pyx_t_2 = (((size_t)__pyx_v_first) < ((size_t)__pyx_v_last));
if (!__pyx_t_2) break;
+631: memcpy(temp, first, self.dtype.dsize)
(void)(memcpy(__pyx_v_temp, __pyx_v_first, __pyx_v_self->dtype->dsize));
+632: memcpy(first, last, self.dtype.dsize)
(void)(memcpy(__pyx_v_first, __pyx_v_last, __pyx_v_self->dtype->dsize));
+633: memcpy(last, temp, self.dtype.dsize)
(void)(memcpy(__pyx_v_last, __pyx_v_temp, __pyx_v_self->dtype->dsize));
+634: first += self.dtype.dsize
__pyx_v_first = (__pyx_v_first + __pyx_v_self->dtype->dsize);
+635: last -= self.dtype.dsize
__pyx_v_last = (__pyx_v_last - __pyx_v_self->dtype->dsize); }
+636: PyMem_Free(temp)
PyMem_Free(__pyx_v_temp);
637:
+638: def index(self, value):
/* Python wrapper */ static PyObject *__pyx_pw_5arrex_4list_9typedlist_57index(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_5arrex_4list_9typedlist_56index, " index(value)\n\t\t\n\t\t\treturn the index of the first element binarily equal to the given one \n\t\t"); static PyMethodDef __pyx_mdef_5arrex_4list_9typedlist_57index = {"index", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5arrex_4list_9typedlist_57index, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5arrex_4list_9typedlist_56index}; static PyObject *__pyx_pw_5arrex_4list_9typedlist_57index(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_value = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("index (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 638, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 638, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "index", 0) < 0) __PYX_ERR(0, 638, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, i); __PYX_ERR(0, 638, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 638, __pyx_L3_error) } __pyx_v_value = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("index", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 638, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("arrex.list.typedlist.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5arrex_4list_9typedlist_56index(((struct __pyx_obj_5arrex_4list_typedlist *)__pyx_v_self), __pyx_v_value); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_5arrex_4list_9typedlist_56index(struct __pyx_obj_5arrex_4list_typedlist *__pyx_v_self, PyObject *__pyx_v_value) { size_t __pyx_v_i; size_t __pyx_v_j; char *__pyx_v_data; char *__pyx_v_val; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("arrex.list.typedlist.index", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_5arrex_4list_9typedlist_57index, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_typedlist_index, NULL, __pyx_mstate_global->__pyx_n_u_arrex_list, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_5arrex_4list_typedlist, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_5) < 0) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
639: ''' index(value)
640:
641: return the index of the first element binarily equal to the given one
642: '''
643: cdef size_t i, j
644: cdef char *data
645: cdef char *val
646:
+647: data = <char*> self.ptr
__pyx_v_data = ((char *)__pyx_v_self->ptr);
+648: val = <char*> PyMem_Malloc(self.dtype.dsize)
__pyx_v_val = ((char *)PyMem_Malloc(__pyx_v_self->dtype->dsize));
+649: self._setitem(val, value)
__pyx_t_1 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->__pyx_vtab)->_setitem(__pyx_v_self, __pyx_v_val, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 649, __pyx_L1_error)
650:
+651: i = 0
__pyx_v_i = 0;
+652: while i < self.size:
while (1) {
__pyx_t_2 = (__pyx_v_i < __pyx_v_self->size);
if (!__pyx_t_2) break;
+653: j = 0
__pyx_v_j = 0;
+654: while data[i+j] == val[j] and j < self.dtype.dsize:
while (1) {
__pyx_t_3 = ((__pyx_v_data[(__pyx_v_i + __pyx_v_j)]) == (__pyx_v_val[__pyx_v_j]));
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_j < __pyx_v_self->dtype->dsize);
__pyx_t_2 = __pyx_t_3;
__pyx_L7_bool_binop_done:;
if (!__pyx_t_2) break;
+655: j += 1
__pyx_v_j = (__pyx_v_j + 1);
}
+656: if j == self.dtype.dsize:
__pyx_t_2 = (__pyx_v_j == __pyx_v_self->dtype->dsize);
if (__pyx_t_2) {
/* … */
}
+657: PyMem_Free(val)
PyMem_Free(__pyx_v_val);
+658: return i//self.dtype.dsize
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyLong_FromSize_t((__pyx_v_i / __pyx_v_self->dtype->dsize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+659: i += self.dtype.dsize
__pyx_v_i = (__pyx_v_i + __pyx_v_self->dtype->dsize); }
660:
+661: PyMem_Free(val)
PyMem_Free(__pyx_v_val);
+662: raise IndexError('value not found')
__pyx_t_5 = NULL; __Pyx_INCREF(__pyx_builtin_IndexError); __pyx_t_6 = __pyx_builtin_IndexError; __pyx_t_7 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_value_not_found}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(0, 662, __pyx_L1_error)
663:
664:
665:
+666: cdef class arrayexposer:
struct __pyx_obj_5arrex_4list_arrayexposer {
PyObject_HEAD
PyObject *owner;
Py_ssize_t shape[1];
};
667: ''' very simple object that just holds the data for the buffer objects '''
+668: cdef readonly object owner
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_12arrayexposer_5owner_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_12arrayexposer_5owner_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_12arrayexposer_5owner___get__(((struct __pyx_obj_5arrex_4list_arrayexposer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_12arrayexposer_5owner___get__(struct __pyx_obj_5arrex_4list_arrayexposer *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->owner);
__pyx_r = __pyx_v_self->owner;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
669: cdef Py_ssize_t shape[1]
670:
671:
672:
+673: cdef class arrayiter:
struct __pyx_obj_5arrex_4list_arrayiter {
PyObject_HEAD
struct __pyx_obj_5arrex_4list_typedlist *array;
size_t position;
};
674: cdef typedlist array
675: cdef size_t position
676:
+677: def __init__(self):
/* Python wrapper */
static int __pyx_pw_5arrex_4list_9arrayiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5arrex_4list_9arrayiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_5arrex_4list_9arrayiter___init__(((struct __pyx_obj_5arrex_4list_arrayiter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_5arrex_4list_9arrayiter___init__(CYTHON_UNUSED struct __pyx_obj_5arrex_4list_arrayiter *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("arrex.list.arrayiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+678: raise TypeError('arrayiter must not be instanciated explicitely')
__pyx_t_2 = NULL; __Pyx_INCREF(__pyx_builtin_TypeError); __pyx_t_3 = __pyx_builtin_TypeError; __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_arrayiter_must_not_be_instanciat}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 678, __pyx_L1_error)
679:
+680: def __iter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9arrayiter_3__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9arrayiter_3__iter__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9arrayiter_2__iter__(((struct __pyx_obj_5arrex_4list_arrayiter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9arrayiter_2__iter__(struct __pyx_obj_5arrex_4list_arrayiter *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+681: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
682:
+683: def __next__(self):
/* Python wrapper */
static PyObject *__pyx_pw_5arrex_4list_9arrayiter_5__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5arrex_4list_9arrayiter_5__next__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_5arrex_4list_9arrayiter_4__next__(((struct __pyx_obj_5arrex_4list_arrayiter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_5arrex_4list_9arrayiter_4__next__(struct __pyx_obj_5arrex_4list_arrayiter *__pyx_v_self) {
PyObject *__pyx_v_item = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
if (!__pyx_error_without_exception) {
__Pyx_AddTraceback("arrex.list.arrayiter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_item);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+684: if self.position + self.array.dtype.dsize > self.array.size:
__pyx_t_1 = ((__pyx_v_self->position + __pyx_v_self->array->dtype->dsize) > __pyx_v_self->array->size);
if (unlikely(__pyx_t_1)) {
/* … */
}
+685: raise StopIteration
__pyx_error_without_exception = 1;
goto __pyx_L1_error;;
+686: item = self.array._getitem(self.array.ptr + self.position)
__pyx_t_2 = ((struct __pyx_vtabstruct_5arrex_4list_typedlist *)__pyx_v_self->array->__pyx_vtab)->_getitem(__pyx_v_self->array, (__pyx_v_self->array->ptr + __pyx_v_self->position)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_item = __pyx_t_2; __pyx_t_2 = 0;
+687: self.position += self.array.dtype.dsize
__pyx_v_self->position = (__pyx_v_self->position + __pyx_v_self->array->dtype->dsize);
+688: return item
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_item); __pyx_r = __pyx_v_item; goto __pyx_L0;
689:
690:
691:
692:
693: '''
694: # this is in reserve for debug purpose
695: # helps to keep track of buffers
696:
697: cdef size_t buffer_id = 0
698: cdef size_t buffer_count = 0
699:
700: cdef class buffer:
701: cdef void* ptr
702: cdef readonly size_t size
703: cdef size_t id
704:
705: def __cinit__(self, size_t size):
706: global buffer_id, buffer_count
707: self.id = buffer_id
708: buffer_id += 1
709: buffer_count += 1
710: print('allocate', self.id, size)
711:
712: self.ptr = PyMem_Malloc(size)
713: self.size = size
714:
715: def __dealloc__(self):
716: global buffer_id, buffer_count
717: buffer_count -= 1
718: PyMem_Free(self.ptr)
719: self.ptr = NULL
720: print('deallocate', self.id, buffer_count)
721:
722: def __len__(self):
723: return self.size
724: '''