Commit 680bf1af authored by Benjamin Peterson's avatar Benjamin Peterson

move to a naming scheme with all lowercase and underscores

parent 2c3ac6b8
...@@ -94,7 +94,7 @@ PyDoc_STRVAR(module_doc, ...@@ -94,7 +94,7 @@ PyDoc_STRVAR(module_doc,
*/ */
static int static int
BlockingIOError_init(PyBlockingIOErrorObject *self, PyObject *args, blockingioerror_init(PyBlockingIOErrorObject *self, PyObject *args,
PyObject *kwds) PyObject *kwds)
{ {
PyObject *myerrno = NULL, *strerror = NULL; PyObject *myerrno = NULL, *strerror = NULL;
...@@ -123,7 +123,7 @@ BlockingIOError_init(PyBlockingIOErrorObject *self, PyObject *args, ...@@ -123,7 +123,7 @@ BlockingIOError_init(PyBlockingIOErrorObject *self, PyObject *args,
return 0; return 0;
} }
static PyMemberDef BlockingIOError_members[] = { static PyMemberDef blockingioerror_members[] = {
{"characters_written", T_PYSSIZET, offsetof(PyBlockingIOErrorObject, written), 0}, {"characters_written", T_PYSSIZET, offsetof(PyBlockingIOErrorObject, written), 0},
{NULL} /* Sentinel */ {NULL} /* Sentinel */
}; };
...@@ -158,14 +158,14 @@ static PyTypeObject _PyExc_BlockingIOError = { ...@@ -158,14 +158,14 @@ static PyTypeObject _PyExc_BlockingIOError = {
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
0, /* tp_methods */ 0, /* tp_methods */
BlockingIOError_members, /* tp_members */ blockingioerror_members, /* tp_members */
0, /* tp_getset */ 0, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)BlockingIOError_init, /* tp_init */ (initproc)blockingioerror_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };
......
...@@ -23,10 +23,10 @@ extern PyTypeObject PyIncrementalNewlineDecoder_Type; ...@@ -23,10 +23,10 @@ extern PyTypeObject PyIncrementalNewlineDecoder_Type;
* with args=NULL, and return a new reference. * with args=NULL, and return a new reference.
* BUT when args=Py_True is passed, they return a borrowed reference. * BUT when args=Py_True is passed, they return a borrowed reference.
*/ */
extern PyObject* _PyIOBase_checkReadable(PyObject *self, PyObject *args); extern PyObject* _PyIOBase_check_readable(PyObject *self, PyObject *args);
extern PyObject* _PyIOBase_checkWritable(PyObject *self, PyObject *args); extern PyObject* _PyIOBase_check_writable(PyObject *self, PyObject *args);
extern PyObject* _PyIOBase_checkSeekable(PyObject *self, PyObject *args); extern PyObject* _PyIOBase_check_seekable(PyObject *self, PyObject *args);
extern PyObject* _PyIOBase_checkClosed(PyObject *self, PyObject *args); extern PyObject* _PyIOBase_check_closed(PyObject *self, PyObject *args);
/* Helper for finalization. /* Helper for finalization.
This function will revive an object ready to be deallocated and try to This function will revive an object ready to be deallocated and try to
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
/* /*
* BufferedIOBase class, inherits from IOBase. * BufferedIOBase class, inherits from IOBase.
*/ */
PyDoc_STRVAR(BufferedIOBase_doc, PyDoc_STRVAR(bufferediobase_doc,
"Base class for buffered IO objects.\n" "Base class for buffered IO objects.\n"
"\n" "\n"
"The main difference with RawIOBase is that the read() method\n" "The main difference with RawIOBase is that the read() method\n"
...@@ -33,7 +33,7 @@ PyDoc_STRVAR(BufferedIOBase_doc, ...@@ -33,7 +33,7 @@ PyDoc_STRVAR(BufferedIOBase_doc,
); );
static PyObject * static PyObject *
BufferedIOBase_readinto(PyObject *self, PyObject *args) bufferediobase_readinto(PyObject *self, PyObject *args)
{ {
Py_buffer buf; Py_buffer buf;
Py_ssize_t len; Py_ssize_t len;
...@@ -67,25 +67,25 @@ BufferedIOBase_readinto(PyObject *self, PyObject *args) ...@@ -67,25 +67,25 @@ BufferedIOBase_readinto(PyObject *self, PyObject *args)
} }
static PyObject * static PyObject *
BufferedIOBase_unsupported(const char *message) bufferediobase_unsupported(const char *message)
{ {
PyErr_SetString(IO_STATE->unsupported_operation, message); PyErr_SetString(IO_STATE->unsupported_operation, message);
return NULL; return NULL;
} }
PyDoc_STRVAR(BufferedIOBase_detach_doc, PyDoc_STRVAR(bufferediobase_detach_doc,
"Disconnect this buffer from its underlying raw stream and return it.\n" "Disconnect this buffer from its underlying raw stream and return it.\n"
"\n" "\n"
"After the raw stream has been detached, the buffer is in an unusable\n" "After the raw stream has been detached, the buffer is in an unusable\n"
"state.\n"); "state.\n");
static PyObject * static PyObject *
BufferedIOBase_detach(PyObject *self) bufferediobase_detach(PyObject *self)
{ {
return BufferedIOBase_unsupported("detach"); return bufferediobase_unsupported("detach");
} }
PyDoc_STRVAR(BufferedIOBase_read_doc, PyDoc_STRVAR(bufferediobase_read_doc,
"Read and return up to n bytes.\n" "Read and return up to n bytes.\n"
"\n" "\n"
"If the argument is omitted, None, or negative, reads and\n" "If the argument is omitted, None, or negative, reads and\n"
...@@ -104,12 +104,12 @@ PyDoc_STRVAR(BufferedIOBase_read_doc, ...@@ -104,12 +104,12 @@ PyDoc_STRVAR(BufferedIOBase_read_doc,
"mode and no data is available at the moment.\n"); "mode and no data is available at the moment.\n");
static PyObject * static PyObject *
BufferedIOBase_read(PyObject *self, PyObject *args) bufferediobase_read(PyObject *self, PyObject *args)
{ {
return BufferedIOBase_unsupported("read"); return bufferediobase_unsupported("read");
} }
PyDoc_STRVAR(BufferedIOBase_read1_doc, PyDoc_STRVAR(bufferediobase_read1_doc,
"Read and return up to n bytes, with at most one read() call\n" "Read and return up to n bytes, with at most one read() call\n"
"to the underlying raw stream. A short result does not imply\n" "to the underlying raw stream. A short result does not imply\n"
"that EOF is imminent.\n" "that EOF is imminent.\n"
...@@ -117,12 +117,12 @@ PyDoc_STRVAR(BufferedIOBase_read1_doc, ...@@ -117,12 +117,12 @@ PyDoc_STRVAR(BufferedIOBase_read1_doc,
"Returns an empty bytes object on EOF.\n"); "Returns an empty bytes object on EOF.\n");
static PyObject * static PyObject *
BufferedIOBase_read1(PyObject *self, PyObject *args) bufferediobase_read1(PyObject *self, PyObject *args)
{ {
return BufferedIOBase_unsupported("read1"); return bufferediobase_unsupported("read1");
} }
PyDoc_STRVAR(BufferedIOBase_write_doc, PyDoc_STRVAR(bufferediobase_write_doc,
"Write the given buffer to the IO stream.\n" "Write the given buffer to the IO stream.\n"
"\n" "\n"
"Returns the number of bytes written, which is never less than\n" "Returns the number of bytes written, which is never less than\n"
...@@ -132,18 +132,18 @@ PyDoc_STRVAR(BufferedIOBase_write_doc, ...@@ -132,18 +132,18 @@ PyDoc_STRVAR(BufferedIOBase_write_doc,
"underlying raw stream cannot accept more data at the moment.\n"); "underlying raw stream cannot accept more data at the moment.\n");
static PyObject * static PyObject *
BufferedIOBase_write(PyObject *self, PyObject *args) bufferediobase_write(PyObject *self, PyObject *args)
{ {
return BufferedIOBase_unsupported("write"); return bufferediobase_unsupported("write");
} }
static PyMethodDef BufferedIOBase_methods[] = { static PyMethodDef bufferediobase_methods[] = {
{"detach", (PyCFunction)BufferedIOBase_detach, METH_NOARGS, BufferedIOBase_detach_doc}, {"detach", (PyCFunction)bufferediobase_detach, METH_NOARGS, bufferediobase_detach_doc},
{"read", BufferedIOBase_read, METH_VARARGS, BufferedIOBase_read_doc}, {"read", bufferediobase_read, METH_VARARGS, bufferediobase_read_doc},
{"read1", BufferedIOBase_read1, METH_VARARGS, BufferedIOBase_read1_doc}, {"read1", bufferediobase_read1, METH_VARARGS, bufferediobase_read1_doc},
{"readinto", BufferedIOBase_readinto, METH_VARARGS, NULL}, {"readinto", bufferediobase_readinto, METH_VARARGS, NULL},
{"write", BufferedIOBase_write, METH_VARARGS, BufferedIOBase_write_doc}, {"write", bufferediobase_write, METH_VARARGS, bufferediobase_write_doc},
{NULL, NULL} {NULL, NULL}
}; };
...@@ -168,14 +168,14 @@ PyTypeObject PyBufferedIOBase_Type = { ...@@ -168,14 +168,14 @@ PyTypeObject PyBufferedIOBase_Type = {
0, /*tp_setattro*/ 0, /*tp_setattro*/
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
BufferedIOBase_doc, /* tp_doc */ bufferediobase_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
0, /* tp_weaklistoffset */ 0, /* tp_weaklistoffset */
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
BufferedIOBase_methods, /* tp_methods */ bufferediobase_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ 0, /* tp_getset */
&PyIOBase_Type, /* tp_base */ &PyIOBase_Type, /* tp_base */
...@@ -231,7 +231,7 @@ typedef struct { ...@@ -231,7 +231,7 @@ typedef struct {
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} BufferedObject; } buffered;
/* /*
Implementation notes: Implementation notes:
...@@ -245,19 +245,18 @@ typedef struct { ...@@ -245,19 +245,18 @@ typedef struct {
* The absolute position of the raw stream is cached, if possible, in the * The absolute position of the raw stream is cached, if possible, in the
`abs_pos` member. It must be updated every time an operation is done `abs_pos` member. It must be updated every time an operation is done
on the raw stream. If not sure, it can be reinitialized by calling on the raw stream. If not sure, it can be reinitialized by calling
_Buffered_raw_tell(), which queries the raw stream (_Buffered_raw_seek() _buffered_raw_tell(), which queries the raw stream (_buffered_raw_seek()
also does it). To read it, use RAW_TELL(). also does it). To read it, use RAW_TELL().
* Three helpers, _BufferedReader_raw_read, _BufferedWriter_raw_write and * Three helpers, _bufferedreader_raw_read, _bufferedwriter_raw_write and
_BufferedWriter_flush_unlocked do a lot of useful housekeeping. _bufferedwriter_flush_unlocked do a lot of useful housekeeping.
NOTE: we should try to maintain block alignment of reads and writes to the NOTE: we should try to maintain block alignment of reads and writes to the
raw stream (according to the buffer size), but for now it is only done raw stream (according to the buffer size), but for now it is only done
in read() and friends. in read() and friends.
XXX: method naming is a bit messy.
*/ */
/* These macros protect the BufferedObject against concurrent operations. */ /* These macros protect the buffered object against concurrent operations. */
#ifdef WITH_THREAD #ifdef WITH_THREAD
#define ENTER_BUFFERED(self) \ #define ENTER_BUFFERED(self) \
...@@ -299,7 +298,7 @@ typedef struct { ...@@ -299,7 +298,7 @@ typedef struct {
#define IS_CLOSED(self) \ #define IS_CLOSED(self) \
(self->fast_closed_checks \ (self->fast_closed_checks \
? _PyFileIO_closed(self->raw) \ ? _PyFileIO_closed(self->raw) \
: BufferedIOMixin_closed(self)) : buffered_closed(self))
#define CHECK_CLOSED(self, error_msg) \ #define CHECK_CLOSED(self, error_msg) \
if (IS_CLOSED(self)) { \ if (IS_CLOSED(self)) { \
...@@ -330,7 +329,7 @@ typedef struct { ...@@ -330,7 +329,7 @@ typedef struct {
&& self->raw_pos >= 0) ? self->raw_pos - self->pos : 0) && self->raw_pos >= 0) ? self->raw_pos - self->pos : 0)
#define RAW_TELL(self) \ #define RAW_TELL(self) \
(self->abs_pos != -1 ? self->abs_pos : _Buffered_raw_tell(self)) (self->abs_pos != -1 ? self->abs_pos : _buffered_raw_tell(self))
#define MINUS_LAST_BLOCK(self, size) \ #define MINUS_LAST_BLOCK(self, size) \
(self->buffer_mask ? \ (self->buffer_mask ? \
...@@ -339,7 +338,7 @@ typedef struct { ...@@ -339,7 +338,7 @@ typedef struct {
static void static void
BufferedObject_dealloc(BufferedObject *self) buffered_dealloc(buffered *self)
{ {
if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0) if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
return; return;
...@@ -363,7 +362,7 @@ BufferedObject_dealloc(BufferedObject *self) ...@@ -363,7 +362,7 @@ BufferedObject_dealloc(BufferedObject *self)
} }
static int static int
Buffered_traverse(BufferedObject *self, visitproc visit, void *arg) buffered_traverse(buffered *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->raw); Py_VISIT(self->raw);
Py_VISIT(self->dict); Py_VISIT(self->dict);
...@@ -371,7 +370,7 @@ Buffered_traverse(BufferedObject *self, visitproc visit, void *arg) ...@@ -371,7 +370,7 @@ Buffered_traverse(BufferedObject *self, visitproc visit, void *arg)
} }
static int static int
Buffered_clear(BufferedObject *self) buffered_clear(buffered *self)
{ {
if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0) if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
return -1; return -1;
...@@ -390,14 +389,14 @@ Buffered_clear(BufferedObject *self) ...@@ -390,14 +389,14 @@ Buffered_clear(BufferedObject *self)
/* Flush and close */ /* Flush and close */
static PyObject * static PyObject *
BufferedIOMixin_flush(BufferedObject *self, PyObject *args) buffered_simple_flush(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_flush, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_flush, NULL);
} }
static int static int
BufferedIOMixin_closed(BufferedObject *self) buffered_closed(buffered *self)
{ {
int closed; int closed;
PyObject *res; PyObject *res;
...@@ -411,14 +410,14 @@ BufferedIOMixin_closed(BufferedObject *self) ...@@ -411,14 +410,14 @@ BufferedIOMixin_closed(BufferedObject *self)
} }
static PyObject * static PyObject *
BufferedIOMixin_closed_get(BufferedObject *self, void *context) buffered_closed_get(buffered *self, void *context)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_GetAttr(self->raw, _PyIO_str_closed); return PyObject_GetAttr(self->raw, _PyIO_str_closed);
} }
static PyObject * static PyObject *
BufferedIOMixin_close(BufferedObject *self, PyObject *args) buffered_close(buffered *self, PyObject *args)
{ {
PyObject *res = NULL; PyObject *res = NULL;
int r; int r;
...@@ -426,7 +425,7 @@ BufferedIOMixin_close(BufferedObject *self, PyObject *args) ...@@ -426,7 +425,7 @@ BufferedIOMixin_close(BufferedObject *self, PyObject *args)
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
r = BufferedIOMixin_closed(self); r = buffered_closed(self);
if (r < 0) if (r < 0)
goto end; goto end;
if (r > 0) { if (r > 0) {
...@@ -457,7 +456,7 @@ end: ...@@ -457,7 +456,7 @@ end:
/* detach */ /* detach */
static PyObject * static PyObject *
BufferedIOMixin_detach(BufferedObject *self, PyObject *args) buffered_detach(buffered *self, PyObject *args)
{ {
PyObject *raw, *res; PyObject *raw, *res;
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
...@@ -475,35 +474,35 @@ BufferedIOMixin_detach(BufferedObject *self, PyObject *args) ...@@ -475,35 +474,35 @@ BufferedIOMixin_detach(BufferedObject *self, PyObject *args)
/* Inquiries */ /* Inquiries */
static PyObject * static PyObject *
BufferedIOMixin_seekable(BufferedObject *self, PyObject *args) buffered_seekable(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_seekable, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_seekable, NULL);
} }
static PyObject * static PyObject *
BufferedIOMixin_readable(BufferedObject *self, PyObject *args) buffered_readable(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_readable, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_readable, NULL);
} }
static PyObject * static PyObject *
BufferedIOMixin_writable(BufferedObject *self, PyObject *args) buffered_writable(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_writable, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_writable, NULL);
} }
static PyObject * static PyObject *
BufferedIOMixin_name_get(BufferedObject *self, void *context) buffered_name_get(buffered *self, void *context)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_GetAttrString(self->raw, "name"); return PyObject_GetAttrString(self->raw, "name");
} }
static PyObject * static PyObject *
BufferedIOMixin_mode_get(BufferedObject *self, void *context) buffered_mode_get(buffered *self, void *context)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_GetAttrString(self->raw, "mode"); return PyObject_GetAttrString(self->raw, "mode");
...@@ -512,14 +511,14 @@ BufferedIOMixin_mode_get(BufferedObject *self, void *context) ...@@ -512,14 +511,14 @@ BufferedIOMixin_mode_get(BufferedObject *self, void *context)
/* Lower-level APIs */ /* Lower-level APIs */
static PyObject * static PyObject *
BufferedIOMixin_fileno(BufferedObject *self, PyObject *args) buffered_fileno(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_fileno, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_fileno, NULL);
} }
static PyObject * static PyObject *
BufferedIOMixin_isatty(BufferedObject *self, PyObject *args) buffered_isatty(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_isatty, NULL); return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_isatty, NULL);
...@@ -528,21 +527,21 @@ BufferedIOMixin_isatty(BufferedObject *self, PyObject *args) ...@@ -528,21 +527,21 @@ BufferedIOMixin_isatty(BufferedObject *self, PyObject *args)
/* Forward decls */ /* Forward decls */
static PyObject * static PyObject *
_BufferedWriter_flush_unlocked(BufferedObject *, int); _bufferedwriter_flush_unlocked(buffered *, int);
static Py_ssize_t static Py_ssize_t
_BufferedReader_fill_buffer(BufferedObject *self); _bufferedreader_fill_buffer(buffered *self);
static void static void
_BufferedReader_reset_buf(BufferedObject *self); _bufferedreader_reset_buf(buffered *self);
static void static void
_BufferedWriter_reset_buf(BufferedObject *self); _bufferedwriter_reset_buf(buffered *self);
static PyObject * static PyObject *
_BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t); _bufferedreader_peek_unlocked(buffered *self, Py_ssize_t);
static PyObject * static PyObject *
_BufferedReader_read_all(BufferedObject *self); _bufferedreader_read_all(buffered *self);
static PyObject * static PyObject *
_BufferedReader_read_fast(BufferedObject *self, Py_ssize_t); _bufferedreader_read_fast(buffered *self, Py_ssize_t);
static PyObject * static PyObject *
_BufferedReader_read_generic(BufferedObject *self, Py_ssize_t); _bufferedreader_read_generic(buffered *self, Py_ssize_t);
/* /*
...@@ -552,7 +551,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t); ...@@ -552,7 +551,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t);
/* Returns the address of the `written` member if a BlockingIOError was /* Returns the address of the `written` member if a BlockingIOError was
raised, NULL otherwise. The error is always re-raised. */ raised, NULL otherwise. The error is always re-raised. */
static Py_ssize_t * static Py_ssize_t *
_Buffered_check_blocking_error(void) _buffered_check_blocking_error(void)
{ {
PyObject *t, *v, *tb; PyObject *t, *v, *tb;
PyBlockingIOErrorObject *err; PyBlockingIOErrorObject *err;
...@@ -569,7 +568,7 @@ _Buffered_check_blocking_error(void) ...@@ -569,7 +568,7 @@ _Buffered_check_blocking_error(void)
} }
static Py_off_t static Py_off_t
_Buffered_raw_tell(BufferedObject *self) _buffered_raw_tell(buffered *self)
{ {
Py_off_t n; Py_off_t n;
PyObject *res; PyObject *res;
...@@ -589,7 +588,7 @@ _Buffered_raw_tell(BufferedObject *self) ...@@ -589,7 +588,7 @@ _Buffered_raw_tell(BufferedObject *self)
} }
static Py_off_t static Py_off_t
_Buffered_raw_seek(BufferedObject *self, Py_off_t target, int whence) _buffered_raw_seek(buffered *self, Py_off_t target, int whence)
{ {
PyObject *res, *posobj, *whenceobj; PyObject *res, *posobj, *whenceobj;
Py_off_t n; Py_off_t n;
...@@ -621,7 +620,7 @@ _Buffered_raw_seek(BufferedObject *self, Py_off_t target, int whence) ...@@ -621,7 +620,7 @@ _Buffered_raw_seek(BufferedObject *self, Py_off_t target, int whence)
} }
static int static int
_Buffered_init(BufferedObject *self) _buffered_init(buffered *self)
{ {
Py_ssize_t n; Py_ssize_t n;
if (self->buffer_size <= 0) { if (self->buffer_size <= 0) {
...@@ -651,7 +650,7 @@ _Buffered_init(BufferedObject *self) ...@@ -651,7 +650,7 @@ _Buffered_init(BufferedObject *self)
self->buffer_mask = self->buffer_size - 1; self->buffer_mask = self->buffer_size - 1;
else else
self->buffer_mask = 0; self->buffer_mask = 0;
if (_Buffered_raw_tell(self) == -1) if (_buffered_raw_tell(self) == -1)
PyErr_Clear(); PyErr_Clear();
return 0; return 0;
} }
...@@ -661,7 +660,7 @@ _Buffered_init(BufferedObject *self) ...@@ -661,7 +660,7 @@ _Buffered_init(BufferedObject *self)
*/ */
static PyObject * static PyObject *
Buffered_flush(BufferedObject *self, PyObject *args) buffered_flush(buffered *self, PyObject *args)
{ {
PyObject *res; PyObject *res;
...@@ -669,15 +668,15 @@ Buffered_flush(BufferedObject *self, PyObject *args) ...@@ -669,15 +668,15 @@ Buffered_flush(BufferedObject *self, PyObject *args)
CHECK_CLOSED(self, "flush of closed file") CHECK_CLOSED(self, "flush of closed file")
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
res = _BufferedWriter_flush_unlocked(self, 0); res = _bufferedwriter_flush_unlocked(self, 0);
if (res != NULL && self->readable) { if (res != NULL && self->readable) {
/* Rewind the raw stream so that its position corresponds to /* Rewind the raw stream so that its position corresponds to
the current logical position. */ the current logical position. */
Py_off_t n; Py_off_t n;
n = _Buffered_raw_seek(self, -RAW_OFFSET(self), 1); n = _buffered_raw_seek(self, -RAW_OFFSET(self), 1);
if (n == -1) if (n == -1)
Py_CLEAR(res); Py_CLEAR(res);
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
} }
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
...@@ -685,7 +684,7 @@ Buffered_flush(BufferedObject *self, PyObject *args) ...@@ -685,7 +684,7 @@ Buffered_flush(BufferedObject *self, PyObject *args)
} }
static PyObject * static PyObject *
Buffered_peek(BufferedObject *self, PyObject *args) buffered_peek(buffered *self, PyObject *args)
{ {
Py_ssize_t n = 0; Py_ssize_t n = 0;
PyObject *res = NULL; PyObject *res = NULL;
...@@ -698,12 +697,12 @@ Buffered_peek(BufferedObject *self, PyObject *args) ...@@ -698,12 +697,12 @@ Buffered_peek(BufferedObject *self, PyObject *args)
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 1); res = _bufferedwriter_flush_unlocked(self, 1);
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_CLEAR(res); Py_CLEAR(res);
} }
res = _BufferedReader_peek_unlocked(self, n); res = _bufferedreader_peek_unlocked(self, n);
end: end:
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
...@@ -711,7 +710,7 @@ end: ...@@ -711,7 +710,7 @@ end:
} }
static PyObject * static PyObject *
Buffered_read(BufferedObject *self, PyObject *args) buffered_read(buffered *self, PyObject *args)
{ {
Py_ssize_t n = -1; Py_ssize_t n = -1;
PyObject *res; PyObject *res;
...@@ -731,15 +730,15 @@ Buffered_read(BufferedObject *self, PyObject *args) ...@@ -731,15 +730,15 @@ Buffered_read(BufferedObject *self, PyObject *args)
if (n == -1) { if (n == -1) {
/* The number of bytes is unspecified, read until the end of stream */ /* The number of bytes is unspecified, read until the end of stream */
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
res = _BufferedReader_read_all(self); res = _bufferedreader_read_all(self);
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
} }
else { else {
res = _BufferedReader_read_fast(self, n); res = _bufferedreader_read_fast(self, n);
if (res == Py_None) { if (res == Py_None) {
Py_DECREF(res); Py_DECREF(res);
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
res = _BufferedReader_read_generic(self, n); res = _bufferedreader_read_generic(self, n);
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
} }
} }
...@@ -748,7 +747,7 @@ Buffered_read(BufferedObject *self, PyObject *args) ...@@ -748,7 +747,7 @@ Buffered_read(BufferedObject *self, PyObject *args)
} }
static PyObject * static PyObject *
Buffered_read1(BufferedObject *self, PyObject *args) buffered_read1(buffered *self, PyObject *args)
{ {
Py_ssize_t n, have, r; Py_ssize_t n, have, r;
PyObject *res = NULL; PyObject *res = NULL;
...@@ -769,7 +768,7 @@ Buffered_read1(BufferedObject *self, PyObject *args) ...@@ -769,7 +768,7 @@ Buffered_read1(BufferedObject *self, PyObject *args)
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 1); res = _bufferedwriter_flush_unlocked(self, 1);
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_CLEAR(res); Py_CLEAR(res);
...@@ -795,8 +794,8 @@ Buffered_read1(BufferedObject *self, PyObject *args) ...@@ -795,8 +794,8 @@ Buffered_read1(BufferedObject *self, PyObject *args)
} }
/* Fill the buffer from the raw stream, and copy it to the result. */ /* Fill the buffer from the raw stream, and copy it to the result. */
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
r = _BufferedReader_fill_buffer(self); r = _bufferedreader_fill_buffer(self);
if (r == -1) if (r == -1)
goto end; goto end;
if (r == -2) if (r == -2)
...@@ -814,7 +813,7 @@ end: ...@@ -814,7 +813,7 @@ end:
} }
static PyObject * static PyObject *
Buffered_readinto(BufferedObject *self, PyObject *args) buffered_readinto(buffered *self, PyObject *args)
{ {
PyObject *res = NULL; PyObject *res = NULL;
...@@ -823,20 +822,20 @@ Buffered_readinto(BufferedObject *self, PyObject *args) ...@@ -823,20 +822,20 @@ Buffered_readinto(BufferedObject *self, PyObject *args)
/* TODO: use raw.readinto() instead! */ /* TODO: use raw.readinto() instead! */
if (self->writable) { if (self->writable) {
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
res = _BufferedWriter_flush_unlocked(self, 0); res = _bufferedwriter_flush_unlocked(self, 0);
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_DECREF(res); Py_DECREF(res);
} }
res = BufferedIOBase_readinto((PyObject *)self, args); res = bufferediobase_readinto((PyObject *)self, args);
end: end:
return res; return res;
} }
static PyObject * static PyObject *
_Buffered_readline(BufferedObject *self, Py_ssize_t limit) _buffered_readline(buffered *self, Py_ssize_t limit)
{ {
PyObject *res = NULL; PyObject *res = NULL;
PyObject *chunks = NULL; PyObject *chunks = NULL;
...@@ -870,7 +869,7 @@ _Buffered_readline(BufferedObject *self, Py_ssize_t limit) ...@@ -870,7 +869,7 @@ _Buffered_readline(BufferedObject *self, Py_ssize_t limit)
/* Now we try to get some more from the raw stream */ /* Now we try to get some more from the raw stream */
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 1); res = _bufferedwriter_flush_unlocked(self, 1);
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_CLEAR(res); Py_CLEAR(res);
...@@ -893,8 +892,8 @@ _Buffered_readline(BufferedObject *self, Py_ssize_t limit) ...@@ -893,8 +892,8 @@ _Buffered_readline(BufferedObject *self, Py_ssize_t limit)
} }
for (;;) { for (;;) {
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
n = _BufferedReader_fill_buffer(self); n = _bufferedreader_fill_buffer(self);
if (n == -1) if (n == -1)
goto end; goto end;
if (n <= 0) if (n <= 0)
...@@ -945,7 +944,7 @@ end_unlocked: ...@@ -945,7 +944,7 @@ end_unlocked:
} }
static PyObject * static PyObject *
Buffered_readline(BufferedObject *self, PyObject *args) buffered_readline(buffered *self, PyObject *args)
{ {
Py_ssize_t limit = -1; Py_ssize_t limit = -1;
...@@ -954,17 +953,17 @@ Buffered_readline(BufferedObject *self, PyObject *args) ...@@ -954,17 +953,17 @@ Buffered_readline(BufferedObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|n:readline", &limit)) { if (!PyArg_ParseTuple(args, "|n:readline", &limit)) {
return NULL; return NULL;
} }
return _Buffered_readline(self, limit); return _buffered_readline(self, limit);
} }
static PyObject * static PyObject *
Buffered_tell(BufferedObject *self, PyObject *args) buffered_tell(buffered *self, PyObject *args)
{ {
Py_off_t pos; Py_off_t pos;
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
pos = _Buffered_raw_tell(self); pos = _buffered_raw_tell(self);
if (pos == -1) if (pos == -1)
return NULL; return NULL;
pos -= RAW_OFFSET(self); pos -= RAW_OFFSET(self);
...@@ -973,7 +972,7 @@ Buffered_tell(BufferedObject *self, PyObject *args) ...@@ -973,7 +972,7 @@ Buffered_tell(BufferedObject *self, PyObject *args)
} }
static PyObject * static PyObject *
Buffered_seek(BufferedObject *self, PyObject *args) buffered_seek(buffered *self, PyObject *args)
{ {
Py_off_t target, n; Py_off_t target, n;
int whence = 0; int whence = 0;
...@@ -1022,23 +1021,23 @@ Buffered_seek(BufferedObject *self, PyObject *args) ...@@ -1022,23 +1021,23 @@ Buffered_seek(BufferedObject *self, PyObject *args)
/* Fallback: invoke raw seek() method and clear buffer */ /* Fallback: invoke raw seek() method and clear buffer */
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 0); res = _bufferedwriter_flush_unlocked(self, 0);
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_CLEAR(res); Py_CLEAR(res);
_BufferedWriter_reset_buf(self); _bufferedwriter_reset_buf(self);
} }
/* TODO: align on block boundary and read buffer if needed? */ /* TODO: align on block boundary and read buffer if needed? */
if (whence == 1) if (whence == 1)
target -= RAW_OFFSET(self); target -= RAW_OFFSET(self);
n = _Buffered_raw_seek(self, target, whence); n = _buffered_raw_seek(self, target, whence);
if (n == -1) if (n == -1)
goto end; goto end;
self->raw_pos = -1; self->raw_pos = -1;
res = PyLong_FromOff_t(n); res = PyLong_FromOff_t(n);
if (res != NULL && self->readable) if (res != NULL && self->readable)
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
end: end:
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
...@@ -1046,7 +1045,7 @@ end: ...@@ -1046,7 +1045,7 @@ end:
} }
static PyObject * static PyObject *
Buffered_truncate(BufferedObject *self, PyObject *args) buffered_truncate(buffered *self, PyObject *args)
{ {
PyObject *pos = Py_None; PyObject *pos = Py_None;
PyObject *res = NULL; PyObject *res = NULL;
...@@ -1059,7 +1058,7 @@ Buffered_truncate(BufferedObject *self, PyObject *args) ...@@ -1059,7 +1058,7 @@ Buffered_truncate(BufferedObject *self, PyObject *args)
ENTER_BUFFERED(self) ENTER_BUFFERED(self)
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 0); res = _bufferedwriter_flush_unlocked(self, 0);
if (res == NULL) if (res == NULL)
goto end; goto end;
Py_CLEAR(res); Py_CLEAR(res);
...@@ -1068,16 +1067,16 @@ Buffered_truncate(BufferedObject *self, PyObject *args) ...@@ -1068,16 +1067,16 @@ Buffered_truncate(BufferedObject *self, PyObject *args)
if (pos == Py_None) { if (pos == Py_None) {
/* Rewind the raw stream so that its position corresponds to /* Rewind the raw stream so that its position corresponds to
the current logical position. */ the current logical position. */
if (_Buffered_raw_seek(self, -RAW_OFFSET(self), 1) == -1) if (_buffered_raw_seek(self, -RAW_OFFSET(self), 1) == -1)
goto end; goto end;
} }
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
} }
res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_truncate, pos, NULL); res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_truncate, pos, NULL);
if (res == NULL) if (res == NULL)
goto end; goto end;
/* Reset cached position */ /* Reset cached position */
if (_Buffered_raw_tell(self) == -1) if (_buffered_raw_tell(self) == -1)
PyErr_Clear(); PyErr_Clear();
end: end:
...@@ -1086,7 +1085,7 @@ end: ...@@ -1086,7 +1085,7 @@ end:
} }
static PyObject * static PyObject *
Buffered_iternext(BufferedObject *self) buffered_iternext(buffered *self)
{ {
PyObject *line; PyObject *line;
PyTypeObject *tp; PyTypeObject *tp;
...@@ -1097,7 +1096,7 @@ Buffered_iternext(BufferedObject *self) ...@@ -1097,7 +1096,7 @@ Buffered_iternext(BufferedObject *self)
if (tp == &PyBufferedReader_Type || if (tp == &PyBufferedReader_Type ||
tp == &PyBufferedRandom_Type) { tp == &PyBufferedRandom_Type) {
/* Skip method call overhead for speed */ /* Skip method call overhead for speed */
line = _Buffered_readline(self, -1); line = _buffered_readline(self, -1);
} }
else { else {
line = PyObject_CallMethodObjArgs((PyObject *)self, line = PyObject_CallMethodObjArgs((PyObject *)self,
...@@ -1124,7 +1123,7 @@ Buffered_iternext(BufferedObject *self) ...@@ -1124,7 +1123,7 @@ Buffered_iternext(BufferedObject *self)
} }
static PyObject * static PyObject *
Buffered_repr(BufferedObject *self) buffered_repr(buffered *self)
{ {
PyObject *nameobj, *res; PyObject *nameobj, *res;
...@@ -1148,16 +1147,16 @@ Buffered_repr(BufferedObject *self) ...@@ -1148,16 +1147,16 @@ Buffered_repr(BufferedObject *self)
* class BufferedReader * class BufferedReader
*/ */
PyDoc_STRVAR(BufferedReader_doc, PyDoc_STRVAR(bufferedreader_doc,
"Create a new buffered reader using the given readable raw IO object."); "Create a new buffered reader using the given readable raw IO object.");
static void _BufferedReader_reset_buf(BufferedObject *self) static void _bufferedreader_reset_buf(buffered *self)
{ {
self->read_end = -1; self->read_end = -1;
} }
static int static int
BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds) bufferedreader_init(buffered *self, PyObject *args, PyObject *kwds)
{ {
char *kwlist[] = {"raw", "buffer_size", NULL}; char *kwlist[] = {"raw", "buffer_size", NULL};
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE; Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
...@@ -1171,7 +1170,7 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1171,7 +1170,7 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds)
return -1; return -1;
} }
if (_PyIOBase_checkReadable(raw, Py_True) == NULL) if (_PyIOBase_check_readable(raw, Py_True) == NULL)
return -1; return -1;
Py_CLEAR(self->raw); Py_CLEAR(self->raw);
...@@ -1181,9 +1180,9 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1181,9 +1180,9 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds)
self->readable = 1; self->readable = 1;
self->writable = 0; self->writable = 0;
if (_Buffered_init(self) < 0) if (_buffered_init(self) < 0)
return -1; return -1;
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedReader_Type && self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedReader_Type &&
Py_TYPE(raw) == &PyFileIO_Type); Py_TYPE(raw) == &PyFileIO_Type);
...@@ -1193,7 +1192,7 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1193,7 +1192,7 @@ BufferedReader_init(BufferedObject *self, PyObject *args, PyObject *kwds)
} }
static Py_ssize_t static Py_ssize_t
_BufferedReader_raw_read(BufferedObject *self, char *start, Py_ssize_t len) _bufferedreader_raw_read(buffered *self, char *start, Py_ssize_t len)
{ {
Py_buffer buf; Py_buffer buf;
PyObject *memobj, *res; PyObject *memobj, *res;
...@@ -1227,7 +1226,7 @@ _BufferedReader_raw_read(BufferedObject *self, char *start, Py_ssize_t len) ...@@ -1227,7 +1226,7 @@ _BufferedReader_raw_read(BufferedObject *self, char *start, Py_ssize_t len)
} }
static Py_ssize_t static Py_ssize_t
_BufferedReader_fill_buffer(BufferedObject *self) _bufferedreader_fill_buffer(buffered *self)
{ {
Py_ssize_t start, len, n; Py_ssize_t start, len, n;
if (VALID_READ_BUFFER(self)) if (VALID_READ_BUFFER(self))
...@@ -1235,7 +1234,7 @@ _BufferedReader_fill_buffer(BufferedObject *self) ...@@ -1235,7 +1234,7 @@ _BufferedReader_fill_buffer(BufferedObject *self)
else else
start = 0; start = 0;
len = self->buffer_size - start; len = self->buffer_size - start;
n = _BufferedReader_raw_read(self, self->buffer + start, len); n = _bufferedreader_raw_read(self, self->buffer + start, len);
if (n <= 0) if (n <= 0)
return n; return n;
self->read_end = start + n; self->read_end = start + n;
...@@ -1244,7 +1243,7 @@ _BufferedReader_fill_buffer(BufferedObject *self) ...@@ -1244,7 +1243,7 @@ _BufferedReader_fill_buffer(BufferedObject *self)
} }
static PyObject * static PyObject *
_BufferedReader_read_all(BufferedObject *self) _bufferedreader_read_all(buffered *self)
{ {
Py_ssize_t current_size; Py_ssize_t current_size;
PyObject *res, *data = NULL; PyObject *res, *data = NULL;
...@@ -1263,10 +1262,10 @@ _BufferedReader_read_all(BufferedObject *self) ...@@ -1263,10 +1262,10 @@ _BufferedReader_read_all(BufferedObject *self)
return NULL; return NULL;
} }
} }
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
/* We're going past the buffer's bounds, flush it */ /* We're going past the buffer's bounds, flush it */
if (self->writable) { if (self->writable) {
res = _BufferedWriter_flush_unlocked(self, 1); res = _bufferedwriter_flush_unlocked(self, 1);
if (res == NULL) { if (res == NULL) {
Py_DECREF(chunks); Py_DECREF(chunks);
return NULL; return NULL;
...@@ -1316,7 +1315,7 @@ _BufferedReader_read_all(BufferedObject *self) ...@@ -1316,7 +1315,7 @@ _BufferedReader_read_all(BufferedObject *self)
/* Read n bytes from the buffer if it can, otherwise return None. /* Read n bytes from the buffer if it can, otherwise return None.
This function is simple enough that it can run unlocked. */ This function is simple enough that it can run unlocked. */
static PyObject * static PyObject *
_BufferedReader_read_fast(BufferedObject *self, Py_ssize_t n) _bufferedreader_read_fast(buffered *self, Py_ssize_t n)
{ {
Py_ssize_t current_size; Py_ssize_t current_size;
...@@ -1335,7 +1334,7 @@ _BufferedReader_read_fast(BufferedObject *self, Py_ssize_t n) ...@@ -1335,7 +1334,7 @@ _BufferedReader_read_fast(BufferedObject *self, Py_ssize_t n)
* or until an EOF occurs or until read() would block. * or until an EOF occurs or until read() would block.
*/ */
static PyObject * static PyObject *
_BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n) _bufferedreader_read_generic(buffered *self, Py_ssize_t n)
{ {
PyObject *res = NULL; PyObject *res = NULL;
Py_ssize_t current_size, remaining, written; Py_ssize_t current_size, remaining, written;
...@@ -1343,7 +1342,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n) ...@@ -1343,7 +1342,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n)
current_size = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t); current_size = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
if (n <= current_size) if (n <= current_size)
return _BufferedReader_read_fast(self, n); return _bufferedreader_read_fast(self, n);
res = PyBytes_FromStringAndSize(NULL, n); res = PyBytes_FromStringAndSize(NULL, n);
if (res == NULL) if (res == NULL)
...@@ -1356,14 +1355,14 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n) ...@@ -1356,14 +1355,14 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n)
remaining -= current_size; remaining -= current_size;
written += current_size; written += current_size;
} }
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
while (remaining > 0) { while (remaining > 0) {
/* We want to read a whole block at the end into buffer. /* We want to read a whole block at the end into buffer.
If we had readv() we could do this in one pass. */ If we had readv() we could do this in one pass. */
Py_ssize_t r = MINUS_LAST_BLOCK(self, remaining); Py_ssize_t r = MINUS_LAST_BLOCK(self, remaining);
if (r == 0) if (r == 0)
break; break;
r = _BufferedReader_raw_read(self, out + written, r); r = _bufferedreader_raw_read(self, out + written, r);
if (r == -1) if (r == -1)
goto error; goto error;
if (r == 0 || r == -2) { if (r == 0 || r == -2) {
...@@ -1385,7 +1384,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n) ...@@ -1385,7 +1384,7 @@ _BufferedReader_read_generic(BufferedObject *self, Py_ssize_t n)
self->raw_pos = 0; self->raw_pos = 0;
self->read_end = 0; self->read_end = 0;
while (self->read_end < self->buffer_size) { while (self->read_end < self->buffer_size) {
Py_ssize_t r = _BufferedReader_fill_buffer(self); Py_ssize_t r = _bufferedreader_fill_buffer(self);
if (r == -1) if (r == -1)
goto error; goto error;
if (r == 0 || r == -2) { if (r == 0 || r == -2) {
...@@ -1423,7 +1422,7 @@ error: ...@@ -1423,7 +1422,7 @@ error:
} }
static PyObject * static PyObject *
_BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t n) _bufferedreader_peek_unlocked(buffered *self, Py_ssize_t n)
{ {
Py_ssize_t have, r; Py_ssize_t have, r;
...@@ -1439,8 +1438,8 @@ _BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t n) ...@@ -1439,8 +1438,8 @@ _BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t n)
} }
/* Fill the buffer from the raw stream, and copy it to the result. */ /* Fill the buffer from the raw stream, and copy it to the result. */
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
r = _BufferedReader_fill_buffer(self); r = _bufferedreader_fill_buffer(self);
if (r == -1) if (r == -1)
return NULL; return NULL;
if (r == -2) if (r == -2)
...@@ -1449,36 +1448,36 @@ _BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t n) ...@@ -1449,36 +1448,36 @@ _BufferedReader_peek_unlocked(BufferedObject *self, Py_ssize_t n)
return PyBytes_FromStringAndSize(self->buffer, r); return PyBytes_FromStringAndSize(self->buffer, r);
} }
static PyMethodDef BufferedReader_methods[] = { static PyMethodDef bufferedreader_methods[] = {
/* BufferedIOMixin methods */ /* BufferedIOMixin methods */
{"detach", (PyCFunction)BufferedIOMixin_detach, METH_NOARGS}, {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
{"flush", (PyCFunction)BufferedIOMixin_flush, METH_NOARGS}, {"flush", (PyCFunction)buffered_simple_flush, METH_NOARGS},
{"close", (PyCFunction)BufferedIOMixin_close, METH_NOARGS}, {"close", (PyCFunction)buffered_close, METH_NOARGS},
{"seekable", (PyCFunction)BufferedIOMixin_seekable, METH_NOARGS}, {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
{"readable", (PyCFunction)BufferedIOMixin_readable, METH_NOARGS}, {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
{"writable", (PyCFunction)BufferedIOMixin_writable, METH_NOARGS}, {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
{"fileno", (PyCFunction)BufferedIOMixin_fileno, METH_NOARGS}, {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
{"isatty", (PyCFunction)BufferedIOMixin_isatty, METH_NOARGS}, {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
{"read", (PyCFunction)Buffered_read, METH_VARARGS}, {"read", (PyCFunction)buffered_read, METH_VARARGS},
{"peek", (PyCFunction)Buffered_peek, METH_VARARGS}, {"peek", (PyCFunction)buffered_peek, METH_VARARGS},
{"read1", (PyCFunction)Buffered_read1, METH_VARARGS}, {"read1", (PyCFunction)buffered_read1, METH_VARARGS},
{"readline", (PyCFunction)Buffered_readline, METH_VARARGS}, {"readline", (PyCFunction)buffered_readline, METH_VARARGS},
{"seek", (PyCFunction)Buffered_seek, METH_VARARGS}, {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
{"tell", (PyCFunction)Buffered_tell, METH_NOARGS}, {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
{"truncate", (PyCFunction)Buffered_truncate, METH_VARARGS}, {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyMemberDef BufferedReader_members[] = { static PyMemberDef bufferedreader_members[] = {
{"raw", T_OBJECT, offsetof(BufferedObject, raw), 0}, {"raw", T_OBJECT, offsetof(buffered, raw), 0},
{NULL} {NULL}
}; };
static PyGetSetDef BufferedReader_getset[] = { static PyGetSetDef bufferedreader_getset[] = {
{"closed", (getter)BufferedIOMixin_closed_get, NULL, NULL}, {"closed", (getter)buffered_closed_get, NULL, NULL},
{"name", (getter)BufferedIOMixin_name_get, NULL, NULL}, {"name", (getter)buffered_name_get, NULL, NULL},
{"mode", (getter)BufferedIOMixin_mode_get, NULL, NULL}, {"mode", (getter)buffered_mode_get, NULL, NULL},
{NULL} {NULL}
}; };
...@@ -1486,14 +1485,14 @@ static PyGetSetDef BufferedReader_getset[] = { ...@@ -1486,14 +1485,14 @@ static PyGetSetDef BufferedReader_getset[] = {
PyTypeObject PyBufferedReader_Type = { PyTypeObject PyBufferedReader_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.BufferedReader", /*tp_name*/ "_io.BufferedReader", /*tp_name*/
sizeof(BufferedObject), /*tp_basicsize*/ sizeof(buffered), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)BufferedObject_dealloc, /*tp_dealloc*/ (destructor)buffered_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
0, /*tp_compare */ 0, /*tp_compare */
(reprfunc)Buffered_repr, /*tp_repr*/ (reprfunc)buffered_repr, /*tp_repr*/
0, /*tp_as_number*/ 0, /*tp_as_number*/
0, /*tp_as_sequence*/ 0, /*tp_as_sequence*/
0, /*tp_as_mapping*/ 0, /*tp_as_mapping*/
...@@ -1505,22 +1504,22 @@ PyTypeObject PyBufferedReader_Type = { ...@@ -1505,22 +1504,22 @@ PyTypeObject PyBufferedReader_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /*tp_flags*/ | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
BufferedReader_doc, /* tp_doc */ bufferedreader_doc, /* tp_doc */
(traverseproc)Buffered_traverse, /* tp_traverse */ (traverseproc)buffered_traverse, /* tp_traverse */
(inquiry)Buffered_clear, /* tp_clear */ (inquiry)buffered_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(BufferedObject, weakreflist), /*tp_weaklistoffset*/ offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
(iternextfunc)Buffered_iternext, /* tp_iternext */ (iternextfunc)buffered_iternext, /* tp_iternext */
BufferedReader_methods, /* tp_methods */ bufferedreader_methods, /* tp_methods */
BufferedReader_members, /* tp_members */ bufferedreader_members, /* tp_members */
BufferedReader_getset, /* tp_getset */ bufferedreader_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(BufferedObject, dict), /* tp_dictoffset */ offsetof(buffered, dict), /* tp_dictoffset */
(initproc)BufferedReader_init, /* tp_init */ (initproc)bufferedreader_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
...@@ -1539,7 +1538,7 @@ complain_about_max_buffer_size(void) ...@@ -1539,7 +1538,7 @@ complain_about_max_buffer_size(void)
/* /*
* class BufferedWriter * class BufferedWriter
*/ */
PyDoc_STRVAR(BufferedWriter_doc, PyDoc_STRVAR(bufferedwriter_doc,
"A buffer for a writeable sequential RawIO object.\n" "A buffer for a writeable sequential RawIO object.\n"
"\n" "\n"
"The constructor creates a BufferedWriter for the given writeable raw\n" "The constructor creates a BufferedWriter for the given writeable raw\n"
...@@ -1548,14 +1547,14 @@ PyDoc_STRVAR(BufferedWriter_doc, ...@@ -1548,14 +1547,14 @@ PyDoc_STRVAR(BufferedWriter_doc,
); );
static void static void
_BufferedWriter_reset_buf(BufferedObject *self) _bufferedwriter_reset_buf(buffered *self)
{ {
self->write_pos = 0; self->write_pos = 0;
self->write_end = -1; self->write_end = -1;
} }
static int static int
BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds) bufferedwriter_init(buffered *self, PyObject *args, PyObject *kwds)
{ {
/* TODO: properly deprecate max_buffer_size */ /* TODO: properly deprecate max_buffer_size */
char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL}; char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL};
...@@ -1574,7 +1573,7 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1574,7 +1573,7 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds)
if (max_buffer_size != -234 && !complain_about_max_buffer_size()) if (max_buffer_size != -234 && !complain_about_max_buffer_size())
return -1; return -1;
if (_PyIOBase_checkWritable(raw, Py_True) == NULL) if (_PyIOBase_check_writable(raw, Py_True) == NULL)
return -1; return -1;
Py_CLEAR(self->raw); Py_CLEAR(self->raw);
...@@ -1584,9 +1583,9 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1584,9 +1583,9 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds)
self->writable = 1; self->writable = 1;
self->buffer_size = buffer_size; self->buffer_size = buffer_size;
if (_Buffered_init(self) < 0) if (_buffered_init(self) < 0)
return -1; return -1;
_BufferedWriter_reset_buf(self); _bufferedwriter_reset_buf(self);
self->pos = 0; self->pos = 0;
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedWriter_Type && self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedWriter_Type &&
...@@ -1597,7 +1596,7 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -1597,7 +1596,7 @@ BufferedWriter_init(BufferedObject *self, PyObject *args, PyObject *kwds)
} }
static Py_ssize_t static Py_ssize_t
_BufferedWriter_raw_write(BufferedObject *self, char *start, Py_ssize_t len) _bufferedwriter_raw_write(buffered *self, char *start, Py_ssize_t len)
{ {
Py_buffer buf; Py_buffer buf;
PyObject *memobj, *res; PyObject *memobj, *res;
...@@ -1628,7 +1627,7 @@ _BufferedWriter_raw_write(BufferedObject *self, char *start, Py_ssize_t len) ...@@ -1628,7 +1627,7 @@ _BufferedWriter_raw_write(BufferedObject *self, char *start, Py_ssize_t len)
/* `restore_pos` is 1 if we need to restore the raw stream position at /* `restore_pos` is 1 if we need to restore the raw stream position at
the end, 0 otherwise. */ the end, 0 otherwise. */
static PyObject * static PyObject *
_BufferedWriter_flush_unlocked(BufferedObject *self, int restore_pos) _bufferedwriter_flush_unlocked(buffered *self, int restore_pos)
{ {
Py_ssize_t written = 0; Py_ssize_t written = 0;
Py_off_t n, rewind; Py_off_t n, rewind;
...@@ -1638,19 +1637,19 @@ _BufferedWriter_flush_unlocked(BufferedObject *self, int restore_pos) ...@@ -1638,19 +1637,19 @@ _BufferedWriter_flush_unlocked(BufferedObject *self, int restore_pos)
/* First, rewind */ /* First, rewind */
rewind = RAW_OFFSET(self) + (self->pos - self->write_pos); rewind = RAW_OFFSET(self) + (self->pos - self->write_pos);
if (rewind != 0) { if (rewind != 0) {
n = _Buffered_raw_seek(self, -rewind, 1); n = _buffered_raw_seek(self, -rewind, 1);
if (n < 0) { if (n < 0) {
goto error; goto error;
} }
self->raw_pos -= rewind; self->raw_pos -= rewind;
} }
while (self->write_pos < self->write_end) { while (self->write_pos < self->write_end) {
n = _BufferedWriter_raw_write(self, n = _bufferedwriter_raw_write(self,
self->buffer + self->write_pos, self->buffer + self->write_pos,
Py_SAFE_DOWNCAST(self->write_end - self->write_pos, Py_SAFE_DOWNCAST(self->write_end - self->write_pos,
Py_off_t, Py_ssize_t)); Py_off_t, Py_ssize_t));
if (n == -1) { if (n == -1) {
Py_ssize_t *w = _Buffered_check_blocking_error(); Py_ssize_t *w = _buffered_check_blocking_error();
if (w == NULL) if (w == NULL)
goto error; goto error;
self->write_pos += *w; self->write_pos += *w;
...@@ -1668,14 +1667,14 @@ _BufferedWriter_flush_unlocked(BufferedObject *self, int restore_pos) ...@@ -1668,14 +1667,14 @@ _BufferedWriter_flush_unlocked(BufferedObject *self, int restore_pos)
if (restore_pos) { if (restore_pos) {
Py_off_t forward = rewind - written; Py_off_t forward = rewind - written;
if (forward != 0) { if (forward != 0) {
n = _Buffered_raw_seek(self, forward, 1); n = _buffered_raw_seek(self, forward, 1);
if (n < 0) { if (n < 0) {
goto error; goto error;
} }
self->raw_pos += forward; self->raw_pos += forward;
} }
} }
_BufferedWriter_reset_buf(self); _bufferedwriter_reset_buf(self);
end: end:
Py_RETURN_NONE; Py_RETURN_NONE;
...@@ -1685,7 +1684,7 @@ error: ...@@ -1685,7 +1684,7 @@ error:
} }
static PyObject * static PyObject *
BufferedWriter_write(BufferedObject *self, PyObject *args) bufferedwriter_write(buffered *self, PyObject *args)
{ {
PyObject *res = NULL; PyObject *res = NULL;
Py_buffer buf; Py_buffer buf;
...@@ -1723,13 +1722,13 @@ BufferedWriter_write(BufferedObject *self, PyObject *args) ...@@ -1723,13 +1722,13 @@ BufferedWriter_write(BufferedObject *self, PyObject *args)
} }
/* First write the current buffer */ /* First write the current buffer */
res = _BufferedWriter_flush_unlocked(self, 0); res = _bufferedwriter_flush_unlocked(self, 0);
if (res == NULL) { if (res == NULL) {
Py_ssize_t *w = _Buffered_check_blocking_error(); Py_ssize_t *w = _buffered_check_blocking_error();
if (w == NULL) if (w == NULL)
goto error; goto error;
if (self->readable) if (self->readable)
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
/* Make some place by shifting the buffer. */ /* Make some place by shifting the buffer. */
assert(VALID_WRITE_BUFFER(self)); assert(VALID_WRITE_BUFFER(self));
memmove(self->buffer, self->buffer + self->write_pos, memmove(self->buffer, self->buffer + self->write_pos,
...@@ -1762,10 +1761,10 @@ BufferedWriter_write(BufferedObject *self, PyObject *args) ...@@ -1762,10 +1761,10 @@ BufferedWriter_write(BufferedObject *self, PyObject *args)
remaining = buf.len; remaining = buf.len;
written = 0; written = 0;
while (remaining > self->buffer_size) { while (remaining > self->buffer_size) {
n = _BufferedWriter_raw_write( n = _bufferedwriter_raw_write(
self, (char *) buf.buf + written, buf.len - written); self, (char *) buf.buf + written, buf.len - written);
if (n == -1) { if (n == -1) {
Py_ssize_t *w = _Buffered_check_blocking_error(); Py_ssize_t *w = _buffered_check_blocking_error();
if (w == NULL) if (w == NULL)
goto error; goto error;
written += *w; written += *w;
...@@ -1788,7 +1787,7 @@ BufferedWriter_write(BufferedObject *self, PyObject *args) ...@@ -1788,7 +1787,7 @@ BufferedWriter_write(BufferedObject *self, PyObject *args)
remaining -= n; remaining -= n;
} }
if (self->readable) if (self->readable)
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
if (remaining > 0) { if (remaining > 0) {
memcpy(self->buffer, (char *) buf.buf + written, remaining); memcpy(self->buffer, (char *) buf.buf + written, remaining);
written += remaining; written += remaining;
...@@ -1808,33 +1807,33 @@ error: ...@@ -1808,33 +1807,33 @@ error:
return res; return res;
} }
static PyMethodDef BufferedWriter_methods[] = { static PyMethodDef bufferedwriter_methods[] = {
/* BufferedIOMixin methods */ /* BufferedIOMixin methods */
{"close", (PyCFunction)BufferedIOMixin_close, METH_NOARGS}, {"close", (PyCFunction)buffered_close, METH_NOARGS},
{"detach", (PyCFunction)BufferedIOMixin_detach, METH_NOARGS}, {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
{"seekable", (PyCFunction)BufferedIOMixin_seekable, METH_NOARGS}, {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
{"readable", (PyCFunction)BufferedIOMixin_readable, METH_NOARGS}, {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
{"writable", (PyCFunction)BufferedIOMixin_writable, METH_NOARGS}, {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
{"fileno", (PyCFunction)BufferedIOMixin_fileno, METH_NOARGS}, {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
{"isatty", (PyCFunction)BufferedIOMixin_isatty, METH_NOARGS}, {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
{"write", (PyCFunction)BufferedWriter_write, METH_VARARGS}, {"write", (PyCFunction)bufferedwriter_write, METH_VARARGS},
{"truncate", (PyCFunction)Buffered_truncate, METH_VARARGS}, {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
{"flush", (PyCFunction)Buffered_flush, METH_NOARGS}, {"flush", (PyCFunction)buffered_flush, METH_NOARGS},
{"seek", (PyCFunction)Buffered_seek, METH_VARARGS}, {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
{"tell", (PyCFunction)Buffered_tell, METH_NOARGS}, {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyMemberDef BufferedWriter_members[] = { static PyMemberDef bufferedwriter_members[] = {
{"raw", T_OBJECT, offsetof(BufferedObject, raw), 0}, {"raw", T_OBJECT, offsetof(buffered, raw), 0},
{NULL} {NULL}
}; };
static PyGetSetDef BufferedWriter_getset[] = { static PyGetSetDef bufferedwriter_getset[] = {
{"closed", (getter)BufferedIOMixin_closed_get, NULL, NULL}, {"closed", (getter)buffered_closed_get, NULL, NULL},
{"name", (getter)BufferedIOMixin_name_get, NULL, NULL}, {"name", (getter)buffered_name_get, NULL, NULL},
{"mode", (getter)BufferedIOMixin_mode_get, NULL, NULL}, {"mode", (getter)buffered_mode_get, NULL, NULL},
{NULL} {NULL}
}; };
...@@ -1842,14 +1841,14 @@ static PyGetSetDef BufferedWriter_getset[] = { ...@@ -1842,14 +1841,14 @@ static PyGetSetDef BufferedWriter_getset[] = {
PyTypeObject PyBufferedWriter_Type = { PyTypeObject PyBufferedWriter_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.BufferedWriter", /*tp_name*/ "_io.BufferedWriter", /*tp_name*/
sizeof(BufferedObject), /*tp_basicsize*/ sizeof(buffered), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)BufferedObject_dealloc, /*tp_dealloc*/ (destructor)buffered_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
0, /*tp_compare */ 0, /*tp_compare */
(reprfunc)Buffered_repr, /*tp_repr*/ (reprfunc)buffered_repr, /*tp_repr*/
0, /*tp_as_number*/ 0, /*tp_as_number*/
0, /*tp_as_sequence*/ 0, /*tp_as_sequence*/
0, /*tp_as_mapping*/ 0, /*tp_as_mapping*/
...@@ -1861,22 +1860,22 @@ PyTypeObject PyBufferedWriter_Type = { ...@@ -1861,22 +1860,22 @@ PyTypeObject PyBufferedWriter_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /*tp_flags*/ | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
BufferedWriter_doc, /* tp_doc */ bufferedwriter_doc, /* tp_doc */
(traverseproc)Buffered_traverse, /* tp_traverse */ (traverseproc)buffered_traverse, /* tp_traverse */
(inquiry)Buffered_clear, /* tp_clear */ (inquiry)buffered_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(BufferedObject, weakreflist), /*tp_weaklistoffset*/ offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
BufferedWriter_methods, /* tp_methods */ bufferedwriter_methods, /* tp_methods */
BufferedWriter_members, /* tp_members */ bufferedwriter_members, /* tp_members */
BufferedWriter_getset, /* tp_getset */ bufferedwriter_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(BufferedObject, dict), /* tp_dictoffset */ offsetof(buffered, dict), /* tp_dictoffset */
(initproc)BufferedWriter_init, /* tp_init */ (initproc)bufferedwriter_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
...@@ -1887,7 +1886,7 @@ PyTypeObject PyBufferedWriter_Type = { ...@@ -1887,7 +1886,7 @@ PyTypeObject PyBufferedWriter_Type = {
* BufferedRWPair * BufferedRWPair
*/ */
PyDoc_STRVAR(BufferedRWPair_doc, PyDoc_STRVAR(bufferedrwpair_doc,
"A buffered reader and writer object together.\n" "A buffered reader and writer object together.\n"
"\n" "\n"
"A buffered reader object and buffered writer object put together to\n" "A buffered reader object and buffered writer object put together to\n"
...@@ -1905,15 +1904,14 @@ PyDoc_STRVAR(BufferedRWPair_doc, ...@@ -1905,15 +1904,14 @@ PyDoc_STRVAR(BufferedRWPair_doc,
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
BufferedObject *reader; buffered *reader;
BufferedObject *writer; buffered *writer;
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} BufferedRWPairObject; } rwpair;
static int static int
BufferedRWPair_init(BufferedRWPairObject *self, PyObject *args, bufferedrwpair_init(rwpair *self, PyObject *args, PyObject *kwds)
PyObject *kwds)
{ {
PyObject *reader, *writer; PyObject *reader, *writer;
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE; Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
...@@ -1927,17 +1925,17 @@ BufferedRWPair_init(BufferedRWPairObject *self, PyObject *args, ...@@ -1927,17 +1925,17 @@ BufferedRWPair_init(BufferedRWPairObject *self, PyObject *args,
if (max_buffer_size != -234 && !complain_about_max_buffer_size()) if (max_buffer_size != -234 && !complain_about_max_buffer_size())
return -1; return -1;
if (_PyIOBase_checkReadable(reader, Py_True) == NULL) if (_PyIOBase_check_readable(reader, Py_True) == NULL)
return -1; return -1;
if (_PyIOBase_checkWritable(writer, Py_True) == NULL) if (_PyIOBase_check_writable(writer, Py_True) == NULL)
return -1; return -1;
self->reader = (BufferedObject *) PyObject_CallFunction( self->reader = (buffered *) PyObject_CallFunction(
(PyObject *) &PyBufferedReader_Type, "On", reader, buffer_size); (PyObject *) &PyBufferedReader_Type, "On", reader, buffer_size);
if (self->reader == NULL) if (self->reader == NULL)
return -1; return -1;
self->writer = (BufferedObject *) PyObject_CallFunction( self->writer = (buffered *) PyObject_CallFunction(
(PyObject *) &PyBufferedWriter_Type, "On", writer, buffer_size); (PyObject *) &PyBufferedWriter_Type, "On", writer, buffer_size);
if (self->writer == NULL) { if (self->writer == NULL) {
Py_CLEAR(self->reader); Py_CLEAR(self->reader);
...@@ -1948,14 +1946,14 @@ BufferedRWPair_init(BufferedRWPairObject *self, PyObject *args, ...@@ -1948,14 +1946,14 @@ BufferedRWPair_init(BufferedRWPairObject *self, PyObject *args,
} }
static int static int
BufferedRWPair_traverse(BufferedRWPairObject *self, visitproc visit, void *arg) bufferedrwpair_traverse(rwpair *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->dict); Py_VISIT(self->dict);
return 0; return 0;
} }
static int static int
BufferedRWPair_clear(BufferedRWPairObject *self) bufferedrwpair_clear(rwpair *self)
{ {
Py_CLEAR(self->reader); Py_CLEAR(self->reader);
Py_CLEAR(self->writer); Py_CLEAR(self->writer);
...@@ -1964,7 +1962,7 @@ BufferedRWPair_clear(BufferedRWPairObject *self) ...@@ -1964,7 +1962,7 @@ BufferedRWPair_clear(BufferedRWPairObject *self)
} }
static void static void
BufferedRWPair_dealloc(BufferedRWPairObject *self) bufferedrwpair_dealloc(rwpair *self)
{ {
_PyObject_GC_UNTRACK(self); _PyObject_GC_UNTRACK(self);
Py_CLEAR(self->reader); Py_CLEAR(self->reader);
...@@ -1974,7 +1972,7 @@ BufferedRWPair_dealloc(BufferedRWPairObject *self) ...@@ -1974,7 +1972,7 @@ BufferedRWPair_dealloc(BufferedRWPairObject *self)
} }
static PyObject * static PyObject *
_forward_call(BufferedObject *self, const char *name, PyObject *args) _forward_call(buffered *self, const char *name, PyObject *args)
{ {
PyObject *func = PyObject_GetAttrString((PyObject *)self, name); PyObject *func = PyObject_GetAttrString((PyObject *)self, name);
PyObject *ret; PyObject *ret;
...@@ -1990,55 +1988,55 @@ _forward_call(BufferedObject *self, const char *name, PyObject *args) ...@@ -1990,55 +1988,55 @@ _forward_call(BufferedObject *self, const char *name, PyObject *args)
} }
static PyObject * static PyObject *
BufferedRWPair_read(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_read(rwpair *self, PyObject *args)
{ {
return _forward_call(self->reader, "read", args); return _forward_call(self->reader, "read", args);
} }
static PyObject * static PyObject *
BufferedRWPair_peek(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_peek(rwpair *self, PyObject *args)
{ {
return _forward_call(self->reader, "peek", args); return _forward_call(self->reader, "peek", args);
} }
static PyObject * static PyObject *
BufferedRWPair_read1(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_read1(rwpair *self, PyObject *args)
{ {
return _forward_call(self->reader, "read1", args); return _forward_call(self->reader, "read1", args);
} }
static PyObject * static PyObject *
BufferedRWPair_readinto(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_readinto(rwpair *self, PyObject *args)
{ {
return _forward_call(self->reader, "readinto", args); return _forward_call(self->reader, "readinto", args);
} }
static PyObject * static PyObject *
BufferedRWPair_write(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_write(rwpair *self, PyObject *args)
{ {
return _forward_call(self->writer, "write", args); return _forward_call(self->writer, "write", args);
} }
static PyObject * static PyObject *
BufferedRWPair_flush(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_flush(rwpair *self, PyObject *args)
{ {
return _forward_call(self->writer, "flush", args); return _forward_call(self->writer, "flush", args);
} }
static PyObject * static PyObject *
BufferedRWPair_readable(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_readable(rwpair *self, PyObject *args)
{ {
return _forward_call(self->reader, "readable", args); return _forward_call(self->reader, "readable", args);
} }
static PyObject * static PyObject *
BufferedRWPair_writable(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_writable(rwpair *self, PyObject *args)
{ {
return _forward_call(self->writer, "writable", args); return _forward_call(self->writer, "writable", args);
} }
static PyObject * static PyObject *
BufferedRWPair_close(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_close(rwpair *self, PyObject *args)
{ {
PyObject *ret = _forward_call(self->writer, "close", args); PyObject *ret = _forward_call(self->writer, "close", args);
if (ret == NULL) if (ret == NULL)
...@@ -2049,7 +2047,7 @@ BufferedRWPair_close(BufferedRWPairObject *self, PyObject *args) ...@@ -2049,7 +2047,7 @@ BufferedRWPair_close(BufferedRWPairObject *self, PyObject *args)
} }
static PyObject * static PyObject *
BufferedRWPair_isatty(BufferedRWPairObject *self, PyObject *args) bufferedrwpair_isatty(rwpair *self, PyObject *args)
{ {
PyObject *ret = _forward_call(self->writer, "isatty", args); PyObject *ret = _forward_call(self->writer, "isatty", args);
...@@ -2063,40 +2061,40 @@ BufferedRWPair_isatty(BufferedRWPairObject *self, PyObject *args) ...@@ -2063,40 +2061,40 @@ BufferedRWPair_isatty(BufferedRWPairObject *self, PyObject *args)
} }
static PyObject * static PyObject *
BufferedRWPair_closed_get(BufferedRWPairObject *self, void *context) bufferedrwpair_closed_get(rwpair *self, void *context)
{ {
return PyObject_GetAttr((PyObject *) self->writer, _PyIO_str_closed); return PyObject_GetAttr((PyObject *) self->writer, _PyIO_str_closed);
} }
static PyMethodDef BufferedRWPair_methods[] = { static PyMethodDef bufferedrwpair_methods[] = {
{"read", (PyCFunction)BufferedRWPair_read, METH_VARARGS}, {"read", (PyCFunction)bufferedrwpair_read, METH_VARARGS},
{"peek", (PyCFunction)BufferedRWPair_peek, METH_VARARGS}, {"peek", (PyCFunction)bufferedrwpair_peek, METH_VARARGS},
{"read1", (PyCFunction)BufferedRWPair_read1, METH_VARARGS}, {"read1", (PyCFunction)bufferedrwpair_read1, METH_VARARGS},
{"readinto", (PyCFunction)BufferedRWPair_readinto, METH_VARARGS}, {"readinto", (PyCFunction)bufferedrwpair_readinto, METH_VARARGS},
{"write", (PyCFunction)BufferedRWPair_write, METH_VARARGS}, {"write", (PyCFunction)bufferedrwpair_write, METH_VARARGS},
{"flush", (PyCFunction)BufferedRWPair_flush, METH_NOARGS}, {"flush", (PyCFunction)bufferedrwpair_flush, METH_NOARGS},
{"readable", (PyCFunction)BufferedRWPair_readable, METH_NOARGS}, {"readable", (PyCFunction)bufferedrwpair_readable, METH_NOARGS},
{"writable", (PyCFunction)BufferedRWPair_writable, METH_NOARGS}, {"writable", (PyCFunction)bufferedrwpair_writable, METH_NOARGS},
{"close", (PyCFunction)BufferedRWPair_close, METH_NOARGS}, {"close", (PyCFunction)bufferedrwpair_close, METH_NOARGS},
{"isatty", (PyCFunction)BufferedRWPair_isatty, METH_NOARGS}, {"isatty", (PyCFunction)bufferedrwpair_isatty, METH_NOARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyGetSetDef BufferedRWPair_getset[] = { static PyGetSetDef bufferedrwpair_getset[] = {
{"closed", (getter)BufferedRWPair_closed_get, NULL, NULL}, {"closed", (getter)bufferedrwpair_closed_get, NULL, NULL},
{NULL} {NULL}
}; };
PyTypeObject PyBufferedRWPair_Type = { PyTypeObject PyBufferedRWPair_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.BufferedRWPair", /*tp_name*/ "_io.BufferedRWPair", /*tp_name*/
sizeof(BufferedRWPairObject), /*tp_basicsize*/ sizeof(rwpair), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)BufferedRWPair_dealloc, /*tp_dealloc*/ (destructor)bufferedrwpair_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
...@@ -2113,22 +2111,22 @@ PyTypeObject PyBufferedRWPair_Type = { ...@@ -2113,22 +2111,22 @@ PyTypeObject PyBufferedRWPair_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /* tp_flags */ | Py_TPFLAGS_HAVE_GC, /* tp_flags */
BufferedRWPair_doc, /* tp_doc */ bufferedrwpair_doc, /* tp_doc */
(traverseproc)BufferedRWPair_traverse, /* tp_traverse */ (traverseproc)bufferedrwpair_traverse, /* tp_traverse */
(inquiry)BufferedRWPair_clear, /* tp_clear */ (inquiry)bufferedrwpair_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(BufferedRWPairObject, weakreflist), /*tp_weaklistoffset*/ offsetof(rwpair, weakreflist), /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
BufferedRWPair_methods, /* tp_methods */ bufferedrwpair_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
BufferedRWPair_getset, /* tp_getset */ bufferedrwpair_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(BufferedRWPairObject, dict), /* tp_dictoffset */ offsetof(rwpair, dict), /* tp_dictoffset */
(initproc)BufferedRWPair_init, /* tp_init */ (initproc)bufferedrwpair_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
...@@ -2139,7 +2137,7 @@ PyTypeObject PyBufferedRWPair_Type = { ...@@ -2139,7 +2137,7 @@ PyTypeObject PyBufferedRWPair_Type = {
* BufferedRandom * BufferedRandom
*/ */
PyDoc_STRVAR(BufferedRandom_doc, PyDoc_STRVAR(bufferedrandom_doc,
"A buffered interface to random access streams.\n" "A buffered interface to random access streams.\n"
"\n" "\n"
"The constructor creates a reader and writer for a seekable stream,\n" "The constructor creates a reader and writer for a seekable stream,\n"
...@@ -2148,7 +2146,7 @@ PyDoc_STRVAR(BufferedRandom_doc, ...@@ -2148,7 +2146,7 @@ PyDoc_STRVAR(BufferedRandom_doc,
); );
static int static int
BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds) bufferedrandom_init(buffered *self, PyObject *args, PyObject *kwds)
{ {
char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL}; char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL};
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE; Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
...@@ -2166,11 +2164,11 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -2166,11 +2164,11 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds)
if (max_buffer_size != -234 && !complain_about_max_buffer_size()) if (max_buffer_size != -234 && !complain_about_max_buffer_size())
return -1; return -1;
if (_PyIOBase_checkSeekable(raw, Py_True) == NULL) if (_PyIOBase_check_seekable(raw, Py_True) == NULL)
return -1; return -1;
if (_PyIOBase_checkReadable(raw, Py_True) == NULL) if (_PyIOBase_check_readable(raw, Py_True) == NULL)
return -1; return -1;
if (_PyIOBase_checkWritable(raw, Py_True) == NULL) if (_PyIOBase_check_writable(raw, Py_True) == NULL)
return -1; return -1;
Py_CLEAR(self->raw); Py_CLEAR(self->raw);
...@@ -2180,10 +2178,10 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -2180,10 +2178,10 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds)
self->readable = 1; self->readable = 1;
self->writable = 1; self->writable = 1;
if (_Buffered_init(self) < 0) if (_buffered_init(self) < 0)
return -1; return -1;
_BufferedReader_reset_buf(self); _bufferedreader_reset_buf(self);
_BufferedWriter_reset_buf(self); _bufferedwriter_reset_buf(self);
self->pos = 0; self->pos = 0;
self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedRandom_Type && self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedRandom_Type &&
...@@ -2193,39 +2191,39 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds) ...@@ -2193,39 +2191,39 @@ BufferedRandom_init(BufferedObject *self, PyObject *args, PyObject *kwds)
return 0; return 0;
} }
static PyMethodDef BufferedRandom_methods[] = { static PyMethodDef bufferedrandom_methods[] = {
/* BufferedIOMixin methods */ /* BufferedIOMixin methods */
{"close", (PyCFunction)BufferedIOMixin_close, METH_NOARGS}, {"close", (PyCFunction)buffered_close, METH_NOARGS},
{"detach", (PyCFunction)BufferedIOMixin_detach, METH_NOARGS}, {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
{"seekable", (PyCFunction)BufferedIOMixin_seekable, METH_NOARGS}, {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
{"readable", (PyCFunction)BufferedIOMixin_readable, METH_NOARGS}, {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
{"writable", (PyCFunction)BufferedIOMixin_writable, METH_NOARGS}, {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
{"fileno", (PyCFunction)BufferedIOMixin_fileno, METH_NOARGS}, {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
{"isatty", (PyCFunction)BufferedIOMixin_isatty, METH_NOARGS}, {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
{"flush", (PyCFunction)Buffered_flush, METH_NOARGS}, {"flush", (PyCFunction)buffered_flush, METH_NOARGS},
{"seek", (PyCFunction)Buffered_seek, METH_VARARGS}, {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
{"tell", (PyCFunction)Buffered_tell, METH_NOARGS}, {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
{"truncate", (PyCFunction)Buffered_truncate, METH_VARARGS}, {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
{"read", (PyCFunction)Buffered_read, METH_VARARGS}, {"read", (PyCFunction)buffered_read, METH_VARARGS},
{"read1", (PyCFunction)Buffered_read1, METH_VARARGS}, {"read1", (PyCFunction)buffered_read1, METH_VARARGS},
{"readinto", (PyCFunction)Buffered_readinto, METH_VARARGS}, {"readinto", (PyCFunction)buffered_readinto, METH_VARARGS},
{"readline", (PyCFunction)Buffered_readline, METH_VARARGS}, {"readline", (PyCFunction)buffered_readline, METH_VARARGS},
{"peek", (PyCFunction)Buffered_peek, METH_VARARGS}, {"peek", (PyCFunction)buffered_peek, METH_VARARGS},
{"write", (PyCFunction)BufferedWriter_write, METH_VARARGS}, {"write", (PyCFunction)bufferedwriter_write, METH_VARARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyMemberDef BufferedRandom_members[] = { static PyMemberDef bufferedrandom_members[] = {
{"raw", T_OBJECT, offsetof(BufferedObject, raw), 0}, {"raw", T_OBJECT, offsetof(buffered, raw), 0},
{NULL} {NULL}
}; };
static PyGetSetDef BufferedRandom_getset[] = { static PyGetSetDef bufferedrandom_getset[] = {
{"closed", (getter)BufferedIOMixin_closed_get, NULL, NULL}, {"closed", (getter)buffered_closed_get, NULL, NULL},
{"name", (getter)BufferedIOMixin_name_get, NULL, NULL}, {"name", (getter)buffered_name_get, NULL, NULL},
{"mode", (getter)BufferedIOMixin_mode_get, NULL, NULL}, {"mode", (getter)buffered_mode_get, NULL, NULL},
{NULL} {NULL}
}; };
...@@ -2233,14 +2231,14 @@ static PyGetSetDef BufferedRandom_getset[] = { ...@@ -2233,14 +2231,14 @@ static PyGetSetDef BufferedRandom_getset[] = {
PyTypeObject PyBufferedRandom_Type = { PyTypeObject PyBufferedRandom_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.BufferedRandom", /*tp_name*/ "_io.BufferedRandom", /*tp_name*/
sizeof(BufferedObject), /*tp_basicsize*/ sizeof(buffered), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)BufferedObject_dealloc, /*tp_dealloc*/ (destructor)buffered_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
0, /*tp_compare */ 0, /*tp_compare */
(reprfunc)Buffered_repr, /*tp_repr*/ (reprfunc)buffered_repr, /*tp_repr*/
0, /*tp_as_number*/ 0, /*tp_as_number*/
0, /*tp_as_sequence*/ 0, /*tp_as_sequence*/
0, /*tp_as_mapping*/ 0, /*tp_as_mapping*/
...@@ -2252,22 +2250,22 @@ PyTypeObject PyBufferedRandom_Type = { ...@@ -2252,22 +2250,22 @@ PyTypeObject PyBufferedRandom_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /*tp_flags*/ | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
BufferedRandom_doc, /* tp_doc */ bufferedrandom_doc, /* tp_doc */
(traverseproc)Buffered_traverse, /* tp_traverse */ (traverseproc)buffered_traverse, /* tp_traverse */
(inquiry)Buffered_clear, /* tp_clear */ (inquiry)buffered_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(BufferedObject, weakreflist), /*tp_weaklistoffset*/ offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
(iternextfunc)Buffered_iternext, /* tp_iternext */ (iternextfunc)buffered_iternext, /* tp_iternext */
BufferedRandom_methods, /* tp_methods */ bufferedrandom_methods, /* tp_methods */
BufferedRandom_members, /* tp_members */ bufferedrandom_members, /* tp_members */
BufferedRandom_getset, /* tp_getset */ bufferedrandom_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /*tp_dict*/ 0, /*tp_dict*/
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(BufferedObject, dict), /*tp_dictoffset*/ offsetof(buffered, dict), /*tp_dictoffset*/
(initproc)BufferedRandom_init, /* tp_init */ (initproc)bufferedrandom_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
......
...@@ -10,7 +10,7 @@ typedef struct { ...@@ -10,7 +10,7 @@ typedef struct {
size_t buf_size; size_t buf_size;
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} BytesIOObject; } bytesio;
#define CHECK_CLOSED(self) \ #define CHECK_CLOSED(self) \
if ((self)->buf == NULL) { \ if ((self)->buf == NULL) { \
...@@ -23,7 +23,7 @@ typedef struct { ...@@ -23,7 +23,7 @@ typedef struct {
object. Returns the length between the current position to the object. Returns the length between the current position to the
next newline character. */ next newline character. */
static Py_ssize_t static Py_ssize_t
get_line(BytesIOObject *self, char **output) get_line(bytesio *self, char **output)
{ {
char *n; char *n;
const char *str_end; const char *str_end;
...@@ -56,7 +56,7 @@ get_line(BytesIOObject *self, char **output) ...@@ -56,7 +56,7 @@ get_line(BytesIOObject *self, char **output)
The caller should ensure that the 'size' argument is non-negative. Returns The caller should ensure that the 'size' argument is non-negative. Returns
0 on success, -1 otherwise. */ 0 on success, -1 otherwise. */
static int static int
resize_buffer(BytesIOObject *self, size_t size) resize_buffer(bytesio *self, size_t size)
{ {
/* Here, unsigned types are used to avoid dealing with signed integer /* Here, unsigned types are used to avoid dealing with signed integer
overflow, which is undefined in C. */ overflow, which is undefined in C. */
...@@ -108,7 +108,7 @@ resize_buffer(BytesIOObject *self, size_t size) ...@@ -108,7 +108,7 @@ resize_buffer(BytesIOObject *self, size_t size)
/* Internal routine for writing a string of bytes to the buffer of a BytesIO /* Internal routine for writing a string of bytes to the buffer of a BytesIO
object. Returns the number of bytes wrote, or -1 on error. */ object. Returns the number of bytes wrote, or -1 on error. */
static Py_ssize_t static Py_ssize_t
write_bytes(BytesIOObject *self, const char *bytes, Py_ssize_t len) write_bytes(bytesio *self, const char *bytes, Py_ssize_t len)
{ {
assert(self->buf != NULL); assert(self->buf != NULL);
assert(self->pos >= 0); assert(self->pos >= 0);
...@@ -146,7 +146,7 @@ write_bytes(BytesIOObject *self, const char *bytes, Py_ssize_t len) ...@@ -146,7 +146,7 @@ write_bytes(BytesIOObject *self, const char *bytes, Py_ssize_t len)
} }
static PyObject * static PyObject *
bytesio_get_closed(BytesIOObject *self) bytesio_get_closed(bytesio *self)
{ {
if (self->buf == NULL) { if (self->buf == NULL) {
Py_RETURN_TRUE; Py_RETURN_TRUE;
...@@ -158,7 +158,7 @@ bytesio_get_closed(BytesIOObject *self) ...@@ -158,7 +158,7 @@ bytesio_get_closed(BytesIOObject *self)
/* Generic getter for the writable, readable and seekable properties */ /* Generic getter for the writable, readable and seekable properties */
static PyObject * static PyObject *
return_true(BytesIOObject *self) return_true(bytesio *self)
{ {
Py_RETURN_TRUE; Py_RETURN_TRUE;
} }
...@@ -167,7 +167,7 @@ PyDoc_STRVAR(flush_doc, ...@@ -167,7 +167,7 @@ PyDoc_STRVAR(flush_doc,
"flush() -> None. Does nothing."); "flush() -> None. Does nothing.");
static PyObject * static PyObject *
bytesio_flush(BytesIOObject *self) bytesio_flush(bytesio *self)
{ {
Py_RETURN_NONE; Py_RETURN_NONE;
} }
...@@ -178,7 +178,7 @@ PyDoc_STRVAR(getval_doc, ...@@ -178,7 +178,7 @@ PyDoc_STRVAR(getval_doc,
"Retrieve the entire contents of the BytesIO object."); "Retrieve the entire contents of the BytesIO object.");
static PyObject * static PyObject *
bytesio_getvalue(BytesIOObject *self) bytesio_getvalue(bytesio *self)
{ {
CHECK_CLOSED(self); CHECK_CLOSED(self);
return PyBytes_FromStringAndSize(self->buf, self->string_size); return PyBytes_FromStringAndSize(self->buf, self->string_size);
...@@ -191,7 +191,7 @@ PyDoc_STRVAR(isatty_doc, ...@@ -191,7 +191,7 @@ PyDoc_STRVAR(isatty_doc,
"to a tty-like device."); "to a tty-like device.");
static PyObject * static PyObject *
bytesio_isatty(BytesIOObject *self) bytesio_isatty(bytesio *self)
{ {
CHECK_CLOSED(self); CHECK_CLOSED(self);
Py_RETURN_FALSE; Py_RETURN_FALSE;
...@@ -201,7 +201,7 @@ PyDoc_STRVAR(tell_doc, ...@@ -201,7 +201,7 @@ PyDoc_STRVAR(tell_doc,
"tell() -> current file position, an integer\n"); "tell() -> current file position, an integer\n");
static PyObject * static PyObject *
bytesio_tell(BytesIOObject *self) bytesio_tell(bytesio *self)
{ {
CHECK_CLOSED(self); CHECK_CLOSED(self);
return PyLong_FromSsize_t(self->pos); return PyLong_FromSsize_t(self->pos);
...@@ -214,7 +214,7 @@ PyDoc_STRVAR(read_doc, ...@@ -214,7 +214,7 @@ PyDoc_STRVAR(read_doc,
"Return an empty string at EOF."); "Return an empty string at EOF.");
static PyObject * static PyObject *
bytesio_read(BytesIOObject *self, PyObject *args) bytesio_read(bytesio *self, PyObject *args)
{ {
Py_ssize_t size, n; Py_ssize_t size, n;
char *output; char *output;
...@@ -263,7 +263,7 @@ PyDoc_STRVAR(read1_doc, ...@@ -263,7 +263,7 @@ PyDoc_STRVAR(read1_doc,
"Return an empty string at EOF."); "Return an empty string at EOF.");
static PyObject * static PyObject *
bytesio_read1(BytesIOObject *self, PyObject *n) bytesio_read1(bytesio *self, PyObject *n)
{ {
PyObject *arg, *res; PyObject *arg, *res;
...@@ -283,7 +283,7 @@ PyDoc_STRVAR(readline_doc, ...@@ -283,7 +283,7 @@ PyDoc_STRVAR(readline_doc,
"Return an empty string at EOF.\n"); "Return an empty string at EOF.\n");
static PyObject * static PyObject *
bytesio_readline(BytesIOObject *self, PyObject *args) bytesio_readline(bytesio *self, PyObject *args)
{ {
Py_ssize_t size, n; Py_ssize_t size, n;
char *output; char *output;
...@@ -328,7 +328,7 @@ PyDoc_STRVAR(readlines_doc, ...@@ -328,7 +328,7 @@ PyDoc_STRVAR(readlines_doc,
"total number of bytes in the lines returned.\n"); "total number of bytes in the lines returned.\n");
static PyObject * static PyObject *
bytesio_readlines(BytesIOObject *self, PyObject *args) bytesio_readlines(bytesio *self, PyObject *args)
{ {
Py_ssize_t maxsize, size, n; Py_ssize_t maxsize, size, n;
PyObject *result, *line; PyObject *result, *line;
...@@ -387,7 +387,7 @@ PyDoc_STRVAR(readinto_doc, ...@@ -387,7 +387,7 @@ PyDoc_STRVAR(readinto_doc,
"is set not to block as has no data to read."); "is set not to block as has no data to read.");
static PyObject * static PyObject *
bytesio_readinto(BytesIOObject *self, PyObject *buffer) bytesio_readinto(bytesio *self, PyObject *buffer)
{ {
void *raw_buffer; void *raw_buffer;
Py_ssize_t len; Py_ssize_t len;
...@@ -415,7 +415,7 @@ PyDoc_STRVAR(truncate_doc, ...@@ -415,7 +415,7 @@ PyDoc_STRVAR(truncate_doc,
"Returns the new size. Imply an absolute seek to the position size."); "Returns the new size. Imply an absolute seek to the position size.");
static PyObject * static PyObject *
bytesio_truncate(BytesIOObject *self, PyObject *args) bytesio_truncate(bytesio *self, PyObject *args)
{ {
Py_ssize_t size; Py_ssize_t size;
PyObject *arg = Py_None; PyObject *arg = Py_None;
...@@ -457,7 +457,7 @@ bytesio_truncate(BytesIOObject *self, PyObject *args) ...@@ -457,7 +457,7 @@ bytesio_truncate(BytesIOObject *self, PyObject *args)
} }
static PyObject * static PyObject *
bytesio_iternext(BytesIOObject *self) bytesio_iternext(bytesio *self)
{ {
char *next; char *next;
Py_ssize_t n; Py_ssize_t n;
...@@ -482,7 +482,7 @@ PyDoc_STRVAR(seek_doc, ...@@ -482,7 +482,7 @@ PyDoc_STRVAR(seek_doc,
"Returns the new absolute position."); "Returns the new absolute position.");
static PyObject * static PyObject *
bytesio_seek(BytesIOObject *self, PyObject *args) bytesio_seek(bytesio *self, PyObject *args)
{ {
Py_ssize_t pos; Py_ssize_t pos;
int mode = 0; int mode = 0;
...@@ -536,7 +536,7 @@ PyDoc_STRVAR(write_doc, ...@@ -536,7 +536,7 @@ PyDoc_STRVAR(write_doc,
"Return the number of bytes written."); "Return the number of bytes written.");
static PyObject * static PyObject *
bytesio_write(BytesIOObject *self, PyObject *obj) bytesio_write(bytesio *self, PyObject *obj)
{ {
Py_ssize_t n = 0; Py_ssize_t n = 0;
Py_buffer buf; Py_buffer buf;
...@@ -564,7 +564,7 @@ PyDoc_STRVAR(writelines_doc, ...@@ -564,7 +564,7 @@ PyDoc_STRVAR(writelines_doc,
"each string."); "each string.");
static PyObject * static PyObject *
bytesio_writelines(BytesIOObject *self, PyObject *v) bytesio_writelines(bytesio *self, PyObject *v)
{ {
PyObject *it, *item; PyObject *it, *item;
PyObject *ret; PyObject *ret;
...@@ -597,7 +597,7 @@ PyDoc_STRVAR(close_doc, ...@@ -597,7 +597,7 @@ PyDoc_STRVAR(close_doc,
"close() -> None. Disable all I/O operations."); "close() -> None. Disable all I/O operations.");
static PyObject * static PyObject *
bytesio_close(BytesIOObject *self) bytesio_close(bytesio *self)
{ {
if (self->buf != NULL) { if (self->buf != NULL) {
PyMem_Free(self->buf); PyMem_Free(self->buf);
...@@ -607,7 +607,7 @@ bytesio_close(BytesIOObject *self) ...@@ -607,7 +607,7 @@ bytesio_close(BytesIOObject *self)
} }
static void static void
bytesio_dealloc(BytesIOObject *self) bytesio_dealloc(bytesio *self)
{ {
if (self->buf != NULL) { if (self->buf != NULL) {
PyMem_Free(self->buf); PyMem_Free(self->buf);
...@@ -620,10 +620,10 @@ bytesio_dealloc(BytesIOObject *self) ...@@ -620,10 +620,10 @@ bytesio_dealloc(BytesIOObject *self)
static PyObject * static PyObject *
bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
BytesIOObject *self; bytesio *self;
assert(type != NULL && type->tp_alloc != NULL); assert(type != NULL && type->tp_alloc != NULL);
self = (BytesIOObject *)type->tp_alloc(type, 0); self = (bytesio *)type->tp_alloc(type, 0);
if (self == NULL) if (self == NULL)
return NULL; return NULL;
...@@ -640,7 +640,7 @@ bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -640,7 +640,7 @@ bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
} }
static int static int
bytesio_init(BytesIOObject *self, PyObject *args, PyObject *kwds) bytesio_init(bytesio *self, PyObject *args, PyObject *kwds)
{ {
PyObject *initvalue = NULL; PyObject *initvalue = NULL;
...@@ -664,7 +664,7 @@ bytesio_init(BytesIOObject *self, PyObject *args, PyObject *kwds) ...@@ -664,7 +664,7 @@ bytesio_init(BytesIOObject *self, PyObject *args, PyObject *kwds)
} }
static int static int
bytesio_traverse(BytesIOObject *self, visitproc visit, void *arg) bytesio_traverse(bytesio *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->dict); Py_VISIT(self->dict);
Py_VISIT(self->weakreflist); Py_VISIT(self->weakreflist);
...@@ -672,7 +672,7 @@ bytesio_traverse(BytesIOObject *self, visitproc visit, void *arg) ...@@ -672,7 +672,7 @@ bytesio_traverse(BytesIOObject *self, visitproc visit, void *arg)
} }
static int static int
bytesio_clear(BytesIOObject *self) bytesio_clear(bytesio *self)
{ {
Py_CLEAR(self->dict); Py_CLEAR(self->dict);
if (self->weakreflist != NULL) if (self->weakreflist != NULL)
...@@ -717,7 +717,7 @@ PyDoc_STRVAR(bytesio_doc, ...@@ -717,7 +717,7 @@ PyDoc_STRVAR(bytesio_doc,
PyTypeObject PyBytesIO_Type = { PyTypeObject PyBytesIO_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.BytesIO", /*tp_name*/ "_io.BytesIO", /*tp_name*/
sizeof(BytesIOObject), /*tp_basicsize*/ sizeof(bytesio), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)bytesio_dealloc, /*tp_dealloc*/ (destructor)bytesio_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
...@@ -740,7 +740,7 @@ PyTypeObject PyBytesIO_Type = { ...@@ -740,7 +740,7 @@ PyTypeObject PyBytesIO_Type = {
(traverseproc)bytesio_traverse, /*tp_traverse*/ (traverseproc)bytesio_traverse, /*tp_traverse*/
(inquiry)bytesio_clear, /*tp_clear*/ (inquiry)bytesio_clear, /*tp_clear*/
0, /*tp_richcompare*/ 0, /*tp_richcompare*/
offsetof(BytesIOObject, weakreflist), /*tp_weaklistoffset*/ offsetof(bytesio, weakreflist), /*tp_weaklistoffset*/
PyObject_SelfIter, /*tp_iter*/ PyObject_SelfIter, /*tp_iter*/
(iternextfunc)bytesio_iternext, /*tp_iternext*/ (iternextfunc)bytesio_iternext, /*tp_iternext*/
bytesio_methods, /*tp_methods*/ bytesio_methods, /*tp_methods*/
...@@ -750,7 +750,7 @@ PyTypeObject PyBytesIO_Type = { ...@@ -750,7 +750,7 @@ PyTypeObject PyBytesIO_Type = {
0, /*tp_dict*/ 0, /*tp_dict*/
0, /*tp_descr_get*/ 0, /*tp_descr_get*/
0, /*tp_descr_set*/ 0, /*tp_descr_set*/
offsetof(BytesIOObject, dict), /*tp_dictoffset*/ offsetof(bytesio, dict), /*tp_dictoffset*/
(initproc)bytesio_init, /*tp_init*/ (initproc)bytesio_init, /*tp_init*/
0, /*tp_alloc*/ 0, /*tp_alloc*/
bytesio_new, /*tp_new*/ bytesio_new, /*tp_new*/
......
...@@ -51,7 +51,7 @@ typedef struct { ...@@ -51,7 +51,7 @@ typedef struct {
int closefd : 1; int closefd : 1;
PyObject *weakreflist; PyObject *weakreflist;
PyObject *dict; PyObject *dict;
} PyFileIOObject; } fileio;
PyTypeObject PyFileIO_Type; PyTypeObject PyFileIO_Type;
...@@ -60,7 +60,7 @@ PyTypeObject PyFileIO_Type; ...@@ -60,7 +60,7 @@ PyTypeObject PyFileIO_Type;
int int
_PyFileIO_closed(PyObject *self) _PyFileIO_closed(PyObject *self)
{ {
return ((PyFileIOObject *)self)->fd < 0; return ((fileio *)self)->fd < 0;
} }
static PyObject * static PyObject *
...@@ -70,7 +70,7 @@ static PyObject *portable_lseek(int fd, PyObject *posobj, int whence); ...@@ -70,7 +70,7 @@ static PyObject *portable_lseek(int fd, PyObject *posobj, int whence);
/* Returns 0 on success, -1 with exception set on failure. */ /* Returns 0 on success, -1 with exception set on failure. */
static int static int
internal_close(PyFileIOObject *self) internal_close(fileio *self)
{ {
int err = 0; int err = 0;
int save_errno = 0; int save_errno = 0;
...@@ -98,7 +98,7 @@ internal_close(PyFileIOObject *self) ...@@ -98,7 +98,7 @@ internal_close(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_close(PyFileIOObject *self) fileio_close(fileio *self)
{ {
if (!self->closefd) { if (!self->closefd) {
self->fd = -1; self->fd = -1;
...@@ -115,11 +115,11 @@ fileio_close(PyFileIOObject *self) ...@@ -115,11 +115,11 @@ fileio_close(PyFileIOObject *self)
static PyObject * static PyObject *
fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
PyFileIOObject *self; fileio *self;
assert(type != NULL && type->tp_alloc != NULL); assert(type != NULL && type->tp_alloc != NULL);
self = (PyFileIOObject *) type->tp_alloc(type, 0); self = (fileio *) type->tp_alloc(type, 0);
if (self != NULL) { if (self != NULL) {
self->fd = -1; self->fd = -1;
self->readable = 0; self->readable = 0;
...@@ -137,7 +137,7 @@ fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -137,7 +137,7 @@ fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
directories, so we need a check. */ directories, so we need a check. */
static int static int
dircheck(PyFileIOObject* self, const char *name) dircheck(fileio* self, const char *name)
{ {
#if defined(HAVE_FSTAT) && defined(S_IFDIR) && defined(EISDIR) #if defined(HAVE_FSTAT) && defined(S_IFDIR) && defined(EISDIR)
struct stat buf; struct stat buf;
...@@ -181,7 +181,7 @@ check_fd(int fd) ...@@ -181,7 +181,7 @@ check_fd(int fd)
static int static int
fileio_init(PyObject *oself, PyObject *args, PyObject *kwds) fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
{ {
PyFileIOObject *self = (PyFileIOObject *) oself; fileio *self = (fileio *) oself;
static char *kwlist[] = {"file", "mode", "closefd", NULL}; static char *kwlist[] = {"file", "mode", "closefd", NULL};
const char *name = NULL; const char *name = NULL;
PyObject *nameobj, *stringobj = NULL; PyObject *nameobj, *stringobj = NULL;
...@@ -380,21 +380,21 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds) ...@@ -380,21 +380,21 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
} }
static int static int
fileio_traverse(PyFileIOObject *self, visitproc visit, void *arg) fileio_traverse(fileio *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->dict); Py_VISIT(self->dict);
return 0; return 0;
} }
static int static int
fileio_clear(PyFileIOObject *self) fileio_clear(fileio *self)
{ {
Py_CLEAR(self->dict); Py_CLEAR(self->dict);
return 0; return 0;
} }
static void static void
fileio_dealloc(PyFileIOObject *self) fileio_dealloc(fileio *self)
{ {
if (_PyIOBase_finalize((PyObject *) self) < 0) if (_PyIOBase_finalize((PyObject *) self) < 0)
return; return;
...@@ -420,7 +420,7 @@ err_mode(char *action) ...@@ -420,7 +420,7 @@ err_mode(char *action)
} }
static PyObject * static PyObject *
fileio_fileno(PyFileIOObject *self) fileio_fileno(fileio *self)
{ {
if (self->fd < 0) if (self->fd < 0)
return err_closed(); return err_closed();
...@@ -428,7 +428,7 @@ fileio_fileno(PyFileIOObject *self) ...@@ -428,7 +428,7 @@ fileio_fileno(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_readable(PyFileIOObject *self) fileio_readable(fileio *self)
{ {
if (self->fd < 0) if (self->fd < 0)
return err_closed(); return err_closed();
...@@ -436,7 +436,7 @@ fileio_readable(PyFileIOObject *self) ...@@ -436,7 +436,7 @@ fileio_readable(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_writable(PyFileIOObject *self) fileio_writable(fileio *self)
{ {
if (self->fd < 0) if (self->fd < 0)
return err_closed(); return err_closed();
...@@ -444,7 +444,7 @@ fileio_writable(PyFileIOObject *self) ...@@ -444,7 +444,7 @@ fileio_writable(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_seekable(PyFileIOObject *self) fileio_seekable(fileio *self)
{ {
if (self->fd < 0) if (self->fd < 0)
return err_closed(); return err_closed();
...@@ -462,7 +462,7 @@ fileio_seekable(PyFileIOObject *self) ...@@ -462,7 +462,7 @@ fileio_seekable(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_readinto(PyFileIOObject *self, PyObject *args) fileio_readinto(fileio *self, PyObject *args)
{ {
Py_buffer pbuf; Py_buffer pbuf;
Py_ssize_t n; Py_ssize_t n;
...@@ -494,7 +494,7 @@ fileio_readinto(PyFileIOObject *self, PyObject *args) ...@@ -494,7 +494,7 @@ fileio_readinto(PyFileIOObject *self, PyObject *args)
} }
static size_t static size_t
new_buffersize(PyFileIOObject *self, size_t currentsize) new_buffersize(fileio *self, size_t currentsize)
{ {
#ifdef HAVE_FSTAT #ifdef HAVE_FSTAT
off_t pos, end; off_t pos, end;
...@@ -524,7 +524,7 @@ new_buffersize(PyFileIOObject *self, size_t currentsize) ...@@ -524,7 +524,7 @@ new_buffersize(PyFileIOObject *self, size_t currentsize)
} }
static PyObject * static PyObject *
fileio_readall(PyFileIOObject *self) fileio_readall(fileio *self)
{ {
PyObject *result; PyObject *result;
Py_ssize_t total = 0; Py_ssize_t total = 0;
...@@ -590,7 +590,7 @@ fileio_readall(PyFileIOObject *self) ...@@ -590,7 +590,7 @@ fileio_readall(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_read(PyFileIOObject *self, PyObject *args) fileio_read(fileio *self, PyObject *args)
{ {
char *ptr; char *ptr;
Py_ssize_t n; Py_ssize_t n;
...@@ -641,7 +641,7 @@ fileio_read(PyFileIOObject *self, PyObject *args) ...@@ -641,7 +641,7 @@ fileio_read(PyFileIOObject *self, PyObject *args)
} }
static PyObject * static PyObject *
fileio_write(PyFileIOObject *self, PyObject *args) fileio_write(fileio *self, PyObject *args)
{ {
Py_buffer pbuf; Py_buffer pbuf;
Py_ssize_t n; Py_ssize_t n;
...@@ -734,7 +734,7 @@ portable_lseek(int fd, PyObject *posobj, int whence) ...@@ -734,7 +734,7 @@ portable_lseek(int fd, PyObject *posobj, int whence)
} }
static PyObject * static PyObject *
fileio_seek(PyFileIOObject *self, PyObject *args) fileio_seek(fileio *self, PyObject *args)
{ {
PyObject *posobj; PyObject *posobj;
int whence = 0; int whence = 0;
...@@ -749,7 +749,7 @@ fileio_seek(PyFileIOObject *self, PyObject *args) ...@@ -749,7 +749,7 @@ fileio_seek(PyFileIOObject *self, PyObject *args)
} }
static PyObject * static PyObject *
fileio_tell(PyFileIOObject *self, PyObject *args) fileio_tell(fileio *self, PyObject *args)
{ {
if (self->fd < 0) if (self->fd < 0)
return err_closed(); return err_closed();
...@@ -759,7 +759,7 @@ fileio_tell(PyFileIOObject *self, PyObject *args) ...@@ -759,7 +759,7 @@ fileio_tell(PyFileIOObject *self, PyObject *args)
#ifdef HAVE_FTRUNCATE #ifdef HAVE_FTRUNCATE
static PyObject * static PyObject *
fileio_truncate(PyFileIOObject *self, PyObject *args) fileio_truncate(fileio *self, PyObject *args)
{ {
PyObject *posobj = NULL; PyObject *posobj = NULL;
Py_off_t pos; Py_off_t pos;
...@@ -831,7 +831,7 @@ fileio_truncate(PyFileIOObject *self, PyObject *args) ...@@ -831,7 +831,7 @@ fileio_truncate(PyFileIOObject *self, PyObject *args)
#endif #endif
static char * static char *
mode_string(PyFileIOObject *self) mode_string(fileio *self)
{ {
if (self->readable) { if (self->readable) {
if (self->writable) if (self->writable)
...@@ -844,7 +844,7 @@ mode_string(PyFileIOObject *self) ...@@ -844,7 +844,7 @@ mode_string(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_repr(PyFileIOObject *self) fileio_repr(fileio *self)
{ {
PyObject *nameobj, *res; PyObject *nameobj, *res;
...@@ -869,7 +869,7 @@ fileio_repr(PyFileIOObject *self) ...@@ -869,7 +869,7 @@ fileio_repr(PyFileIOObject *self)
} }
static PyObject * static PyObject *
fileio_isatty(PyFileIOObject *self) fileio_isatty(fileio *self)
{ {
long res; long res;
...@@ -980,19 +980,19 @@ static PyMethodDef fileio_methods[] = { ...@@ -980,19 +980,19 @@ static PyMethodDef fileio_methods[] = {
/* 'closed' and 'mode' are attributes for backwards compatibility reasons. */ /* 'closed' and 'mode' are attributes for backwards compatibility reasons. */
static PyObject * static PyObject *
get_closed(PyFileIOObject *self, void *closure) get_closed(fileio *self, void *closure)
{ {
return PyBool_FromLong((long)(self->fd < 0)); return PyBool_FromLong((long)(self->fd < 0));
} }
static PyObject * static PyObject *
get_closefd(PyFileIOObject *self, void *closure) get_closefd(fileio *self, void *closure)
{ {
return PyBool_FromLong((long)(self->closefd)); return PyBool_FromLong((long)(self->closefd));
} }
static PyObject * static PyObject *
get_mode(PyFileIOObject *self, void *closure) get_mode(fileio *self, void *closure)
{ {
return PyUnicode_FromString(mode_string(self)); return PyUnicode_FromString(mode_string(self));
} }
...@@ -1008,7 +1008,7 @@ static PyGetSetDef fileio_getsetlist[] = { ...@@ -1008,7 +1008,7 @@ static PyGetSetDef fileio_getsetlist[] = {
PyTypeObject PyFileIO_Type = { PyTypeObject PyFileIO_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.FileIO", "_io.FileIO",
sizeof(PyFileIOObject), sizeof(fileio),
0, 0,
(destructor)fileio_dealloc, /* tp_dealloc */ (destructor)fileio_dealloc, /* tp_dealloc */
0, /* tp_print */ 0, /* tp_print */
...@@ -1031,7 +1031,7 @@ PyTypeObject PyFileIO_Type = { ...@@ -1031,7 +1031,7 @@ PyTypeObject PyFileIO_Type = {
(traverseproc)fileio_traverse, /* tp_traverse */ (traverseproc)fileio_traverse, /* tp_traverse */
(inquiry)fileio_clear, /* tp_clear */ (inquiry)fileio_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(PyFileIOObject, weakreflist), /* tp_weaklistoffset */ offsetof(fileio, weakreflist), /* tp_weaklistoffset */
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
fileio_methods, /* tp_methods */ fileio_methods, /* tp_methods */
...@@ -1041,7 +1041,7 @@ PyTypeObject PyFileIO_Type = { ...@@ -1041,7 +1041,7 @@ PyTypeObject PyFileIO_Type = {
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(PyFileIOObject, dict), /* tp_dictoffset */ offsetof(fileio, dict), /* tp_dictoffset */
fileio_init, /* tp_init */ fileio_init, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */ PyType_GenericAlloc, /* tp_alloc */
fileio_new, /* tp_new */ fileio_new, /* tp_new */
......
...@@ -22,9 +22,9 @@ typedef struct { ...@@ -22,9 +22,9 @@ typedef struct {
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} IOBaseObject; } iobase;
PyDoc_STRVAR(IOBase_doc, PyDoc_STRVAR(iobase_doc,
"The abstract base class for all I/O classes, acting on streams of\n" "The abstract base class for all I/O classes, acting on streams of\n"
"bytes. There is no public constructor.\n" "bytes. There is no public constructor.\n"
"\n" "\n"
...@@ -63,7 +63,7 @@ PyDoc_STRVAR(IOBase_doc, ...@@ -63,7 +63,7 @@ PyDoc_STRVAR(IOBase_doc,
/* Internal methods */ /* Internal methods */
static PyObject * static PyObject *
IOBase_unsupported(const char *message) iobase_unsupported(const char *message)
{ {
PyErr_SetString(IO_STATE->unsupported_operation, message); PyErr_SetString(IO_STATE->unsupported_operation, message);
return NULL; return NULL;
...@@ -71,7 +71,7 @@ IOBase_unsupported(const char *message) ...@@ -71,7 +71,7 @@ IOBase_unsupported(const char *message)
/* Positionning */ /* Positionning */
PyDoc_STRVAR(IOBase_seek_doc, PyDoc_STRVAR(iobase_seek_doc,
"Change stream position.\n" "Change stream position.\n"
"\n" "\n"
"Change the stream position to byte offset offset. offset is\n" "Change the stream position to byte offset offset. offset is\n"
...@@ -85,41 +85,41 @@ PyDoc_STRVAR(IOBase_seek_doc, ...@@ -85,41 +85,41 @@ PyDoc_STRVAR(IOBase_seek_doc,
"Return the new absolute position."); "Return the new absolute position.");
static PyObject * static PyObject *
IOBase_seek(PyObject *self, PyObject *args) iobase_seek(PyObject *self, PyObject *args)
{ {
return IOBase_unsupported("seek"); return iobase_unsupported("seek");
} }
PyDoc_STRVAR(IOBase_tell_doc, PyDoc_STRVAR(iobase_tell_doc,
"Return current stream position."); "Return current stream position.");
static PyObject * static PyObject *
IOBase_tell(PyObject *self, PyObject *args) iobase_tell(PyObject *self, PyObject *args)
{ {
return PyObject_CallMethod(self, "seek", "ii", 0, 1); return PyObject_CallMethod(self, "seek", "ii", 0, 1);
} }
PyDoc_STRVAR(IOBase_truncate_doc, PyDoc_STRVAR(iobase_truncate_doc,
"Truncate file to size bytes.\n" "Truncate file to size bytes.\n"
"\n" "\n"
"Size defaults to the current IO position as reported by tell(). Return\n" "Size defaults to the current IO position as reported by tell(). Return\n"
"the new size."); "the new size.");
static PyObject * static PyObject *
IOBase_truncate(PyObject *self, PyObject *args) iobase_truncate(PyObject *self, PyObject *args)
{ {
return IOBase_unsupported("truncate"); return iobase_unsupported("truncate");
} }
/* Flush and close methods */ /* Flush and close methods */
PyDoc_STRVAR(IOBase_flush_doc, PyDoc_STRVAR(iobase_flush_doc,
"Flush write buffers, if applicable.\n" "Flush write buffers, if applicable.\n"
"\n" "\n"
"This is not implemented for read-only and non-blocking streams.\n"); "This is not implemented for read-only and non-blocking streams.\n");
static PyObject * static PyObject *
IOBase_flush(PyObject *self, PyObject *args) iobase_flush(PyObject *self, PyObject *args)
{ {
/* XXX Should this return the number of bytes written??? */ /* XXX Should this return the number of bytes written??? */
if (IS_CLOSED(self)) { if (IS_CLOSED(self)) {
...@@ -129,13 +129,13 @@ IOBase_flush(PyObject *self, PyObject *args) ...@@ -129,13 +129,13 @@ IOBase_flush(PyObject *self, PyObject *args)
Py_RETURN_NONE; Py_RETURN_NONE;
} }
PyDoc_STRVAR(IOBase_close_doc, PyDoc_STRVAR(iobase_close_doc,
"Flush and close the IO object.\n" "Flush and close the IO object.\n"
"\n" "\n"
"This method has no effect if the file is already closed.\n"); "This method has no effect if the file is already closed.\n");
static int static int
IOBase_closed(PyObject *self) iobase_closed(PyObject *self)
{ {
PyObject *res; PyObject *res;
int closed; int closed;
...@@ -150,15 +150,15 @@ IOBase_closed(PyObject *self) ...@@ -150,15 +150,15 @@ IOBase_closed(PyObject *self)
} }
static PyObject * static PyObject *
IOBase_closed_get(PyObject *self, void *context) iobase_closed_get(PyObject *self, void *context)
{ {
return PyBool_FromLong(IS_CLOSED(self)); return PyBool_FromLong(IS_CLOSED(self));
} }
PyObject * PyObject *
_PyIOBase_checkClosed(PyObject *self, PyObject *args) _PyIOBase_check_closed(PyObject *self, PyObject *args)
{ {
if (IOBase_closed(self)) { if (iobase_closed(self)) {
PyErr_SetString(PyExc_ValueError, "I/O operation on closed file."); PyErr_SetString(PyExc_ValueError, "I/O operation on closed file.");
return NULL; return NULL;
} }
...@@ -173,7 +173,7 @@ _PyIOBase_checkClosed(PyObject *self, PyObject *args) ...@@ -173,7 +173,7 @@ _PyIOBase_checkClosed(PyObject *self, PyObject *args)
whatever behaviour a non-trivial derived class will implement. */ whatever behaviour a non-trivial derived class will implement. */
static PyObject * static PyObject *
IOBase_close(PyObject *self, PyObject *args) iobase_close(PyObject *self, PyObject *args)
{ {
PyObject *res; PyObject *res;
...@@ -260,14 +260,14 @@ _PyIOBase_finalize(PyObject *self) ...@@ -260,14 +260,14 @@ _PyIOBase_finalize(PyObject *self)
} }
static int static int
IOBase_traverse(IOBaseObject *self, visitproc visit, void *arg) iobase_traverse(iobase *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->dict); Py_VISIT(self->dict);
return 0; return 0;
} }
static int static int
IOBase_clear(IOBaseObject *self) iobase_clear(iobase *self)
{ {
if (_PyIOBase_finalize((PyObject *) self) < 0) if (_PyIOBase_finalize((PyObject *) self) < 0)
return -1; return -1;
...@@ -278,7 +278,7 @@ IOBase_clear(IOBaseObject *self) ...@@ -278,7 +278,7 @@ IOBase_clear(IOBaseObject *self)
/* Destructor */ /* Destructor */
static void static void
IOBase_dealloc(IOBaseObject *self) iobase_dealloc(iobase *self)
{ {
/* NOTE: since IOBaseObject has its own dict, Python-defined attributes /* NOTE: since IOBaseObject has its own dict, Python-defined attributes
are still available here for close() to use. are still available here for close() to use.
...@@ -301,20 +301,20 @@ IOBase_dealloc(IOBaseObject *self) ...@@ -301,20 +301,20 @@ IOBase_dealloc(IOBaseObject *self)
/* Inquiry methods */ /* Inquiry methods */
PyDoc_STRVAR(IOBase_seekable_doc, PyDoc_STRVAR(iobase_seekable_doc,
"Return whether object supports random access.\n" "Return whether object supports random access.\n"
"\n" "\n"
"If False, seek(), tell() and truncate() will raise IOError.\n" "If False, seek(), tell() and truncate() will raise IOError.\n"
"This method may need to do a test seek()."); "This method may need to do a test seek().");
static PyObject * static PyObject *
IOBase_seekable(PyObject *self, PyObject *args) iobase_seekable(PyObject *self, PyObject *args)
{ {
Py_RETURN_FALSE; Py_RETURN_FALSE;
} }
PyObject * PyObject *
_PyIOBase_checkSeekable(PyObject *self, PyObject *args) _PyIOBase_check_seekable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_seekable, NULL); PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_seekable, NULL);
if (res == NULL) if (res == NULL)
...@@ -330,20 +330,20 @@ _PyIOBase_checkSeekable(PyObject *self, PyObject *args) ...@@ -330,20 +330,20 @@ _PyIOBase_checkSeekable(PyObject *self, PyObject *args)
return res; return res;
} }
PyDoc_STRVAR(IOBase_readable_doc, PyDoc_STRVAR(iobase_readable_doc,
"Return whether object was opened for reading.\n" "Return whether object was opened for reading.\n"
"\n" "\n"
"If False, read() will raise IOError."); "If False, read() will raise IOError.");
static PyObject * static PyObject *
IOBase_readable(PyObject *self, PyObject *args) iobase_readable(PyObject *self, PyObject *args)
{ {
Py_RETURN_FALSE; Py_RETURN_FALSE;
} }
/* May be called with any object */ /* May be called with any object */
PyObject * PyObject *
_PyIOBase_checkReadable(PyObject *self, PyObject *args) _PyIOBase_check_readable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_readable, NULL); PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_readable, NULL);
if (res == NULL) if (res == NULL)
...@@ -359,20 +359,20 @@ _PyIOBase_checkReadable(PyObject *self, PyObject *args) ...@@ -359,20 +359,20 @@ _PyIOBase_checkReadable(PyObject *self, PyObject *args)
return res; return res;
} }
PyDoc_STRVAR(IOBase_writable_doc, PyDoc_STRVAR(iobase_writable_doc,
"Return whether object was opened for writing.\n" "Return whether object was opened for writing.\n"
"\n" "\n"
"If False, read() will raise IOError."); "If False, read() will raise IOError.");
static PyObject * static PyObject *
IOBase_writable(PyObject *self, PyObject *args) iobase_writable(PyObject *self, PyObject *args)
{ {
Py_RETURN_FALSE; Py_RETURN_FALSE;
} }
/* May be called with any object */ /* May be called with any object */
PyObject * PyObject *
_PyIOBase_checkWritable(PyObject *self, PyObject *args) _PyIOBase_check_writable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_writable, NULL); PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_writable, NULL);
if (res == NULL) if (res == NULL)
...@@ -391,9 +391,9 @@ _PyIOBase_checkWritable(PyObject *self, PyObject *args) ...@@ -391,9 +391,9 @@ _PyIOBase_checkWritable(PyObject *self, PyObject *args)
/* Context manager */ /* Context manager */
static PyObject * static PyObject *
IOBase_enter(PyObject *self, PyObject *args) iobase_enter(PyObject *self, PyObject *args)
{ {
if (_PyIOBase_checkClosed(self, Py_True) == NULL) if (_PyIOBase_check_closed(self, Py_True) == NULL)
return NULL; return NULL;
Py_INCREF(self); Py_INCREF(self);
...@@ -401,7 +401,7 @@ IOBase_enter(PyObject *self, PyObject *args) ...@@ -401,7 +401,7 @@ IOBase_enter(PyObject *self, PyObject *args)
} }
static PyObject * static PyObject *
IOBase_exit(PyObject *self, PyObject *args) iobase_exit(PyObject *self, PyObject *args)
{ {
return PyObject_CallMethodObjArgs(self, _PyIO_str_close, NULL); return PyObject_CallMethodObjArgs(self, _PyIO_str_close, NULL);
} }
...@@ -410,33 +410,33 @@ IOBase_exit(PyObject *self, PyObject *args) ...@@ -410,33 +410,33 @@ IOBase_exit(PyObject *self, PyObject *args)
/* XXX Should these be present even if unimplemented? */ /* XXX Should these be present even if unimplemented? */
PyDoc_STRVAR(IOBase_fileno_doc, PyDoc_STRVAR(iobase_fileno_doc,
"Returns underlying file descriptor if one exists.\n" "Returns underlying file descriptor if one exists.\n"
"\n" "\n"
"An IOError is raised if the IO object does not use a file descriptor.\n"); "An IOError is raised if the IO object does not use a file descriptor.\n");
static PyObject * static PyObject *
IOBase_fileno(PyObject *self, PyObject *args) iobase_fileno(PyObject *self, PyObject *args)
{ {
return IOBase_unsupported("fileno"); return iobase_unsupported("fileno");
} }
PyDoc_STRVAR(IOBase_isatty_doc, PyDoc_STRVAR(iobase_isatty_doc,
"Return whether this is an 'interactive' stream.\n" "Return whether this is an 'interactive' stream.\n"
"\n" "\n"
"Return False if it can't be determined.\n"); "Return False if it can't be determined.\n");
static PyObject * static PyObject *
IOBase_isatty(PyObject *self, PyObject *args) iobase_isatty(PyObject *self, PyObject *args)
{ {
if (_PyIOBase_checkClosed(self, Py_True) == NULL) if (_PyIOBase_check_closed(self, Py_True) == NULL)
return NULL; return NULL;
Py_RETURN_FALSE; Py_RETURN_FALSE;
} }
/* Readline(s) and writelines */ /* Readline(s) and writelines */
PyDoc_STRVAR(IOBase_readline_doc, PyDoc_STRVAR(iobase_readline_doc,
"Read and return a line from the stream.\n" "Read and return a line from the stream.\n"
"\n" "\n"
"If limit is specified, at most limit bytes will be read.\n" "If limit is specified, at most limit bytes will be read.\n"
...@@ -446,7 +446,7 @@ PyDoc_STRVAR(IOBase_readline_doc, ...@@ -446,7 +446,7 @@ PyDoc_STRVAR(IOBase_readline_doc,
"terminator(s) recognized.\n"); "terminator(s) recognized.\n");
static PyObject * static PyObject *
IOBase_readline(PyObject *self, PyObject *args) iobase_readline(PyObject *self, PyObject *args)
{ {
/* For backwards compatibility, a (slowish) readline(). */ /* For backwards compatibility, a (slowish) readline(). */
...@@ -541,9 +541,9 @@ IOBase_readline(PyObject *self, PyObject *args) ...@@ -541,9 +541,9 @@ IOBase_readline(PyObject *self, PyObject *args)
} }
static PyObject * static PyObject *
IOBase_iter(PyObject *self) iobase_iter(PyObject *self)
{ {
if (_PyIOBase_checkClosed(self, Py_True) == NULL) if (_PyIOBase_check_closed(self, Py_True) == NULL)
return NULL; return NULL;
Py_INCREF(self); Py_INCREF(self);
...@@ -551,7 +551,7 @@ IOBase_iter(PyObject *self) ...@@ -551,7 +551,7 @@ IOBase_iter(PyObject *self)
} }
static PyObject * static PyObject *
IOBase_iternext(PyObject *self) iobase_iternext(PyObject *self)
{ {
PyObject *line = PyObject_CallMethodObjArgs(self, _PyIO_str_readline, NULL); PyObject *line = PyObject_CallMethodObjArgs(self, _PyIO_str_readline, NULL);
...@@ -566,7 +566,7 @@ IOBase_iternext(PyObject *self) ...@@ -566,7 +566,7 @@ IOBase_iternext(PyObject *self)
return line; return line;
} }
PyDoc_STRVAR(IOBase_readlines_doc, PyDoc_STRVAR(iobase_readlines_doc,
"Return a list of lines from the stream.\n" "Return a list of lines from the stream.\n"
"\n" "\n"
"hint can be specified to control the number of lines read: no more\n" "hint can be specified to control the number of lines read: no more\n"
...@@ -574,7 +574,7 @@ PyDoc_STRVAR(IOBase_readlines_doc, ...@@ -574,7 +574,7 @@ PyDoc_STRVAR(IOBase_readlines_doc,
"lines so far exceeds hint."); "lines so far exceeds hint.");
static PyObject * static PyObject *
IOBase_readlines(PyObject *self, PyObject *args) iobase_readlines(PyObject *self, PyObject *args)
{ {
Py_ssize_t hint = -1, length = 0; Py_ssize_t hint = -1, length = 0;
PyObject *hintobj = Py_None, *result; PyObject *hintobj = Py_None, *result;
...@@ -631,7 +631,7 @@ IOBase_readlines(PyObject *self, PyObject *args) ...@@ -631,7 +631,7 @@ IOBase_readlines(PyObject *self, PyObject *args)
} }
static PyObject * static PyObject *
IOBase_writelines(PyObject *self, PyObject *args) iobase_writelines(PyObject *self, PyObject *args)
{ {
PyObject *lines, *iter, *res; PyObject *lines, *iter, *res;
...@@ -639,7 +639,7 @@ IOBase_writelines(PyObject *self, PyObject *args) ...@@ -639,7 +639,7 @@ IOBase_writelines(PyObject *self, PyObject *args)
return NULL; return NULL;
} }
if (_PyIOBase_checkClosed(self, Py_True) == NULL) if (_PyIOBase_check_closed(self, Py_True) == NULL)
return NULL; return NULL;
iter = PyObject_GetIter(lines); iter = PyObject_GetIter(lines);
...@@ -669,37 +669,37 @@ IOBase_writelines(PyObject *self, PyObject *args) ...@@ -669,37 +669,37 @@ IOBase_writelines(PyObject *self, PyObject *args)
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static PyMethodDef IOBase_methods[] = { static PyMethodDef iobase_methods[] = {
{"seek", IOBase_seek, METH_VARARGS, IOBase_seek_doc}, {"seek", iobase_seek, METH_VARARGS, iobase_seek_doc},
{"tell", IOBase_tell, METH_NOARGS, IOBase_tell_doc}, {"tell", iobase_tell, METH_NOARGS, iobase_tell_doc},
{"truncate", IOBase_truncate, METH_VARARGS, IOBase_truncate_doc}, {"truncate", iobase_truncate, METH_VARARGS, iobase_truncate_doc},
{"flush", IOBase_flush, METH_NOARGS, IOBase_flush_doc}, {"flush", iobase_flush, METH_NOARGS, iobase_flush_doc},
{"close", IOBase_close, METH_NOARGS, IOBase_close_doc}, {"close", iobase_close, METH_NOARGS, iobase_close_doc},
{"seekable", IOBase_seekable, METH_NOARGS, IOBase_seekable_doc}, {"seekable", iobase_seekable, METH_NOARGS, iobase_seekable_doc},
{"readable", IOBase_readable, METH_NOARGS, IOBase_readable_doc}, {"readable", iobase_readable, METH_NOARGS, iobase_readable_doc},
{"writable", IOBase_writable, METH_NOARGS, IOBase_writable_doc}, {"writable", iobase_writable, METH_NOARGS, iobase_writable_doc},
{"_checkClosed", _PyIOBase_checkClosed, METH_NOARGS}, {"_checkClosed", _PyIOBase_check_closed, METH_NOARGS},
{"_checkSeekable", _PyIOBase_checkSeekable, METH_NOARGS}, {"_checkSeekable", _PyIOBase_check_seekable, METH_NOARGS},
{"_checkReadable", _PyIOBase_checkReadable, METH_NOARGS}, {"_checkReadable", _PyIOBase_check_readable, METH_NOARGS},
{"_checkWritable", _PyIOBase_checkWritable, METH_NOARGS}, {"_checkWritable", _PyIOBase_check_writable, METH_NOARGS},
{"fileno", IOBase_fileno, METH_NOARGS, IOBase_fileno_doc}, {"fileno", iobase_fileno, METH_NOARGS, iobase_fileno_doc},
{"isatty", IOBase_isatty, METH_NOARGS, IOBase_isatty_doc}, {"isatty", iobase_isatty, METH_NOARGS, iobase_isatty_doc},
{"__enter__", IOBase_enter, METH_NOARGS}, {"__enter__", iobase_enter, METH_NOARGS},
{"__exit__", IOBase_exit, METH_VARARGS}, {"__exit__", iobase_exit, METH_VARARGS},
{"readline", IOBase_readline, METH_VARARGS, IOBase_readline_doc}, {"readline", iobase_readline, METH_VARARGS, iobase_readline_doc},
{"readlines", IOBase_readlines, METH_VARARGS, IOBase_readlines_doc}, {"readlines", iobase_readlines, METH_VARARGS, iobase_readlines_doc},
{"writelines", IOBase_writelines, METH_VARARGS}, {"writelines", iobase_writelines, METH_VARARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyGetSetDef IOBase_getset[] = { static PyGetSetDef iobase_getset[] = {
{"closed", (getter)IOBase_closed_get, NULL, NULL}, {"closed", (getter)iobase_closed_get, NULL, NULL},
{NULL} {NULL}
}; };
...@@ -707,9 +707,9 @@ static PyGetSetDef IOBase_getset[] = { ...@@ -707,9 +707,9 @@ static PyGetSetDef IOBase_getset[] = {
PyTypeObject PyIOBase_Type = { PyTypeObject PyIOBase_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io._IOBase", /*tp_name*/ "_io._IOBase", /*tp_name*/
sizeof(IOBaseObject), /*tp_basicsize*/ sizeof(iobase), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)IOBase_dealloc, /*tp_dealloc*/ (destructor)iobase_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
...@@ -726,21 +726,21 @@ PyTypeObject PyIOBase_Type = { ...@@ -726,21 +726,21 @@ PyTypeObject PyIOBase_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /*tp_flags*/ | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
IOBase_doc, /* tp_doc */ iobase_doc, /* tp_doc */
(traverseproc)IOBase_traverse, /* tp_traverse */ (traverseproc)iobase_traverse, /* tp_traverse */
(inquiry)IOBase_clear, /* tp_clear */ (inquiry)iobase_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(IOBaseObject, weakreflist), /* tp_weaklistoffset */ offsetof(iobase, weakreflist), /* tp_weaklistoffset */
IOBase_iter, /* tp_iter */ iobase_iter, /* tp_iter */
IOBase_iternext, /* tp_iternext */ iobase_iternext, /* tp_iternext */
IOBase_methods, /* tp_methods */ iobase_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
IOBase_getset, /* tp_getset */ iobase_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(IOBaseObject, dict), /* tp_dictoffset */ offsetof(iobase, dict), /* tp_dictoffset */
0, /* tp_init */ 0, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
...@@ -750,7 +750,7 @@ PyTypeObject PyIOBase_Type = { ...@@ -750,7 +750,7 @@ PyTypeObject PyIOBase_Type = {
/* /*
* RawIOBase class, Inherits from IOBase. * RawIOBase class, Inherits from IOBase.
*/ */
PyDoc_STRVAR(RawIOBase_doc, PyDoc_STRVAR(rawiobase_doc,
"Base class for raw binary I/O."); "Base class for raw binary I/O.");
/* /*
...@@ -766,7 +766,7 @@ PyDoc_STRVAR(RawIOBase_doc, ...@@ -766,7 +766,7 @@ PyDoc_STRVAR(RawIOBase_doc,
*/ */
static PyObject * static PyObject *
RawIOBase_read(PyObject *self, PyObject *args) rawiobase_read(PyObject *self, PyObject *args)
{ {
Py_ssize_t n = -1; Py_ssize_t n = -1;
PyObject *b, *res; PyObject *b, *res;
...@@ -803,11 +803,11 @@ RawIOBase_read(PyObject *self, PyObject *args) ...@@ -803,11 +803,11 @@ RawIOBase_read(PyObject *self, PyObject *args)
} }
PyDoc_STRVAR(RawIOBase_readall_doc, PyDoc_STRVAR(rawiobase_readall_doc,
"Read until EOF, using multiple read() call."); "Read until EOF, using multiple read() call.");
static PyObject * static PyObject *
RawIOBase_readall(PyObject *self, PyObject *args) rawiobase_readall(PyObject *self, PyObject *args)
{ {
int r; int r;
PyObject *chunks = PyList_New(0); PyObject *chunks = PyList_New(0);
...@@ -846,9 +846,9 @@ RawIOBase_readall(PyObject *self, PyObject *args) ...@@ -846,9 +846,9 @@ RawIOBase_readall(PyObject *self, PyObject *args)
return result; return result;
} }
static PyMethodDef RawIOBase_methods[] = { static PyMethodDef rawiobase_methods[] = {
{"read", RawIOBase_read, METH_VARARGS}, {"read", rawiobase_read, METH_VARARGS},
{"readall", RawIOBase_readall, METH_NOARGS, RawIOBase_readall_doc}, {"readall", rawiobase_readall, METH_NOARGS, rawiobase_readall_doc},
{NULL, NULL} {NULL, NULL}
}; };
...@@ -873,14 +873,14 @@ PyTypeObject PyRawIOBase_Type = { ...@@ -873,14 +873,14 @@ PyTypeObject PyRawIOBase_Type = {
0, /*tp_setattro*/ 0, /*tp_setattro*/
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
RawIOBase_doc, /* tp_doc */ rawiobase_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
0, /* tp_weaklistoffset */ 0, /* tp_weaklistoffset */
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
RawIOBase_methods, /* tp_methods */ rawiobase_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ 0, /* tp_getset */
&PyIOBase_Type, /* tp_base */ &PyIOBase_Type, /* tp_base */
......
...@@ -24,7 +24,7 @@ typedef struct { ...@@ -24,7 +24,7 @@ typedef struct {
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} StringIOObject; } stringio;
#define CHECK_INITIALIZED(self) \ #define CHECK_INITIALIZED(self) \
if (self->ok <= 0) { \ if (self->ok <= 0) { \
...@@ -51,7 +51,7 @@ PyDoc_STRVAR(stringio_doc, ...@@ -51,7 +51,7 @@ PyDoc_STRVAR(stringio_doc,
buffer of StringIO objects. The caller should ensure that the 'size' buffer of StringIO objects. The caller should ensure that the 'size'
argument is non-negative. Returns 0 on success, -1 otherwise. */ argument is non-negative. Returns 0 on success, -1 otherwise. */
static int static int
resize_buffer(StringIOObject *self, size_t size) resize_buffer(stringio *self, size_t size)
{ {
/* Here, unsigned types are used to avoid dealing with signed integer /* Here, unsigned types are used to avoid dealing with signed integer
overflow, which is undefined in C. */ overflow, which is undefined in C. */
...@@ -106,7 +106,7 @@ resize_buffer(StringIOObject *self, size_t size) ...@@ -106,7 +106,7 @@ resize_buffer(StringIOObject *self, size_t size)
/* Internal routine for writing a whole PyUnicode object to the buffer of a /* Internal routine for writing a whole PyUnicode object to the buffer of a
StringIO object. Returns 0 on success, or -1 on error. */ StringIO object. Returns 0 on success, or -1 on error. */
static Py_ssize_t static Py_ssize_t
write_str(StringIOObject *self, PyObject *obj) write_str(stringio *self, PyObject *obj)
{ {
Py_UNICODE *str; Py_UNICODE *str;
Py_ssize_t len; Py_ssize_t len;
...@@ -186,7 +186,7 @@ PyDoc_STRVAR(stringio_getvalue_doc, ...@@ -186,7 +186,7 @@ PyDoc_STRVAR(stringio_getvalue_doc,
"Retrieve the entire contents of the object."); "Retrieve the entire contents of the object.");
static PyObject * static PyObject *
stringio_getvalue(StringIOObject *self) stringio_getvalue(stringio *self)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
CHECK_CLOSED(self); CHECK_CLOSED(self);
...@@ -197,7 +197,7 @@ PyDoc_STRVAR(stringio_tell_doc, ...@@ -197,7 +197,7 @@ PyDoc_STRVAR(stringio_tell_doc,
"Tell the current file position."); "Tell the current file position.");
static PyObject * static PyObject *
stringio_tell(StringIOObject *self) stringio_tell(stringio *self)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
CHECK_CLOSED(self); CHECK_CLOSED(self);
...@@ -211,7 +211,7 @@ PyDoc_STRVAR(stringio_read_doc, ...@@ -211,7 +211,7 @@ PyDoc_STRVAR(stringio_read_doc,
"is reached. Return an empty string at EOF.\n"); "is reached. Return an empty string at EOF.\n");
static PyObject * static PyObject *
stringio_read(StringIOObject *self, PyObject *args) stringio_read(stringio *self, PyObject *args)
{ {
Py_ssize_t size, n; Py_ssize_t size, n;
Py_UNICODE *output; Py_UNICODE *output;
...@@ -252,7 +252,7 @@ stringio_read(StringIOObject *self, PyObject *args) ...@@ -252,7 +252,7 @@ stringio_read(StringIOObject *self, PyObject *args)
/* Internal helper, used by stringio_readline and stringio_iternext */ /* Internal helper, used by stringio_readline and stringio_iternext */
static PyObject * static PyObject *
_stringio_readline(StringIOObject *self, Py_ssize_t limit) _stringio_readline(stringio *self, Py_ssize_t limit)
{ {
Py_UNICODE *start, *end, old_char; Py_UNICODE *start, *end, old_char;
Py_ssize_t len, consumed; Py_ssize_t len, consumed;
...@@ -286,7 +286,7 @@ PyDoc_STRVAR(stringio_readline_doc, ...@@ -286,7 +286,7 @@ PyDoc_STRVAR(stringio_readline_doc,
"Returns an empty string if EOF is hit immediately.\n"); "Returns an empty string if EOF is hit immediately.\n");
static PyObject * static PyObject *
stringio_readline(StringIOObject *self, PyObject *args) stringio_readline(stringio *self, PyObject *args)
{ {
PyObject *arg = Py_None; PyObject *arg = Py_None;
Py_ssize_t limit = -1; Py_ssize_t limit = -1;
...@@ -310,7 +310,7 @@ stringio_readline(StringIOObject *self, PyObject *args) ...@@ -310,7 +310,7 @@ stringio_readline(StringIOObject *self, PyObject *args)
} }
static PyObject * static PyObject *
stringio_iternext(StringIOObject *self) stringio_iternext(stringio *self)
{ {
PyObject *line; PyObject *line;
...@@ -354,7 +354,7 @@ PyDoc_STRVAR(stringio_truncate_doc, ...@@ -354,7 +354,7 @@ PyDoc_STRVAR(stringio_truncate_doc,
"Returns the new absolute position.\n"); "Returns the new absolute position.\n");
static PyObject * static PyObject *
stringio_truncate(StringIOObject *self, PyObject *args) stringio_truncate(stringio *self, PyObject *args)
{ {
Py_ssize_t size; Py_ssize_t size;
PyObject *arg = Py_None; PyObject *arg = Py_None;
...@@ -405,7 +405,7 @@ PyDoc_STRVAR(stringio_seek_doc, ...@@ -405,7 +405,7 @@ PyDoc_STRVAR(stringio_seek_doc,
"Returns the new absolute position.\n"); "Returns the new absolute position.\n");
static PyObject * static PyObject *
stringio_seek(StringIOObject *self, PyObject *args) stringio_seek(stringio *self, PyObject *args)
{ {
Py_ssize_t pos; Py_ssize_t pos;
int mode = 0; int mode = 0;
...@@ -453,7 +453,7 @@ PyDoc_STRVAR(stringio_write_doc, ...@@ -453,7 +453,7 @@ PyDoc_STRVAR(stringio_write_doc,
"the length of the string.\n"); "the length of the string.\n");
static PyObject * static PyObject *
stringio_write(StringIOObject *self, PyObject *obj) stringio_write(stringio *self, PyObject *obj)
{ {
Py_ssize_t size; Py_ssize_t size;
...@@ -479,7 +479,7 @@ PyDoc_STRVAR(stringio_close_doc, ...@@ -479,7 +479,7 @@ PyDoc_STRVAR(stringio_close_doc,
"This method has no effect if the file is already closed.\n"); "This method has no effect if the file is already closed.\n");
static PyObject * static PyObject *
stringio_close(StringIOObject *self) stringio_close(stringio *self)
{ {
self->closed = 1; self->closed = 1;
/* Free up some memory */ /* Free up some memory */
...@@ -492,21 +492,21 @@ stringio_close(StringIOObject *self) ...@@ -492,21 +492,21 @@ stringio_close(StringIOObject *self)
} }
static int static int
stringio_traverse(StringIOObject *self, visitproc visit, void *arg) stringio_traverse(stringio *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->dict); Py_VISIT(self->dict);
return 0; return 0;
} }
static int static int
stringio_clear(StringIOObject *self) stringio_clear(stringio *self)
{ {
Py_CLEAR(self->dict); Py_CLEAR(self->dict);
return 0; return 0;
} }
static void static void
stringio_dealloc(StringIOObject *self) stringio_dealloc(stringio *self)
{ {
_PyObject_GC_UNTRACK(self); _PyObject_GC_UNTRACK(self);
Py_CLEAR(self->readnl); Py_CLEAR(self->readnl);
...@@ -522,10 +522,10 @@ stringio_dealloc(StringIOObject *self) ...@@ -522,10 +522,10 @@ stringio_dealloc(StringIOObject *self)
static PyObject * static PyObject *
stringio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) stringio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
StringIOObject *self; stringio *self;
assert(type != NULL && type->tp_alloc != NULL); assert(type != NULL && type->tp_alloc != NULL);
self = (StringIOObject *)type->tp_alloc(type, 0); self = (stringio *)type->tp_alloc(type, 0);
if (self == NULL) if (self == NULL)
return NULL; return NULL;
...@@ -542,7 +542,7 @@ stringio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -542,7 +542,7 @@ stringio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
} }
static int static int
stringio_init(StringIOObject *self, PyObject *args, PyObject *kwds) stringio_init(stringio *self, PyObject *args, PyObject *kwds)
{ {
char *kwlist[] = {"initial_value", "newline", NULL}; char *kwlist[] = {"initial_value", "newline", NULL};
PyObject *value = NULL; PyObject *value = NULL;
...@@ -625,28 +625,28 @@ stringio_init(StringIOObject *self, PyObject *args, PyObject *kwds) ...@@ -625,28 +625,28 @@ stringio_init(StringIOObject *self, PyObject *args, PyObject *kwds)
/* Properties and pseudo-properties */ /* Properties and pseudo-properties */
static PyObject * static PyObject *
stringio_seekable(StringIOObject *self, PyObject *args) stringio_seekable(stringio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
Py_RETURN_TRUE; Py_RETURN_TRUE;
} }
static PyObject * static PyObject *
stringio_readable(StringIOObject *self, PyObject *args) stringio_readable(stringio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
Py_RETURN_TRUE; Py_RETURN_TRUE;
} }
static PyObject * static PyObject *
stringio_writable(StringIOObject *self, PyObject *args) stringio_writable(stringio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
Py_RETURN_TRUE; Py_RETURN_TRUE;
} }
static PyObject * static PyObject *
stringio_buffer(StringIOObject *self, void *context) stringio_buffer(stringio *self, void *context)
{ {
PyErr_SetString(IO_STATE->unsupported_operation, PyErr_SetString(IO_STATE->unsupported_operation,
"buffer attribute is unsupported on type StringIO"); "buffer attribute is unsupported on type StringIO");
...@@ -654,14 +654,14 @@ stringio_buffer(StringIOObject *self, void *context) ...@@ -654,14 +654,14 @@ stringio_buffer(StringIOObject *self, void *context)
} }
static PyObject * static PyObject *
stringio_closed(StringIOObject *self, void *context) stringio_closed(stringio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyBool_FromLong(self->closed); return PyBool_FromLong(self->closed);
} }
static PyObject * static PyObject *
stringio_line_buffering(StringIOObject *self, void *context) stringio_line_buffering(stringio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
CHECK_CLOSED(self); CHECK_CLOSED(self);
...@@ -669,7 +669,7 @@ stringio_line_buffering(StringIOObject *self, void *context) ...@@ -669,7 +669,7 @@ stringio_line_buffering(StringIOObject *self, void *context)
} }
static PyObject * static PyObject *
stringio_newlines(StringIOObject *self, void *context) stringio_newlines(stringio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
CHECK_CLOSED(self); CHECK_CLOSED(self);
...@@ -711,7 +711,7 @@ static PyGetSetDef stringio_getset[] = { ...@@ -711,7 +711,7 @@ static PyGetSetDef stringio_getset[] = {
PyTypeObject PyStringIO_Type = { PyTypeObject PyStringIO_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.StringIO", /*tp_name*/ "_io.StringIO", /*tp_name*/
sizeof(StringIOObject), /*tp_basicsize*/ sizeof(stringio), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)stringio_dealloc, /*tp_dealloc*/ (destructor)stringio_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
...@@ -734,7 +734,7 @@ PyTypeObject PyStringIO_Type = { ...@@ -734,7 +734,7 @@ PyTypeObject PyStringIO_Type = {
(traverseproc)stringio_traverse, /*tp_traverse*/ (traverseproc)stringio_traverse, /*tp_traverse*/
(inquiry)stringio_clear, /*tp_clear*/ (inquiry)stringio_clear, /*tp_clear*/
0, /*tp_richcompare*/ 0, /*tp_richcompare*/
offsetof(StringIOObject, weakreflist), /*tp_weaklistoffset*/ offsetof(stringio, weakreflist), /*tp_weaklistoffset*/
0, /*tp_iter*/ 0, /*tp_iter*/
(iternextfunc)stringio_iternext, /*tp_iternext*/ (iternextfunc)stringio_iternext, /*tp_iternext*/
stringio_methods, /*tp_methods*/ stringio_methods, /*tp_methods*/
...@@ -744,7 +744,7 @@ PyTypeObject PyStringIO_Type = { ...@@ -744,7 +744,7 @@ PyTypeObject PyStringIO_Type = {
0, /*tp_dict*/ 0, /*tp_dict*/
0, /*tp_descr_get*/ 0, /*tp_descr_get*/
0, /*tp_descr_set*/ 0, /*tp_descr_set*/
offsetof(StringIOObject, dict), /*tp_dictoffset*/ offsetof(stringio, dict), /*tp_dictoffset*/
(initproc)stringio_init, /*tp_init*/ (initproc)stringio_init, /*tp_init*/
0, /*tp_alloc*/ 0, /*tp_alloc*/
stringio_new, /*tp_new*/ stringio_new, /*tp_new*/
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
/* TextIOBase */ /* TextIOBase */
PyDoc_STRVAR(TextIOBase_doc, PyDoc_STRVAR(textiobase_doc,
"Base class for text I/O.\n" "Base class for text I/O.\n"
"\n" "\n"
"This class provides a character and line based interface to stream\n" "This class provides a character and line based interface to stream\n"
...@@ -28,7 +28,7 @@ _unsupported(const char *message) ...@@ -28,7 +28,7 @@ _unsupported(const char *message)
return NULL; return NULL;
} }
PyDoc_STRVAR(TextIOBase_detach_doc, PyDoc_STRVAR(textiobase_detach_doc,
"Separate the underlying buffer from the TextIOBase and return it.\n" "Separate the underlying buffer from the TextIOBase and return it.\n"
"\n" "\n"
"After the underlying buffer has been detached, the TextIO is in an\n" "After the underlying buffer has been detached, the TextIO is in an\n"
...@@ -36,12 +36,12 @@ PyDoc_STRVAR(TextIOBase_detach_doc, ...@@ -36,12 +36,12 @@ PyDoc_STRVAR(TextIOBase_detach_doc,
); );
static PyObject * static PyObject *
TextIOBase_detach(PyObject *self) textiobase_detach(PyObject *self)
{ {
return _unsupported("detach"); return _unsupported("detach");
} }
PyDoc_STRVAR(TextIOBase_read_doc, PyDoc_STRVAR(textiobase_read_doc,
"Read at most n characters from stream.\n" "Read at most n characters from stream.\n"
"\n" "\n"
"Read from underlying buffer until we have n characters or we hit EOF.\n" "Read from underlying buffer until we have n characters or we hit EOF.\n"
...@@ -49,48 +49,48 @@ PyDoc_STRVAR(TextIOBase_read_doc, ...@@ -49,48 +49,48 @@ PyDoc_STRVAR(TextIOBase_read_doc,
); );
static PyObject * static PyObject *
TextIOBase_read(PyObject *self, PyObject *args) textiobase_read(PyObject *self, PyObject *args)
{ {
return _unsupported("read"); return _unsupported("read");
} }
PyDoc_STRVAR(TextIOBase_readline_doc, PyDoc_STRVAR(textiobase_readline_doc,
"Read until newline or EOF.\n" "Read until newline or EOF.\n"
"\n" "\n"
"Returns an empty string if EOF is hit immediately.\n" "Returns an empty string if EOF is hit immediately.\n"
); );
static PyObject * static PyObject *
TextIOBase_readline(PyObject *self, PyObject *args) textiobase_readline(PyObject *self, PyObject *args)
{ {
return _unsupported("readline"); return _unsupported("readline");
} }
PyDoc_STRVAR(TextIOBase_write_doc, PyDoc_STRVAR(textiobase_write_doc,
"Write string to stream.\n" "Write string to stream.\n"
"Returns the number of characters written (which is always equal to\n" "Returns the number of characters written (which is always equal to\n"
"the length of the string).\n" "the length of the string).\n"
); );
static PyObject * static PyObject *
TextIOBase_write(PyObject *self, PyObject *args) textiobase_write(PyObject *self, PyObject *args)
{ {
return _unsupported("write"); return _unsupported("write");
} }
PyDoc_STRVAR(TextIOBase_encoding_doc, PyDoc_STRVAR(textiobase_encoding_doc,
"Encoding of the text stream.\n" "Encoding of the text stream.\n"
"\n" "\n"
"Subclasses should override.\n" "Subclasses should override.\n"
); );
static PyObject * static PyObject *
TextIOBase_encoding_get(PyObject *self, void *context) textiobase_encoding_get(PyObject *self, void *context)
{ {
Py_RETURN_NONE; Py_RETURN_NONE;
} }
PyDoc_STRVAR(TextIOBase_newlines_doc, PyDoc_STRVAR(textiobase_newlines_doc,
"Line endings translated so far.\n" "Line endings translated so far.\n"
"\n" "\n"
"Only line endings translated during reading are considered.\n" "Only line endings translated during reading are considered.\n"
...@@ -99,36 +99,36 @@ PyDoc_STRVAR(TextIOBase_newlines_doc, ...@@ -99,36 +99,36 @@ PyDoc_STRVAR(TextIOBase_newlines_doc,
); );
static PyObject * static PyObject *
TextIOBase_newlines_get(PyObject *self, void *context) textiobase_newlines_get(PyObject *self, void *context)
{ {
Py_RETURN_NONE; Py_RETURN_NONE;
} }
PyDoc_STRVAR(TextIOBase_errors_doc, PyDoc_STRVAR(textiobase_errors_doc,
"The error setting of the decoder or encoder.\n" "The error setting of the decoder or encoder.\n"
"\n" "\n"
"Subclasses should override.\n" "Subclasses should override.\n"
); );
static PyObject * static PyObject *
TextIOBase_errors_get(PyObject *self, void *context) textiobase_errors_get(PyObject *self, void *context)
{ {
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static PyMethodDef TextIOBase_methods[] = { static PyMethodDef textiobase_methods[] = {
{"detach", (PyCFunction)TextIOBase_detach, METH_NOARGS, TextIOBase_detach_doc}, {"detach", (PyCFunction)textiobase_detach, METH_NOARGS, textiobase_detach_doc},
{"read", TextIOBase_read, METH_VARARGS, TextIOBase_read_doc}, {"read", textiobase_read, METH_VARARGS, textiobase_read_doc},
{"readline", TextIOBase_readline, METH_VARARGS, TextIOBase_readline_doc}, {"readline", textiobase_readline, METH_VARARGS, textiobase_readline_doc},
{"write", TextIOBase_write, METH_VARARGS, TextIOBase_write_doc}, {"write", textiobase_write, METH_VARARGS, textiobase_write_doc},
{NULL, NULL} {NULL, NULL}
}; };
static PyGetSetDef TextIOBase_getset[] = { static PyGetSetDef textiobase_getset[] = {
{"encoding", (getter)TextIOBase_encoding_get, NULL, TextIOBase_encoding_doc}, {"encoding", (getter)textiobase_encoding_get, NULL, textiobase_encoding_doc},
{"newlines", (getter)TextIOBase_newlines_get, NULL, TextIOBase_newlines_doc}, {"newlines", (getter)textiobase_newlines_get, NULL, textiobase_newlines_doc},
{"errors", (getter)TextIOBase_errors_get, NULL, TextIOBase_errors_doc}, {"errors", (getter)textiobase_errors_get, NULL, textiobase_errors_doc},
{NULL} {NULL}
}; };
...@@ -153,16 +153,16 @@ PyTypeObject PyTextIOBase_Type = { ...@@ -153,16 +153,16 @@ PyTypeObject PyTextIOBase_Type = {
0, /*tp_setattro*/ 0, /*tp_setattro*/
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
TextIOBase_doc, /* tp_doc */ textiobase_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
0, /* tp_weaklistoffset */ 0, /* tp_weaklistoffset */
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
TextIOBase_methods, /* tp_methods */ textiobase_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
TextIOBase_getset, /* tp_getset */ textiobase_getset, /* tp_getset */
&PyIOBase_Type, /* tp_base */ &PyIOBase_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
...@@ -176,7 +176,7 @@ PyTypeObject PyTextIOBase_Type = { ...@@ -176,7 +176,7 @@ PyTypeObject PyTextIOBase_Type = {
/* IncrementalNewlineDecoder */ /* IncrementalNewlineDecoder */
PyDoc_STRVAR(IncrementalNewlineDecoder_doc, PyDoc_STRVAR(incrementalnewlinedecoder_doc,
"Codec used when reading a file in universal newlines mode. It wraps\n" "Codec used when reading a file in universal newlines mode. It wraps\n"
"another incremental decoder, translating \\r\\n and \\r into \\n. It also\n" "another incremental decoder, translating \\r\\n and \\r into \\n. It also\n"
"records the types of newlines encountered. When used with\n" "records the types of newlines encountered. When used with\n"
...@@ -193,10 +193,10 @@ typedef struct { ...@@ -193,10 +193,10 @@ typedef struct {
int pendingcr:1; int pendingcr:1;
int translate:1; int translate:1;
unsigned int seennl:3; unsigned int seennl:3;
} PyNewLineDecoderObject; } nldecoder_object;
static int static int
IncrementalNewlineDecoder_init(PyNewLineDecoderObject *self, incrementalnewlinedecoder_init(nldecoder_object *self,
PyObject *args, PyObject *kwds) PyObject *args, PyObject *kwds)
{ {
PyObject *decoder; PyObject *decoder;
...@@ -229,7 +229,7 @@ IncrementalNewlineDecoder_init(PyNewLineDecoderObject *self, ...@@ -229,7 +229,7 @@ IncrementalNewlineDecoder_init(PyNewLineDecoderObject *self,
} }
static void static void
IncrementalNewlineDecoder_dealloc(PyNewLineDecoderObject *self) incrementalnewlinedecoder_dealloc(nldecoder_object *self)
{ {
Py_CLEAR(self->decoder); Py_CLEAR(self->decoder);
Py_CLEAR(self->errors); Py_CLEAR(self->errors);
...@@ -247,7 +247,7 @@ _PyIncrementalNewlineDecoder_decode(PyObject *_self, ...@@ -247,7 +247,7 @@ _PyIncrementalNewlineDecoder_decode(PyObject *_self,
{ {
PyObject *output; PyObject *output;
Py_ssize_t output_len; Py_ssize_t output_len;
PyNewLineDecoderObject *self = (PyNewLineDecoderObject *) _self; nldecoder_object *self = (nldecoder_object *) _self;
if (self->decoder == NULL) { if (self->decoder == NULL) {
PyErr_SetString(PyExc_ValueError, PyErr_SetString(PyExc_ValueError,
...@@ -460,7 +460,7 @@ _PyIncrementalNewlineDecoder_decode(PyObject *_self, ...@@ -460,7 +460,7 @@ _PyIncrementalNewlineDecoder_decode(PyObject *_self,
} }
static PyObject * static PyObject *
IncrementalNewlineDecoder_decode(PyNewLineDecoderObject *self, incrementalnewlinedecoder_decode(nldecoder_object *self,
PyObject *args, PyObject *kwds) PyObject *args, PyObject *kwds)
{ {
char *kwlist[] = {"input", "final", NULL}; char *kwlist[] = {"input", "final", NULL};
...@@ -474,7 +474,7 @@ IncrementalNewlineDecoder_decode(PyNewLineDecoderObject *self, ...@@ -474,7 +474,7 @@ IncrementalNewlineDecoder_decode(PyNewLineDecoderObject *self,
} }
static PyObject * static PyObject *
IncrementalNewlineDecoder_getstate(PyNewLineDecoderObject *self, PyObject *args) incrementalnewlinedecoder_getstate(nldecoder_object *self, PyObject *args)
{ {
PyObject *buffer; PyObject *buffer;
unsigned PY_LONG_LONG flag; unsigned PY_LONG_LONG flag;
...@@ -502,7 +502,7 @@ IncrementalNewlineDecoder_getstate(PyNewLineDecoderObject *self, PyObject *args) ...@@ -502,7 +502,7 @@ IncrementalNewlineDecoder_getstate(PyNewLineDecoderObject *self, PyObject *args)
} }
static PyObject * static PyObject *
IncrementalNewlineDecoder_setstate(PyNewLineDecoderObject *self, PyObject *state) incrementalnewlinedecoder_setstate(nldecoder_object *self, PyObject *state)
{ {
PyObject *buffer; PyObject *buffer;
unsigned PY_LONG_LONG flag; unsigned PY_LONG_LONG flag;
...@@ -521,7 +521,7 @@ IncrementalNewlineDecoder_setstate(PyNewLineDecoderObject *self, PyObject *state ...@@ -521,7 +521,7 @@ IncrementalNewlineDecoder_setstate(PyNewLineDecoderObject *self, PyObject *state
} }
static PyObject * static PyObject *
IncrementalNewlineDecoder_reset(PyNewLineDecoderObject *self, PyObject *args) incrementalnewlinedecoder_reset(nldecoder_object *self, PyObject *args)
{ {
self->seennl = 0; self->seennl = 0;
self->pendingcr = 0; self->pendingcr = 0;
...@@ -532,7 +532,7 @@ IncrementalNewlineDecoder_reset(PyNewLineDecoderObject *self, PyObject *args) ...@@ -532,7 +532,7 @@ IncrementalNewlineDecoder_reset(PyNewLineDecoderObject *self, PyObject *args)
} }
static PyObject * static PyObject *
IncrementalNewlineDecoder_newlines_get(PyNewLineDecoderObject *self, void *context) incrementalnewlinedecoder_newlines_get(nldecoder_object *self, void *context)
{ {
switch (self->seennl) { switch (self->seennl) {
case SEEN_CR: case SEEN_CR:
...@@ -556,25 +556,25 @@ IncrementalNewlineDecoder_newlines_get(PyNewLineDecoderObject *self, void *conte ...@@ -556,25 +556,25 @@ IncrementalNewlineDecoder_newlines_get(PyNewLineDecoderObject *self, void *conte
} }
static PyMethodDef IncrementalNewlineDecoder_methods[] = { static PyMethodDef incrementalnewlinedecoder_methods[] = {
{"decode", (PyCFunction)IncrementalNewlineDecoder_decode, METH_VARARGS|METH_KEYWORDS}, {"decode", (PyCFunction)incrementalnewlinedecoder_decode, METH_VARARGS|METH_KEYWORDS},
{"getstate", (PyCFunction)IncrementalNewlineDecoder_getstate, METH_NOARGS}, {"getstate", (PyCFunction)incrementalnewlinedecoder_getstate, METH_NOARGS},
{"setstate", (PyCFunction)IncrementalNewlineDecoder_setstate, METH_O}, {"setstate", (PyCFunction)incrementalnewlinedecoder_setstate, METH_O},
{"reset", (PyCFunction)IncrementalNewlineDecoder_reset, METH_NOARGS}, {"reset", (PyCFunction)incrementalnewlinedecoder_reset, METH_NOARGS},
{NULL} {NULL}
}; };
static PyGetSetDef IncrementalNewlineDecoder_getset[] = { static PyGetSetDef incrementalnewlinedecoder_getset[] = {
{"newlines", (getter)IncrementalNewlineDecoder_newlines_get, NULL, NULL}, {"newlines", (getter)incrementalnewlinedecoder_newlines_get, NULL, NULL},
{NULL} {NULL}
}; };
PyTypeObject PyIncrementalNewlineDecoder_Type = { PyTypeObject PyIncrementalNewlineDecoder_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.IncrementalNewlineDecoder", /*tp_name*/ "_io.IncrementalNewlineDecoder", /*tp_name*/
sizeof(PyNewLineDecoderObject), /*tp_basicsize*/ sizeof(nldecoder_object), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)IncrementalNewlineDecoder_dealloc, /*tp_dealloc*/ (destructor)incrementalnewlinedecoder_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
...@@ -590,22 +590,22 @@ PyTypeObject PyIncrementalNewlineDecoder_Type = { ...@@ -590,22 +590,22 @@ PyTypeObject PyIncrementalNewlineDecoder_Type = {
0, /*tp_setattro*/ 0, /*tp_setattro*/
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
IncrementalNewlineDecoder_doc, /* tp_doc */ incrementalnewlinedecoder_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
0, /*tp_weaklistoffset*/ 0, /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
IncrementalNewlineDecoder_methods, /* tp_methods */ incrementalnewlinedecoder_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
IncrementalNewlineDecoder_getset, /* tp_getset */ incrementalnewlinedecoder_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)IncrementalNewlineDecoder_init, /* tp_init */ (initproc)incrementalnewlinedecoder_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
...@@ -613,7 +613,7 @@ PyTypeObject PyIncrementalNewlineDecoder_Type = { ...@@ -613,7 +613,7 @@ PyTypeObject PyIncrementalNewlineDecoder_Type = {
/* TextIOWrapper */ /* TextIOWrapper */
PyDoc_STRVAR(TextIOWrapper_doc, PyDoc_STRVAR(textiowrapper_doc,
"Character and line based layer over a BufferedIOBase object, buffer.\n" "Character and line based layer over a BufferedIOBase object, buffer.\n"
"\n" "\n"
"encoding gives the name of the encoding that the stream will be\n" "encoding gives the name of the encoding that the stream will be\n"
...@@ -689,14 +689,14 @@ typedef struct ...@@ -689,14 +689,14 @@ typedef struct
PyObject *weakreflist; PyObject *weakreflist;
PyObject *dict; PyObject *dict;
} PyTextIOWrapperObject; } textio;
/* A couple of specialized cases in order to bypass the slow incremental /* A couple of specialized cases in order to bypass the slow incremental
encoding methods for the most popular encodings. */ encoding methods for the most popular encodings. */
static PyObject * static PyObject *
ascii_encode(PyTextIOWrapperObject *self, PyObject *text) ascii_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeASCII(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeASCII(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -704,7 +704,7 @@ ascii_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -704,7 +704,7 @@ ascii_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf16be_encode(PyTextIOWrapperObject *self, PyObject *text) utf16be_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -712,7 +712,7 @@ utf16be_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -712,7 +712,7 @@ utf16be_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf16le_encode(PyTextIOWrapperObject *self, PyObject *text) utf16le_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -720,7 +720,7 @@ utf16le_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -720,7 +720,7 @@ utf16le_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf16_encode(PyTextIOWrapperObject *self, PyObject *text) utf16_encode(textio *self, PyObject *text)
{ {
if (!self->encoding_start_of_stream) { if (!self->encoding_start_of_stream) {
/* Skip the BOM and use native byte ordering */ /* Skip the BOM and use native byte ordering */
...@@ -736,7 +736,7 @@ utf16_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -736,7 +736,7 @@ utf16_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf32be_encode(PyTextIOWrapperObject *self, PyObject *text) utf32be_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -744,7 +744,7 @@ utf32be_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -744,7 +744,7 @@ utf32be_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf32le_encode(PyTextIOWrapperObject *self, PyObject *text) utf32le_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -752,7 +752,7 @@ utf32le_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -752,7 +752,7 @@ utf32le_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf32_encode(PyTextIOWrapperObject *self, PyObject *text) utf32_encode(textio *self, PyObject *text)
{ {
if (!self->encoding_start_of_stream) { if (!self->encoding_start_of_stream) {
/* Skip the BOM and use native byte ordering */ /* Skip the BOM and use native byte ordering */
...@@ -768,7 +768,7 @@ utf32_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -768,7 +768,7 @@ utf32_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
utf8_encode(PyTextIOWrapperObject *self, PyObject *text) utf8_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -776,7 +776,7 @@ utf8_encode(PyTextIOWrapperObject *self, PyObject *text) ...@@ -776,7 +776,7 @@ utf8_encode(PyTextIOWrapperObject *self, PyObject *text)
} }
static PyObject * static PyObject *
latin1_encode(PyTextIOWrapperObject *self, PyObject *text) latin1_encode(textio *self, PyObject *text)
{ {
return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(text), return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(text),
PyUnicode_GET_SIZE(text), PyUnicode_GET_SIZE(text),
...@@ -805,7 +805,7 @@ static encodefuncentry encodefuncs[] = { ...@@ -805,7 +805,7 @@ static encodefuncentry encodefuncs[] = {
static int static int
TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds) textiowrapper_init(textio *self, PyObject *args, PyObject *kwds)
{ {
char *kwlist[] = {"buffer", "encoding", "errors", char *kwlist[] = {"buffer", "encoding", "errors",
"newline", "line_buffering", "newline", "line_buffering",
...@@ -1068,7 +1068,7 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds) ...@@ -1068,7 +1068,7 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds)
} }
static int static int
_TextIOWrapper_clear(PyTextIOWrapperObject *self) _textiowrapper_clear(textio *self)
{ {
if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0) if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
return -1; return -1;
...@@ -1087,9 +1087,9 @@ _TextIOWrapper_clear(PyTextIOWrapperObject *self) ...@@ -1087,9 +1087,9 @@ _TextIOWrapper_clear(PyTextIOWrapperObject *self)
} }
static void static void
TextIOWrapper_dealloc(PyTextIOWrapperObject *self) textiowrapper_dealloc(textio *self)
{ {
if (_TextIOWrapper_clear(self) < 0) if (_textiowrapper_clear(self) < 0)
return; return;
_PyObject_GC_UNTRACK(self); _PyObject_GC_UNTRACK(self);
if (self->weakreflist != NULL) if (self->weakreflist != NULL)
...@@ -1099,7 +1099,7 @@ TextIOWrapper_dealloc(PyTextIOWrapperObject *self) ...@@ -1099,7 +1099,7 @@ TextIOWrapper_dealloc(PyTextIOWrapperObject *self)
} }
static int static int
TextIOWrapper_traverse(PyTextIOWrapperObject *self, visitproc visit, void *arg) textiowrapper_traverse(textio *self, visitproc visit, void *arg)
{ {
Py_VISIT(self->buffer); Py_VISIT(self->buffer);
Py_VISIT(self->encoding); Py_VISIT(self->encoding);
...@@ -1117,16 +1117,16 @@ TextIOWrapper_traverse(PyTextIOWrapperObject *self, visitproc visit, void *arg) ...@@ -1117,16 +1117,16 @@ TextIOWrapper_traverse(PyTextIOWrapperObject *self, visitproc visit, void *arg)
} }
static int static int
TextIOWrapper_clear(PyTextIOWrapperObject *self) textiowrapper_clear(textio *self)
{ {
if (_TextIOWrapper_clear(self) < 0) if (_textiowrapper_clear(self) < 0)
return -1; return -1;
Py_CLEAR(self->dict); Py_CLEAR(self->dict);
return 0; return 0;
} }
static PyObject * static PyObject *
TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context); textiowrapper_closed_get(textio *self, void *context);
/* This macro takes some shortcuts to make the common case faster. */ /* This macro takes some shortcuts to make the common case faster. */
#define CHECK_CLOSED(self) \ #define CHECK_CLOSED(self) \
...@@ -1137,7 +1137,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context); ...@@ -1137,7 +1137,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context);
if (self->raw != NULL) \ if (self->raw != NULL) \
r = _PyFileIO_closed(self->raw); \ r = _PyFileIO_closed(self->raw); \
else { \ else { \
_res = TextIOWrapper_closed_get(self, NULL); \ _res = textiowrapper_closed_get(self, NULL); \
if (_res == NULL) \ if (_res == NULL) \
return NULL; \ return NULL; \
r = PyObject_IsTrue(_res); \ r = PyObject_IsTrue(_res); \
...@@ -1151,7 +1151,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context); ...@@ -1151,7 +1151,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context);
return NULL; \ return NULL; \
} \ } \
} \ } \
else if (_PyIOBase_checkClosed((PyObject *)self, Py_True) == NULL) \ else if (_PyIOBase_check_closed((PyObject *)self, Py_True) == NULL) \
return NULL; \ return NULL; \
} while (0) } while (0)
...@@ -1181,7 +1181,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context); ...@@ -1181,7 +1181,7 @@ TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context);
static PyObject * static PyObject *
TextIOWrapper_detach(PyTextIOWrapperObject *self) textiowrapper_detach(textio *self)
{ {
PyObject *buffer, *res; PyObject *buffer, *res;
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
...@@ -1211,7 +1211,7 @@ findchar(const Py_UNICODE *s, Py_ssize_t size, Py_UNICODE ch) ...@@ -1211,7 +1211,7 @@ findchar(const Py_UNICODE *s, Py_ssize_t size, Py_UNICODE ch)
/* Flush the internal write buffer. This doesn't explicitly flush the /* Flush the internal write buffer. This doesn't explicitly flush the
underlying buffered object, though. */ underlying buffered object, though. */
static int static int
_TextIOWrapper_writeflush(PyTextIOWrapperObject *self) _textiowrapper_writeflush(textio *self)
{ {
PyObject *b, *ret; PyObject *b, *ret;
...@@ -1232,7 +1232,7 @@ _TextIOWrapper_writeflush(PyTextIOWrapperObject *self) ...@@ -1232,7 +1232,7 @@ _TextIOWrapper_writeflush(PyTextIOWrapperObject *self)
} }
static PyObject * static PyObject *
TextIOWrapper_write(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_write(textio *self, PyObject *args)
{ {
PyObject *ret; PyObject *ret;
PyObject *text; /* owned reference */ PyObject *text; /* owned reference */
...@@ -1305,7 +1305,7 @@ TextIOWrapper_write(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1305,7 +1305,7 @@ TextIOWrapper_write(PyTextIOWrapperObject *self, PyObject *args)
self->pending_bytes_count += PyBytes_GET_SIZE(b); self->pending_bytes_count += PyBytes_GET_SIZE(b);
Py_DECREF(b); Py_DECREF(b);
if (self->pending_bytes_count > self->chunk_size || needflush) { if (self->pending_bytes_count > self->chunk_size || needflush) {
if (_TextIOWrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
} }
...@@ -1331,7 +1331,7 @@ TextIOWrapper_write(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1331,7 +1331,7 @@ TextIOWrapper_write(PyTextIOWrapperObject *self, PyObject *args)
/* Steal a reference to chars and store it in the decoded_char buffer; /* Steal a reference to chars and store it in the decoded_char buffer;
*/ */
static void static void
TextIOWrapper_set_decoded_chars(PyTextIOWrapperObject *self, PyObject *chars) textiowrapper_set_decoded_chars(textio *self, PyObject *chars)
{ {
Py_CLEAR(self->decoded_chars); Py_CLEAR(self->decoded_chars);
self->decoded_chars = chars; self->decoded_chars = chars;
...@@ -1339,7 +1339,7 @@ TextIOWrapper_set_decoded_chars(PyTextIOWrapperObject *self, PyObject *chars) ...@@ -1339,7 +1339,7 @@ TextIOWrapper_set_decoded_chars(PyTextIOWrapperObject *self, PyObject *chars)
} }
static PyObject * static PyObject *
TextIOWrapper_get_decoded_chars(PyTextIOWrapperObject *self, Py_ssize_t n) textiowrapper_get_decoded_chars(textio *self, Py_ssize_t n)
{ {
PyObject *chars; PyObject *chars;
Py_ssize_t avail; Py_ssize_t avail;
...@@ -1374,7 +1374,7 @@ TextIOWrapper_get_decoded_chars(PyTextIOWrapperObject *self, Py_ssize_t n) ...@@ -1374,7 +1374,7 @@ TextIOWrapper_get_decoded_chars(PyTextIOWrapperObject *self, Py_ssize_t n)
/* Read and decode the next chunk of data from the BufferedReader. /* Read and decode the next chunk of data from the BufferedReader.
*/ */
static int static int
TextIOWrapper_read_chunk(PyTextIOWrapperObject *self) textiowrapper_read_chunk(textio *self)
{ {
PyObject *dec_buffer = NULL; PyObject *dec_buffer = NULL;
PyObject *dec_flags = NULL; PyObject *dec_flags = NULL;
...@@ -1439,7 +1439,7 @@ TextIOWrapper_read_chunk(PyTextIOWrapperObject *self) ...@@ -1439,7 +1439,7 @@ TextIOWrapper_read_chunk(PyTextIOWrapperObject *self)
/* TODO sanity check: isinstance(decoded_chars, unicode) */ /* TODO sanity check: isinstance(decoded_chars, unicode) */
if (decoded_chars == NULL) if (decoded_chars == NULL)
goto fail; goto fail;
TextIOWrapper_set_decoded_chars(self, decoded_chars); textiowrapper_set_decoded_chars(self, decoded_chars);
if (PyUnicode_GET_SIZE(decoded_chars) > 0) if (PyUnicode_GET_SIZE(decoded_chars) > 0)
eof = 0; eof = 0;
...@@ -1467,7 +1467,7 @@ TextIOWrapper_read_chunk(PyTextIOWrapperObject *self) ...@@ -1467,7 +1467,7 @@ TextIOWrapper_read_chunk(PyTextIOWrapperObject *self)
} }
static PyObject * static PyObject *
TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_read(textio *self, PyObject *args)
{ {
Py_ssize_t n = -1; Py_ssize_t n = -1;
PyObject *result = NULL, *chunks = NULL; PyObject *result = NULL, *chunks = NULL;
...@@ -1484,7 +1484,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1484,7 +1484,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args)
return NULL; return NULL;
} }
if (_TextIOWrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
if (n < 0) { if (n < 0) {
...@@ -1499,7 +1499,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1499,7 +1499,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args)
if (decoded == NULL) if (decoded == NULL)
goto fail; goto fail;
result = TextIOWrapper_get_decoded_chars(self, -1); result = textiowrapper_get_decoded_chars(self, -1);
if (result == NULL) { if (result == NULL) {
Py_DECREF(decoded); Py_DECREF(decoded);
...@@ -1517,14 +1517,14 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1517,14 +1517,14 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args)
int res = 1; int res = 1;
Py_ssize_t remaining = n; Py_ssize_t remaining = n;
result = TextIOWrapper_get_decoded_chars(self, n); result = textiowrapper_get_decoded_chars(self, n);
if (result == NULL) if (result == NULL)
goto fail; goto fail;
remaining -= PyUnicode_GET_SIZE(result); remaining -= PyUnicode_GET_SIZE(result);
/* Keep reading chunks until we have n characters to return */ /* Keep reading chunks until we have n characters to return */
while (remaining > 0) { while (remaining > 0) {
res = TextIOWrapper_read_chunk(self); res = textiowrapper_read_chunk(self);
if (res < 0) if (res < 0)
goto fail; goto fail;
if (res == 0) /* EOF */ if (res == 0) /* EOF */
...@@ -1537,7 +1537,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1537,7 +1537,7 @@ TextIOWrapper_read(PyTextIOWrapperObject *self, PyObject *args)
if (PyList_Append(chunks, result) < 0) if (PyList_Append(chunks, result) < 0)
goto fail; goto fail;
Py_DECREF(result); Py_DECREF(result);
result = TextIOWrapper_get_decoded_chars(self, remaining); result = textiowrapper_get_decoded_chars(self, remaining);
if (result == NULL) if (result == NULL)
goto fail; goto fail;
remaining -= PyUnicode_GET_SIZE(result); remaining -= PyUnicode_GET_SIZE(result);
...@@ -1662,7 +1662,7 @@ _PyIO_find_line_ending( ...@@ -1662,7 +1662,7 @@ _PyIO_find_line_ending(
} }
static PyObject * static PyObject *
_TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) _textiowrapper_readline(textio *self, Py_ssize_t limit)
{ {
PyObject *line = NULL, *chunks = NULL, *remaining = NULL; PyObject *line = NULL, *chunks = NULL, *remaining = NULL;
Py_ssize_t start, endpos, chunked, offset_to_buffer; Py_ssize_t start, endpos, chunked, offset_to_buffer;
...@@ -1670,7 +1670,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) ...@@ -1670,7 +1670,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit)
CHECK_CLOSED(self); CHECK_CLOSED(self);
if (_TextIOWrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
chunked = 0; chunked = 0;
...@@ -1684,7 +1684,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) ...@@ -1684,7 +1684,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit)
res = 1; res = 1;
while (!self->decoded_chars || while (!self->decoded_chars ||
!PyUnicode_GET_SIZE(self->decoded_chars)) { !PyUnicode_GET_SIZE(self->decoded_chars)) {
res = TextIOWrapper_read_chunk(self); res = textiowrapper_read_chunk(self);
if (res < 0) if (res < 0)
goto error; goto error;
if (res == 0) if (res == 0)
...@@ -1692,7 +1692,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) ...@@ -1692,7 +1692,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit)
} }
if (res == 0) { if (res == 0) {
/* end of file */ /* end of file */
TextIOWrapper_set_decoded_chars(self, NULL); textiowrapper_set_decoded_chars(self, NULL);
Py_CLEAR(self->snapshot); Py_CLEAR(self->snapshot);
start = endpos = offset_to_buffer = 0; start = endpos = offset_to_buffer = 0;
break; break;
...@@ -1763,7 +1763,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) ...@@ -1763,7 +1763,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit)
} }
Py_CLEAR(line); Py_CLEAR(line);
/* We have consumed the buffer */ /* We have consumed the buffer */
TextIOWrapper_set_decoded_chars(self, NULL); textiowrapper_set_decoded_chars(self, NULL);
} }
if (line != NULL) { if (line != NULL) {
...@@ -1816,7 +1816,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit) ...@@ -1816,7 +1816,7 @@ _TextIOWrapper_readline(PyTextIOWrapperObject *self, Py_ssize_t limit)
} }
static PyObject * static PyObject *
TextIOWrapper_readline(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_readline(textio *self, PyObject *args)
{ {
Py_ssize_t limit = -1; Py_ssize_t limit = -1;
...@@ -1824,7 +1824,7 @@ TextIOWrapper_readline(PyTextIOWrapperObject *self, PyObject *args) ...@@ -1824,7 +1824,7 @@ TextIOWrapper_readline(PyTextIOWrapperObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|n:readline", &limit)) { if (!PyArg_ParseTuple(args, "|n:readline", &limit)) {
return NULL; return NULL;
} }
return _TextIOWrapper_readline(self, limit); return _textiowrapper_readline(self, limit);
} }
/* Seek and Tell */ /* Seek and Tell */
...@@ -1835,7 +1835,7 @@ typedef struct { ...@@ -1835,7 +1835,7 @@ typedef struct {
int bytes_to_feed; int bytes_to_feed;
int chars_to_skip; int chars_to_skip;
char need_eof; char need_eof;
} CookieStruct; } cookie_type;
/* /*
To speed up cookie packing/unpacking, we store the fields in a temporary To speed up cookie packing/unpacking, we store the fields in a temporary
...@@ -1876,7 +1876,7 @@ typedef struct { ...@@ -1876,7 +1876,7 @@ typedef struct {
#endif #endif
static int static int
TextIOWrapper_parseCookie(CookieStruct *cookie, PyObject *cookieObj) textiowrapper_parse_cookie(cookie_type *cookie, PyObject *cookieObj)
{ {
unsigned char buffer[COOKIE_BUF_LEN]; unsigned char buffer[COOKIE_BUF_LEN];
PyLongObject *cookieLong = (PyLongObject *)PyNumber_Long(cookieObj); PyLongObject *cookieLong = (PyLongObject *)PyNumber_Long(cookieObj);
...@@ -1900,7 +1900,7 @@ TextIOWrapper_parseCookie(CookieStruct *cookie, PyObject *cookieObj) ...@@ -1900,7 +1900,7 @@ TextIOWrapper_parseCookie(CookieStruct *cookie, PyObject *cookieObj)
} }
static PyObject * static PyObject *
TextIOWrapper_buildCookie(CookieStruct *cookie) textiowrapper_build_cookie(cookie_type *cookie)
{ {
unsigned char buffer[COOKIE_BUF_LEN]; unsigned char buffer[COOKIE_BUF_LEN];
...@@ -1915,8 +1915,7 @@ TextIOWrapper_buildCookie(CookieStruct *cookie) ...@@ -1915,8 +1915,7 @@ TextIOWrapper_buildCookie(CookieStruct *cookie)
#undef IS_LITTLE_ENDIAN #undef IS_LITTLE_ENDIAN
static int static int
_TextIOWrapper_decoder_setstate(PyTextIOWrapperObject *self, _textiowrapper_decoder_setstate(textio *self, cookie_type *cookie)
CookieStruct *cookie)
{ {
PyObject *res; PyObject *res;
/* When seeking to the start of the stream, we call decoder.reset() /* When seeking to the start of the stream, we call decoder.reset()
...@@ -1937,11 +1936,10 @@ _TextIOWrapper_decoder_setstate(PyTextIOWrapperObject *self, ...@@ -1937,11 +1936,10 @@ _TextIOWrapper_decoder_setstate(PyTextIOWrapperObject *self,
} }
static int static int
_TextIOWrapper_encoder_setstate(PyTextIOWrapperObject *self, _textiowrapper_encoder_setstate(textio *self, cookie_type *cookie)
CookieStruct *cookie)
{ {
PyObject *res; PyObject *res;
/* Same as _TextIOWrapper_decoder_setstate() above. */ /* Same as _textiowrapper_decoder_setstate() above. */
if (cookie->start_pos == 0 && cookie->dec_flags == 0) { if (cookie->start_pos == 0 && cookie->dec_flags == 0) {
res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_reset, NULL); res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_reset, NULL);
self->encoding_start_of_stream = 1; self->encoding_start_of_stream = 1;
...@@ -1958,10 +1956,10 @@ _TextIOWrapper_encoder_setstate(PyTextIOWrapperObject *self, ...@@ -1958,10 +1956,10 @@ _TextIOWrapper_encoder_setstate(PyTextIOWrapperObject *self,
} }
static PyObject * static PyObject *
TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_seek(textio *self, PyObject *args)
{ {
PyObject *cookieObj, *posobj; PyObject *cookieObj, *posobj;
CookieStruct cookie; cookie_type cookie;
int whence = 0; int whence = 0;
PyObject *res; PyObject *res;
int cmp; int cmp;
...@@ -2018,7 +2016,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2018,7 +2016,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
TextIOWrapper_set_decoded_chars(self, NULL); textiowrapper_set_decoded_chars(self, NULL);
Py_CLEAR(self->snapshot); Py_CLEAR(self->snapshot);
if (self->decoder) { if (self->decoder) {
res = PyObject_CallMethod(self->decoder, "reset", NULL); res = PyObject_CallMethod(self->decoder, "reset", NULL);
...@@ -2055,7 +2053,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2055,7 +2053,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
/* The strategy of seek() is to go back to the safe start point /* The strategy of seek() is to go back to the safe start point
* and replay the effect of read(chars_to_skip) from there. * and replay the effect of read(chars_to_skip) from there.
*/ */
if (TextIOWrapper_parseCookie(&cookie, cookieObj) < 0) if (textiowrapper_parse_cookie(&cookie, cookieObj) < 0)
goto fail; goto fail;
/* Seek back to the safe start point. */ /* Seek back to the safe start point. */
...@@ -2069,12 +2067,12 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2069,12 +2067,12 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
TextIOWrapper_set_decoded_chars(self, NULL); textiowrapper_set_decoded_chars(self, NULL);
Py_CLEAR(self->snapshot); Py_CLEAR(self->snapshot);
/* Restore the decoder to its state from the safe start point. */ /* Restore the decoder to its state from the safe start point. */
if (self->decoder) { if (self->decoder) {
if (_TextIOWrapper_decoder_setstate(self, &cookie) < 0) if (_textiowrapper_decoder_setstate(self, &cookie) < 0)
goto fail; goto fail;
} }
...@@ -2101,7 +2099,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2101,7 +2099,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
if (decoded == NULL) if (decoded == NULL)
goto fail; goto fail;
TextIOWrapper_set_decoded_chars(self, decoded); textiowrapper_set_decoded_chars(self, decoded);
/* Skip chars_to_skip of the decoded characters. */ /* Skip chars_to_skip of the decoded characters. */
if (PyUnicode_GetSize(self->decoded_chars) < cookie.chars_to_skip) { if (PyUnicode_GetSize(self->decoded_chars) < cookie.chars_to_skip) {
...@@ -2118,7 +2116,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2118,7 +2116,7 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
/* Finally, reset the encoder (merely useful for proper BOM handling) */ /* Finally, reset the encoder (merely useful for proper BOM handling) */
if (self->encoder) { if (self->encoder) {
if (_TextIOWrapper_encoder_setstate(self, &cookie) < 0) if (_textiowrapper_encoder_setstate(self, &cookie) < 0)
goto fail; goto fail;
} }
return cookieObj; return cookieObj;
...@@ -2129,11 +2127,11 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2129,11 +2127,11 @@ TextIOWrapper_seek(PyTextIOWrapperObject *self, PyObject *args)
} }
static PyObject * static PyObject *
TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_tell(textio *self, PyObject *args)
{ {
PyObject *res; PyObject *res;
PyObject *posobj = NULL; PyObject *posobj = NULL;
CookieStruct cookie = {0,0,0,0,0}; cookie_type cookie = {0,0,0,0,0};
PyObject *next_input; PyObject *next_input;
Py_ssize_t chars_to_skip, chars_decoded; Py_ssize_t chars_to_skip, chars_decoded;
PyObject *saved_state = NULL; PyObject *saved_state = NULL;
...@@ -2153,7 +2151,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2153,7 +2151,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args)
goto fail; goto fail;
} }
if (_TextIOWrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
res = PyObject_CallMethod((PyObject *)self, "flush", NULL); res = PyObject_CallMethod((PyObject *)self, "flush", NULL);
if (res == NULL) if (res == NULL)
...@@ -2189,7 +2187,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2189,7 +2187,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args)
if (self->decoded_chars_used == 0) { if (self->decoded_chars_used == 0) {
/* We haven't moved from the snapshot point. */ /* We haven't moved from the snapshot point. */
Py_DECREF(posobj); Py_DECREF(posobj);
return TextIOWrapper_buildCookie(&cookie); return textiowrapper_build_cookie(&cookie);
} }
chars_to_skip = self->decoded_chars_used; chars_to_skip = self->decoded_chars_used;
...@@ -2203,7 +2201,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2203,7 +2201,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args)
goto fail; goto fail;
/* Note our initial start point. */ /* Note our initial start point. */
if (_TextIOWrapper_decoder_setstate(self, &cookie) < 0) if (_textiowrapper_decoder_setstate(self, &cookie) < 0)
goto fail; goto fail;
/* Feed the decoder one byte at a time. As we go, note the /* Feed the decoder one byte at a time. As we go, note the
...@@ -2280,7 +2278,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2280,7 +2278,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args)
/* The returned cookie corresponds to the last safe start point. */ /* The returned cookie corresponds to the last safe start point. */
cookie.chars_to_skip = Py_SAFE_DOWNCAST(chars_to_skip, Py_ssize_t, int); cookie.chars_to_skip = Py_SAFE_DOWNCAST(chars_to_skip, Py_ssize_t, int);
return TextIOWrapper_buildCookie(&cookie); return textiowrapper_build_cookie(&cookie);
fail: fail:
Py_XDECREF(posobj); Py_XDECREF(posobj);
...@@ -2300,7 +2298,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2300,7 +2298,7 @@ TextIOWrapper_tell(PyTextIOWrapperObject *self, PyObject *args)
} }
static PyObject * static PyObject *
TextIOWrapper_truncate(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_truncate(textio *self, PyObject *args)
{ {
PyObject *pos = Py_None; PyObject *pos = Py_None;
PyObject *res; PyObject *res;
...@@ -2327,7 +2325,7 @@ TextIOWrapper_truncate(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2327,7 +2325,7 @@ TextIOWrapper_truncate(PyTextIOWrapperObject *self, PyObject *args)
} }
static PyObject * static PyObject *
TextIOWrapper_repr(PyTextIOWrapperObject *self) textiowrapper_repr(textio *self)
{ {
PyObject *nameobj, *res; PyObject *nameobj, *res;
...@@ -2354,53 +2352,53 @@ TextIOWrapper_repr(PyTextIOWrapperObject *self) ...@@ -2354,53 +2352,53 @@ TextIOWrapper_repr(PyTextIOWrapperObject *self)
/* Inquiries */ /* Inquiries */
static PyObject * static PyObject *
TextIOWrapper_fileno(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_fileno(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_CallMethod(self->buffer, "fileno", NULL); return PyObject_CallMethod(self->buffer, "fileno", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_seekable(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_seekable(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_CallMethod(self->buffer, "seekable", NULL); return PyObject_CallMethod(self->buffer, "seekable", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_readable(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_readable(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_CallMethod(self->buffer, "readable", NULL); return PyObject_CallMethod(self->buffer, "readable", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_writable(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_writable(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_CallMethod(self->buffer, "writable", NULL); return PyObject_CallMethod(self->buffer, "writable", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_isatty(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_isatty(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_CallMethod(self->buffer, "isatty", NULL); return PyObject_CallMethod(self->buffer, "isatty", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_flush(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_flush(textio *self, PyObject *args)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
CHECK_CLOSED(self); CHECK_CLOSED(self);
self->telling = self->seekable; self->telling = self->seekable;
if (_TextIOWrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
return PyObject_CallMethod(self->buffer, "flush", NULL); return PyObject_CallMethod(self->buffer, "flush", NULL);
} }
static PyObject * static PyObject *
TextIOWrapper_close(PyTextIOWrapperObject *self, PyObject *args) textiowrapper_close(textio *self, PyObject *args)
{ {
PyObject *res; PyObject *res;
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
...@@ -2416,7 +2414,7 @@ TextIOWrapper_close(PyTextIOWrapperObject *self, PyObject *args) ...@@ -2416,7 +2414,7 @@ TextIOWrapper_close(PyTextIOWrapperObject *self, PyObject *args)
} }
static PyObject * static PyObject *
TextIOWrapper_iternext(PyTextIOWrapperObject *self) textiowrapper_iternext(textio *self)
{ {
PyObject *line; PyObject *line;
...@@ -2425,7 +2423,7 @@ TextIOWrapper_iternext(PyTextIOWrapperObject *self) ...@@ -2425,7 +2423,7 @@ TextIOWrapper_iternext(PyTextIOWrapperObject *self)
self->telling = 0; self->telling = 0;
if (Py_TYPE(self) == &PyTextIOWrapper_Type) { if (Py_TYPE(self) == &PyTextIOWrapper_Type) {
/* Skip method call overhead for speed */ /* Skip method call overhead for speed */
line = _TextIOWrapper_readline(self, -1); line = _textiowrapper_readline(self, -1);
} }
else { else {
line = PyObject_CallMethodObjArgs((PyObject *)self, line = PyObject_CallMethodObjArgs((PyObject *)self,
...@@ -2454,21 +2452,21 @@ TextIOWrapper_iternext(PyTextIOWrapperObject *self) ...@@ -2454,21 +2452,21 @@ TextIOWrapper_iternext(PyTextIOWrapperObject *self)
} }
static PyObject * static PyObject *
TextIOWrapper_name_get(PyTextIOWrapperObject *self, void *context) textiowrapper_name_get(textio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_GetAttrString(self->buffer, "name"); return PyObject_GetAttrString(self->buffer, "name");
} }
static PyObject * static PyObject *
TextIOWrapper_closed_get(PyTextIOWrapperObject *self, void *context) textiowrapper_closed_get(textio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyObject_GetAttr(self->buffer, _PyIO_str_closed); return PyObject_GetAttr(self->buffer, _PyIO_str_closed);
} }
static PyObject * static PyObject *
TextIOWrapper_newlines_get(PyTextIOWrapperObject *self, void *context) textiowrapper_newlines_get(textio *self, void *context)
{ {
PyObject *res; PyObject *res;
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
...@@ -2488,22 +2486,21 @@ TextIOWrapper_newlines_get(PyTextIOWrapperObject *self, void *context) ...@@ -2488,22 +2486,21 @@ TextIOWrapper_newlines_get(PyTextIOWrapperObject *self, void *context)
} }
static PyObject * static PyObject *
TextIOWrapper_errors_get(PyTextIOWrapperObject *self, void *context) textiowrapper_errors_get(textio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyUnicode_FromString(PyBytes_AS_STRING(self->errors)); return PyUnicode_FromString(PyBytes_AS_STRING(self->errors));
} }
static PyObject * static PyObject *
TextIOWrapper_chunk_size_get(PyTextIOWrapperObject *self, void *context) textiowrapper_chunk_size_get(textio *self, void *context)
{ {
CHECK_INITIALIZED(self); CHECK_INITIALIZED(self);
return PyLong_FromSsize_t(self->chunk_size); return PyLong_FromSsize_t(self->chunk_size);
} }
static int static int
TextIOWrapper_chunk_size_set(PyTextIOWrapperObject *self, textiowrapper_chunk_size_set(textio *self, PyObject *arg, void *context)
PyObject *arg, void *context)
{ {
Py_ssize_t n; Py_ssize_t n;
CHECK_INITIALIZED_INT(self); CHECK_INITIALIZED_INT(self);
...@@ -2519,56 +2516,56 @@ TextIOWrapper_chunk_size_set(PyTextIOWrapperObject *self, ...@@ -2519,56 +2516,56 @@ TextIOWrapper_chunk_size_set(PyTextIOWrapperObject *self,
return 0; return 0;
} }
static PyMethodDef TextIOWrapper_methods[] = { static PyMethodDef textiowrapper_methods[] = {
{"detach", (PyCFunction)TextIOWrapper_detach, METH_NOARGS}, {"detach", (PyCFunction)textiowrapper_detach, METH_NOARGS},
{"write", (PyCFunction)TextIOWrapper_write, METH_VARARGS}, {"write", (PyCFunction)textiowrapper_write, METH_VARARGS},
{"read", (PyCFunction)TextIOWrapper_read, METH_VARARGS}, {"read", (PyCFunction)textiowrapper_read, METH_VARARGS},
{"readline", (PyCFunction)TextIOWrapper_readline, METH_VARARGS}, {"readline", (PyCFunction)textiowrapper_readline, METH_VARARGS},
{"flush", (PyCFunction)TextIOWrapper_flush, METH_NOARGS}, {"flush", (PyCFunction)textiowrapper_flush, METH_NOARGS},
{"close", (PyCFunction)TextIOWrapper_close, METH_NOARGS}, {"close", (PyCFunction)textiowrapper_close, METH_NOARGS},
{"fileno", (PyCFunction)TextIOWrapper_fileno, METH_NOARGS}, {"fileno", (PyCFunction)textiowrapper_fileno, METH_NOARGS},
{"seekable", (PyCFunction)TextIOWrapper_seekable, METH_NOARGS}, {"seekable", (PyCFunction)textiowrapper_seekable, METH_NOARGS},
{"readable", (PyCFunction)TextIOWrapper_readable, METH_NOARGS}, {"readable", (PyCFunction)textiowrapper_readable, METH_NOARGS},
{"writable", (PyCFunction)TextIOWrapper_writable, METH_NOARGS}, {"writable", (PyCFunction)textiowrapper_writable, METH_NOARGS},
{"isatty", (PyCFunction)TextIOWrapper_isatty, METH_NOARGS}, {"isatty", (PyCFunction)textiowrapper_isatty, METH_NOARGS},
{"seek", (PyCFunction)TextIOWrapper_seek, METH_VARARGS}, {"seek", (PyCFunction)textiowrapper_seek, METH_VARARGS},
{"tell", (PyCFunction)TextIOWrapper_tell, METH_NOARGS}, {"tell", (PyCFunction)textiowrapper_tell, METH_NOARGS},
{"truncate", (PyCFunction)TextIOWrapper_truncate, METH_VARARGS}, {"truncate", (PyCFunction)textiowrapper_truncate, METH_VARARGS},
{NULL, NULL} {NULL, NULL}
}; };
static PyMemberDef TextIOWrapper_members[] = { static PyMemberDef textiowrapper_members[] = {
{"encoding", T_OBJECT, offsetof(PyTextIOWrapperObject, encoding), READONLY}, {"encoding", T_OBJECT, offsetof(textio, encoding), READONLY},
{"buffer", T_OBJECT, offsetof(PyTextIOWrapperObject, buffer), READONLY}, {"buffer", T_OBJECT, offsetof(textio, buffer), READONLY},
{"line_buffering", T_BOOL, offsetof(PyTextIOWrapperObject, line_buffering), READONLY}, {"line_buffering", T_BOOL, offsetof(textio, line_buffering), READONLY},
{NULL} {NULL}
}; };
static PyGetSetDef TextIOWrapper_getset[] = { static PyGetSetDef textiowrapper_getset[] = {
{"name", (getter)TextIOWrapper_name_get, NULL, NULL}, {"name", (getter)textiowrapper_name_get, NULL, NULL},
{"closed", (getter)TextIOWrapper_closed_get, NULL, NULL}, {"closed", (getter)textiowrapper_closed_get, NULL, NULL},
/* {"mode", (getter)TextIOWrapper_mode_get, NULL, NULL}, /* {"mode", (getter)TextIOWrapper_mode_get, NULL, NULL},
*/ */
{"newlines", (getter)TextIOWrapper_newlines_get, NULL, NULL}, {"newlines", (getter)textiowrapper_newlines_get, NULL, NULL},
{"errors", (getter)TextIOWrapper_errors_get, NULL, NULL}, {"errors", (getter)textiowrapper_errors_get, NULL, NULL},
{"_CHUNK_SIZE", (getter)TextIOWrapper_chunk_size_get, {"_CHUNK_SIZE", (getter)textiowrapper_chunk_size_get,
(setter)TextIOWrapper_chunk_size_set, NULL}, (setter)textiowrapper_chunk_size_set, NULL},
{NULL} {NULL}
}; };
PyTypeObject PyTextIOWrapper_Type = { PyTypeObject PyTextIOWrapper_Type = {
PyVarObject_HEAD_INIT(NULL, 0) PyVarObject_HEAD_INIT(NULL, 0)
"_io.TextIOWrapper", /*tp_name*/ "_io.TextIOWrapper", /*tp_name*/
sizeof(PyTextIOWrapperObject), /*tp_basicsize*/ sizeof(textio), /*tp_basicsize*/
0, /*tp_itemsize*/ 0, /*tp_itemsize*/
(destructor)TextIOWrapper_dealloc, /*tp_dealloc*/ (destructor)textiowrapper_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
0, /*tp_getattr*/ 0, /*tp_getattr*/
0, /*tps_etattr*/ 0, /*tps_etattr*/
0, /*tp_compare */ 0, /*tp_compare */
(reprfunc)TextIOWrapper_repr,/*tp_repr*/ (reprfunc)textiowrapper_repr,/*tp_repr*/
0, /*tp_as_number*/ 0, /*tp_as_number*/
0, /*tp_as_sequence*/ 0, /*tp_as_sequence*/
0, /*tp_as_mapping*/ 0, /*tp_as_mapping*/
...@@ -2580,22 +2577,22 @@ PyTypeObject PyTextIOWrapper_Type = { ...@@ -2580,22 +2577,22 @@ PyTypeObject PyTextIOWrapper_Type = {
0, /*tp_as_buffer*/ 0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
| Py_TPFLAGS_HAVE_GC, /*tp_flags*/ | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
TextIOWrapper_doc, /* tp_doc */ textiowrapper_doc, /* tp_doc */
(traverseproc)TextIOWrapper_traverse, /* tp_traverse */ (traverseproc)textiowrapper_traverse, /* tp_traverse */
(inquiry)TextIOWrapper_clear, /* tp_clear */ (inquiry)textiowrapper_clear, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
offsetof(PyTextIOWrapperObject, weakreflist), /*tp_weaklistoffset*/ offsetof(textio, weakreflist), /*tp_weaklistoffset*/
0, /* tp_iter */ 0, /* tp_iter */
(iternextfunc)TextIOWrapper_iternext, /* tp_iternext */ (iternextfunc)textiowrapper_iternext, /* tp_iternext */
TextIOWrapper_methods, /* tp_methods */ textiowrapper_methods, /* tp_methods */
TextIOWrapper_members, /* tp_members */ textiowrapper_members, /* tp_members */
TextIOWrapper_getset, /* tp_getset */ textiowrapper_getset, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
offsetof(PyTextIOWrapperObject, dict), /*tp_dictoffset*/ offsetof(textio, dict), /*tp_dictoffset*/
(initproc)TextIOWrapper_init, /* tp_init */ (initproc)textiowrapper_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PyType_GenericNew, /* tp_new */ PyType_GenericNew, /* tp_new */
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment