Lines Matching refs:self
49 static int _io_StringIO___init__(PyObject *self, PyObject *args, PyObject *kwargs);
51 #define CHECK_INITIALIZED(self) \
52 if (self->ok <= 0) { \
58 #define CHECK_CLOSED(self) \
59 if (self->closed) { \
65 #define ENSURE_REALIZED(self) \
66 if (realize(self) < 0) { \
75 resize_buffer(stringio *self, size_t size)
79 size_t alloc = self->buf_size;
82 assert(self->buf != NULL);
110 new_buf = (Py_UCS4 *)PyMem_Realloc(self->buf, alloc * sizeof(Py_UCS4));
115 self->buf_size = alloc;
116 self->buf = new_buf;
127 make_intermediate(stringio *self)
129 PyObject *intermediate = _PyAccu_Finish(&self->accu);
130 self->state = STATE_REALIZED;
133 if (_PyAccu_Init(&self->accu) ||
134 _PyAccu_Accumulate(&self->accu, intermediate)) {
138 self->state = STATE_ACCUMULATING;
143 realize(stringio *self)
148 if (self->state == STATE_REALIZED)
150 assert(self->state == STATE_ACCUMULATING);
151 self->state = STATE_REALIZED;
153 intermediate = _PyAccu_Finish(&self->accu);
161 if (resize_buffer(self, len) < 0) {
165 if (!PyUnicode_AsUCS4(intermediate, self->buf, len, 0)) {
177 write_str(stringio *self, PyObject *obj)
182 assert(self->buf != NULL);
183 assert(self->pos >= 0);
185 if (self->decoder != NULL) {
187 self->decoder, obj, 1 /* always final */);
193 if (self->writenl) {
195 decoded, &_Py_STR(newline), self->writenl, -1);
213 if (self->pos > PY_SSIZE_T_MAX - len) {
219 if (self->state == STATE_ACCUMULATING) {
220 if (self->string_size == self->pos) {
221 if (_PyAccu_Accumulate(&self->accu, decoded))
225 if (realize(self))
229 if (self->pos + len > self->string_size) {
230 if (resize_buffer(self, self->pos + len) < 0)
234 if (self->pos > self->string_size) {
244 memset(self->buf + self->string_size, '\0',
245 (self->pos - self->string_size) * sizeof(Py_UCS4));
249 existing data if self->pos < self->string_size. */
251 self->buf + self->pos,
252 self->buf_size - self->pos,
258 self->pos += len;
259 if (self->string_size < self->pos)
260 self->string_size = self->pos;
277 _io_StringIO_getvalue_impl(stringio *self)
280 CHECK_INITIALIZED(self);
281 CHECK_CLOSED(self);
282 if (self->state == STATE_ACCUMULATING)
283 return make_intermediate(self);
284 return PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, self->buf,
285 self->string_size);
295 _io_StringIO_tell_impl(stringio *self)
298 CHECK_INITIALIZED(self);
299 CHECK_CLOSED(self);
300 return PyLong_FromSsize_t(self->pos);
315 _io_StringIO_read_impl(stringio *self, Py_ssize_t size)
321 CHECK_INITIALIZED(self);
322 CHECK_CLOSED(self);
325 n = self->string_size - self->pos;
333 if (self->state == STATE_ACCUMULATING && self->pos == 0 && size == n) {
334 PyObject *result = make_intermediate(self);
335 self->pos = self->string_size;
339 ENSURE_REALIZED(self);
340 output = self->buf + self->pos;
341 self->pos += size;
347 _stringio_readline(stringio *self, Py_ssize_t limit)
353 if (self->pos >= self->string_size)
356 start = self->buf + self->pos;
357 if (limit < 0 || limit > self->string_size - self->pos)
358 limit = self->string_size - self->pos;
364 self->readtranslate, self->readuniversal, self->readnl,
371 self->pos += len;
386 _io_StringIO_readline_impl(stringio *self, Py_ssize_t size)
389 CHECK_INITIALIZED(self);
390 CHECK_CLOSED(self);
391 ENSURE_REALIZED(self);
393 return _stringio_readline(self, size);
397 stringio_iternext(stringio *self)
401 CHECK_INITIALIZED(self);
402 CHECK_CLOSED(self);
403 ENSURE_REALIZED(self);
405 if (Py_IS_TYPE(self, &PyStringIO_Type)) {
407 line = _stringio_readline(self, -1);
411 line = PyObject_CallMethodNoArgs((PyObject *)self,
436 pos as size: Py_ssize_t(accept={int, NoneType}, c_default="self->pos") = None
447 _io_StringIO_truncate_impl(stringio *self, Py_ssize_t size)
450 CHECK_INITIALIZED(self);
451 CHECK_CLOSED(self);
459 if (size < self->string_size) {
460 ENSURE_REALIZED(self);
461 if (resize_buffer(self, size) < 0)
463 self->string_size = size;
485 _io_StringIO_seek_impl(stringio *self, Py_ssize_t pos, int whence)
488 CHECK_INITIALIZED(self);
489 CHECK_CLOSED(self);
511 pos = self->pos;
514 pos = self->string_size;
517 self->pos = pos;
519 return PyLong_FromSsize_t(self->pos);
534 _io_StringIO_write(stringio *self, PyObject *obj)
539 CHECK_INITIALIZED(self);
547 CHECK_CLOSED(self);
550 if (size > 0 && write_str(self, obj) < 0)
568 _io_StringIO_close_impl(stringio *self)
571 self->closed = 1;
573 if (resize_buffer(self, 0) < 0)
575 _PyAccu_Destroy(&self->accu);
576 Py_CLEAR(self->readnl);
577 Py_CLEAR(self->writenl);
578 Py_CLEAR(self->decoder);
583 stringio_traverse(stringio *self, visitproc visit, void *arg)
585 Py_VISIT(self->dict);
590 stringio_clear(stringio *self)
592 Py_CLEAR(self->dict);
597 stringio_dealloc(stringio *self)
599 _PyObject_GC_UNTRACK(self);
600 self->ok = 0;
601 if (self->buf) {
602 PyMem_Free(self->buf);
603 self->buf = NULL;
605 _PyAccu_Destroy(&self->accu);
606 Py_CLEAR(self->readnl);
607 Py_CLEAR(self->writenl);
608 Py_CLEAR(self->decoder);
609 Py_CLEAR(self->dict);
610 if (self->weakreflist != NULL)
611 PyObject_ClearWeakRefs((PyObject *) self);
612 Py_TYPE(self)->tp_free(self);
618 stringio *self;
621 self = (stringio *)type->tp_alloc(type, 0);
622 if (self == NULL)
628 self->buf = (Py_UCS4 *)PyMem_Malloc(0);
629 if (self->buf == NULL) {
630 Py_DECREF(self);
634 return (PyObject *)self;
649 _io_StringIO___init___impl(stringio *self, PyObject *value,
688 self->ok = 0;
690 _PyAccu_Destroy(&self->accu);
691 Py_CLEAR(self->readnl);
692 Py_CLEAR(self->writenl);
693 Py_CLEAR(self->decoder);
699 self->readnl = PyUnicode_FromString(newline);
700 if (self->readnl == NULL)
703 self->readuniversal = (newline == NULL || newline[0] == '\0');
704 self->readtranslate = (newline == NULL);
712 self->writenl = self->readnl;
713 Py_INCREF(self->writenl);
716 if (self->readuniversal) {
717 self->decoder = PyObject_CallFunctionObjArgs(
719 Py_None, self->readtranslate ? Py_True : Py_False, NULL);
720 if (self->decoder == NULL)
726 self->string_size = 0;
734 if (resize_buffer(self, 0) < 0)
736 self->state = STATE_REALIZED;
737 self->pos = 0;
738 if (write_str(self, value) < 0)
743 if (resize_buffer(self, 0) < 0)
745 if (_PyAccu_Init(&self->accu))
747 self->state = STATE_ACCUMULATING;
749 self->pos = 0;
751 self->closed = 0;
752 self->ok = 1;
765 _io_StringIO_readable_impl(stringio *self)
768 CHECK_INITIALIZED(self);
769 CHECK_CLOSED(self);
780 _io_StringIO_writable_impl(stringio *self)
783 CHECK_INITIALIZED(self);
784 CHECK_CLOSED(self);
795 _io_StringIO_seekable_impl(stringio *self)
798 CHECK_INITIALIZED(self);
799 CHECK_CLOSED(self);
816 stringio_getstate(stringio *self, PyObject *Py_UNUSED(ignored))
818 PyObject *initvalue = _io_StringIO_getvalue_impl(self);
824 if (self->dict == NULL) {
829 dict = PyDict_Copy(self->dict);
837 self->readnl ? self->readnl : Py_None,
838 self->pos, dict);
844 stringio_setstate(stringio *self, PyObject *state)
852 CHECK_CLOSED(self);
860 Py_TYPE(self)->tp_name, Py_TYPE(state)->tp_name);
868 if (_io_StringIO___init__((PyObject *)self, initarg, NULL) < 0) {
891 if (resize_buffer(self, bufsize) < 0) {
895 memcpy(self->buf, buf, bufsize * sizeof(Py_UCS4));
897 self->string_size = bufsize;
901 method instead of modifying self->pos directly to better protect the
918 self->pos = pos;
929 if (self->dict) {
932 if (PyDict_Update(self->dict, dict) < 0)
937 self->dict = dict;
946 stringio_closed(stringio *self, void *context)
948 CHECK_INITIALIZED(self);
949 return PyBool_FromLong(self->closed);
953 stringio_line_buffering(stringio *self, void *context)
955 CHECK_INITIALIZED(self);
956 CHECK_CLOSED(self);
961 stringio_newlines(stringio *self, void *context)
963 CHECK_INITIALIZED(self);
964 CHECK_CLOSED(self);
965 if (self->decoder == NULL)
967 return PyObject_GetAttr(self->decoder, &_Py_ID(newlines));