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: '''