Lines Matching refs:self

128 array_resize(arrayobject *self, Py_ssize_t newsize)
133 if (self->ob_exports > 0 && newsize != Py_SIZE(self)) {
144 if (self->allocated >= newsize &&
145 Py_SIZE(self) < newsize + 16 &&
146 self->ob_item != NULL) {
147 Py_SET_SIZE(self, newsize);
152 PyMem_Free(self->ob_item);
153 self->ob_item = NULL;
154 Py_SET_SIZE(self, 0);
155 self->allocated = 0;
171 _new_size = (newsize >> 4) + (Py_SIZE(self) < 8 ? 3 : 7) + newsize;
172 items = self->ob_item;
175 if (_new_size <= ((~(size_t)0) / self->ob_descr->itemsize))
176 PyMem_RESIZE(items, char, (_new_size * self->ob_descr->itemsize));
183 self->ob_item = items;
184 Py_SET_SIZE(self, newsize);
185 self->allocated = _new_size;
637 ins1(arrayobject *self, Py_ssize_t where, PyObject *v)
640 Py_ssize_t n = Py_SIZE(self);
645 if ((*self->ob_descr->setitem)(self, -1, v) < 0)
648 if (array_resize(self, n+1) == -1)
650 items = self->ob_item;
660 memmove(items + (where+1)*self->ob_descr->itemsize,
661 items + where*self->ob_descr->itemsize,
662 (n-where)*self->ob_descr->itemsize);
663 return (*self->ob_descr->setitem)(self, where, v);
852 array_array___copy___impl(arrayobject *self)
855 return array_slice(self, 0, Py_SIZE(self));
868 array_array___deepcopy__(arrayobject *self, PyObject *unused)
871 return array_array___copy___impl(self);
994 array_iter_extend(arrayobject *self, PyObject *bb)
1003 if (ins1(self, Py_SIZE(self), v) != 0) {
1017 array_do_extend(array_state *state, arrayobject *self, PyObject *bb)
1022 return array_iter_extend(self, bb);
1024 if (self->ob_descr != b->ob_descr) {
1029 if ((Py_SIZE(self) > PY_SSIZE_T_MAX - Py_SIZE(b)) ||
1030 ((Py_SIZE(self) + Py_SIZE(b)) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
1034 oldsize = Py_SIZE(self);
1035 /* Get the size of bb before resizing the array since bb could be self. */
1038 if (array_resize(self, size) == -1)
1041 memcpy(self->ob_item + oldsize * self->ob_descr->itemsize,
1050 array_inplace_concat(arrayobject *self, PyObject *bb)
1052 array_state *state = find_array_state_by_type(Py_TYPE(self));
1060 if (array_do_extend(state, self, bb) == -1)
1062 Py_INCREF(self);
1063 return (PyObject *)self;
1067 array_inplace_repeat(arrayobject *self, Py_ssize_t n)
1069 const Py_ssize_t array_size = Py_SIZE(self);
1074 if ((self->ob_descr->itemsize != 0) &&
1075 (array_size > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
1078 Py_ssize_t size = array_size * self->ob_descr->itemsize;
1082 if (array_resize(self, n * array_size) == -1)
1085 _PyBytes_Repeat(self->ob_item, n*size, self->ob_item, size);
1087 Py_INCREF(self);
1088 return (PyObject *)self;
1093 ins(arrayobject *self, Py_ssize_t where, PyObject *v)
1095 if (ins1(self, where, v) != 0)
1110 array_array_count(arrayobject *self, PyObject *v)
1116 for (i = 0; i < Py_SIZE(self); i++) {
1120 selfi = getarrayitem((PyObject *)self, i);
1148 array_array_index_impl(arrayobject *self, PyObject *v, Py_ssize_t start,
1153 start += Py_SIZE(self);
1159 stop += Py_SIZE(self);
1163 for (Py_ssize_t i = start; i < stop && i < Py_SIZE(self); i++) {
1167 selfi = getarrayitem((PyObject *)self, i);
1183 array_contains(arrayobject *self, PyObject *v)
1188 for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(self); i++) {
1189 PyObject *selfi = getarrayitem((PyObject *)self, i);
1208 array_array_remove(arrayobject *self, PyObject *v)
1213 for (i = 0; i < Py_SIZE(self); i++) {
1217 selfi = getarrayitem((PyObject *)self,i);
1223 if (array_del_slice(self, i, i+1) != 0)
1246 array_array_pop_impl(arrayobject *self, Py_ssize_t i)
1251 if (Py_SIZE(self) == 0) {
1257 i += Py_SIZE(self);
1258 if (i < 0 || i >= Py_SIZE(self)) {
1262 v = getarrayitem((PyObject *)self, i);
1265 if (array_del_slice(self, i, i+1) != 0) {
1283 array_array_extend_impl(arrayobject *self, PyTypeObject *cls, PyObject *bb)
1288 if (array_do_extend(state, self, bb) == -1)
1304 array_array_insert_impl(arrayobject *self, Py_ssize_t i, PyObject *v)
1307 return ins(self, i, v);
1320 array_array_buffer_info_impl(arrayobject *self)
1329 v = PyLong_FromVoidPtr(self->ob_item);
1336 v = PyLong_FromSsize_t(Py_SIZE(self));
1356 array_array_append(arrayobject *self, PyObject *v)
1359 return ins(self, Py_SIZE(self), v);
1372 array_array_byteswap_impl(arrayobject *self)
1378 switch (self->ob_descr->itemsize) {
1382 for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 2) {
1389 for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 4) {
1399 for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 8) {
1429 array_array_reverse_impl(arrayobject *self)
1432 Py_ssize_t itemsize = self->ob_descr->itemsize;
1438 if (Py_SIZE(self) > 1) {
1439 for (p = self->ob_item,
1440 q = self->ob_item + (Py_SIZE(self) - 1)*itemsize;
1467 array_array_fromfile_impl(arrayobject *self, PyTypeObject *cls, PyObject *f,
1472 Py_ssize_t itemsize = self->ob_descr->itemsize;
1504 res = array_array_frombytes(self, b);
1530 array_array_tofile_impl(arrayobject *self, PyTypeObject *cls, PyObject *f)
1533 Py_ssize_t nbytes = Py_SIZE(self) * self->ob_descr->itemsize;
1540 if (Py_SIZE(self) == 0)
1548 char* ptr = self->ob_item + i*BLOCKSIZE;
1578 array_array_fromlist(arrayobject *self, PyObject *list)
1590 old_size = Py_SIZE(self);
1591 if (array_resize(self, old_size + n) == -1)
1595 if ((*self->ob_descr->setitem)(self,
1596 Py_SIZE(self) - n + i, v) != 0) {
1597 array_resize(self, old_size);
1603 array_resize(self, old_size);
1618 array_array_tolist_impl(arrayobject *self)
1621 PyObject *list = PyList_New(Py_SIZE(self));
1626 for (i = 0; i < Py_SIZE(self); i++) {
1627 PyObject *v = getarrayitem((PyObject *)self, i);
1640 frombytes(arrayobject *self, Py_buffer *buffer)
1642 int itemsize = self->ob_descr->itemsize;
1658 Py_ssize_t old_size = Py_SIZE(self);
1664 if (array_resize(self, old_size + n) == -1) {
1668 memcpy(self->ob_item + old_size * itemsize,
1685 array_array_frombytes_impl(arrayobject *self, Py_buffer *buffer)
1688 return frombytes(self, buffer);
1698 array_array_tobytes_impl(arrayobject *self)
1701 if (Py_SIZE(self) <= PY_SSIZE_T_MAX / self->ob_descr->itemsize) {
1702 return PyBytes_FromStringAndSize(self->ob_item,
1703 Py_SIZE(self) * self->ob_descr->itemsize);
1723 array_array_fromunicode_impl(arrayobject *self, PyObject *ustr)
1726 if (self->ob_descr->typecode != 'u') {
1737 Py_ssize_t old_size = Py_SIZE(self);
1738 if (array_resize(self, old_size + ustr_length) == -1) {
1744 ustr, ((wchar_t *)self->ob_item) + old_size, ustr_length);
1761 array_array_tounicode_impl(arrayobject *self)
1764 if (self->ob_descr->typecode != 'u') {
1769 return PyUnicode_FromWideChar((wchar_t *) self->ob_item, Py_SIZE(self));
1779 array_array___sizeof___impl(arrayobject *self)
1783 res = _PyObject_SIZE(Py_TYPE(self)) + self->allocated * self->ob_descr->itemsize;
2186 array_array___reduce_ex___impl(arrayobject *self, PyTypeObject *cls,
2193 int typecode = self->ob_descr->typecode;
2222 if (_PyObject_LookupAttr((PyObject *)self, state->str___dict__, &dict) < 0) {
2244 list = array_array_tolist_impl(self);
2250 "O(CO)O", Py_TYPE(self), typecode, list, dict);
2256 array_str = array_array_tobytes_impl(self);
2262 "O(OCiN)O", array_reconstructor, Py_TYPE(self), typecode,
2343 array_subscr(arrayobject* self, PyObject* item)
2345 array_state *state = find_array_state_by_type(Py_TYPE(self));
2353 i += Py_SIZE(self);
2354 return array_item(self, i);
2361 int itemsize = self->ob_descr->itemsize;
2366 slicelength = PySlice_AdjustIndices(Py_SIZE(self), &start, &stop,
2370 return newarrayobject(state->ArrayType, 0, self->ob_descr);
2374 slicelength, self->ob_descr);
2378 self->ob_item + start * itemsize,
2383 result = newarrayobject(state->ArrayType, slicelength, self->ob_descr);
2391 self->ob_item + cur*itemsize,
2406 array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value)
2409 array_state* state = find_array_state_by_type(Py_TYPE(self));
2419 i += Py_SIZE(self);
2420 if (i < 0 || i >= Py_SIZE(self)) {
2433 return (*self->ob_descr->setitem)(self, i, value);
2439 slicelength = PySlice_AdjustIndices(Py_SIZE(self), &start, &stop,
2454 if (self == other) {
2455 /* Special case "self[i:j] = self" -- copy self first */
2460 ret = array_ass_subscr(self, item, value);
2464 if (other->ob_descr != self->ob_descr) {
2475 itemsize = self->ob_descr->itemsize;
2484 if ((needed == 0 || slicelength != needed) && self->ob_exports > 0) {
2492 memmove(self->ob_item + (start + needed) * itemsize,
2493 self->ob_item + stop * itemsize,
2494 (Py_SIZE(self) - stop) * itemsize);
2495 if (array_resize(self, Py_SIZE(self) +
2500 if (array_resize(self, Py_SIZE(self) +
2503 memmove(self->ob_item + (start + needed) * itemsize,
2504 self->ob_item + stop * itemsize,
2505 (Py_SIZE(self) - start - needed) * itemsize);
2508 memcpy(self->ob_item + start * itemsize,
2526 if (cur + step >= (size_t)Py_SIZE(self))
2527 lim = Py_SIZE(self) - cur - 1;
2528 memmove(self->ob_item + (cur - i) * itemsize,
2529 self->ob_item + (cur + 1) * itemsize,
2533 if (cur < (size_t)Py_SIZE(self)) {
2534 memmove(self->ob_item + (cur-slicelength) * itemsize,
2535 self->ob_item + cur * itemsize,
2536 (Py_SIZE(self) - cur) * itemsize);
2538 if (array_resize(self, Py_SIZE(self) - slicelength) < 0)
2555 memcpy(self->ob_item + cur * itemsize,
2567 array_buffer_getbuf(arrayobject *self, Py_buffer *view, int flags)
2575 view->buf = (void *)self->ob_item;
2576 view->obj = (PyObject*)self;
2577 Py_INCREF(self);
2580 view->len = Py_SIZE(self) * self->ob_descr->itemsize;
2583 view->itemsize = self->ob_descr->itemsize;
2587 view->shape = &((PyVarObject*)self)->ob_size;
2595 view->format = (char *)self->ob_descr->formats;
2597 if (self->ob_descr->typecode == 'u') {
2603 self->ob_exports++;
2608 array_buffer_relbuf(arrayobject *self, Py_buffer *view)
2610 self->ob_exports--;
2720 arrayobject *self = (arrayobject *)a;
2721 // self->ob_item may be NULL but it is safe.
2722 PyMem_Free(self->ob_item);
2723 self->ob_item = (char *)ustr;
2724 Py_SET_SIZE(self, n);
2725 self->allocated = n;
2729 arrayobject *self = (arrayobject *)a;
2731 memcpy(self->ob_item, other->ob_item, len * other->ob_descr->itemsize);
2951 array_arrayiterator___reduce___impl(arrayiterobject *self, PyTypeObject *cls)
2958 if (self->ao == NULL) {
2961 return Py_BuildValue("N(O)n", func, self->ao, self->index);
2974 array_arrayiterator___setstate__(arrayiterobject *self, PyObject *state)
2982 else if (index > Py_SIZE(self->ao))
2983 index = Py_SIZE(self->ao); /* iterator exhausted */
2984 self->index = index;