1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(_io_StringIO_getvalue__doc__,
6 "getvalue($self, /)\n"
7 "--\n"
8 "\n"
9 "Retrieve the entire contents of the object.");
10
11 #define _IO_STRINGIO_GETVALUE_METHODDEF \
12 {"getvalue", (PyCFunction)_io_StringIO_getvalue, METH_NOARGS, _io_StringIO_getvalue__doc__},
13
14 static PyObject *
15 _io_StringIO_getvalue_impl(stringio *self);
16
17 static PyObject *
_io_StringIO_getvalue(stringio * self,PyObject * Py_UNUSED (ignored))18 _io_StringIO_getvalue(stringio *self, PyObject *Py_UNUSED(ignored))
19 {
20 return _io_StringIO_getvalue_impl(self);
21 }
22
23 PyDoc_STRVAR(_io_StringIO_tell__doc__,
24 "tell($self, /)\n"
25 "--\n"
26 "\n"
27 "Tell the current file position.");
28
29 #define _IO_STRINGIO_TELL_METHODDEF \
30 {"tell", (PyCFunction)_io_StringIO_tell, METH_NOARGS, _io_StringIO_tell__doc__},
31
32 static PyObject *
33 _io_StringIO_tell_impl(stringio *self);
34
35 static PyObject *
_io_StringIO_tell(stringio * self,PyObject * Py_UNUSED (ignored))36 _io_StringIO_tell(stringio *self, PyObject *Py_UNUSED(ignored))
37 {
38 return _io_StringIO_tell_impl(self);
39 }
40
41 PyDoc_STRVAR(_io_StringIO_read__doc__,
42 "read($self, size=-1, /)\n"
43 "--\n"
44 "\n"
45 "Read at most size characters, returned as a string.\n"
46 "\n"
47 "If the argument is negative or omitted, read until EOF\n"
48 "is reached. Return an empty string at EOF.");
49
50 #define _IO_STRINGIO_READ_METHODDEF \
51 {"read", (PyCFunction)(void(*)(void))_io_StringIO_read, METH_FASTCALL, _io_StringIO_read__doc__},
52
53 static PyObject *
54 _io_StringIO_read_impl(stringio *self, Py_ssize_t size);
55
56 static PyObject *
_io_StringIO_read(stringio * self,PyObject * const * args,Py_ssize_t nargs)57 _io_StringIO_read(stringio *self, PyObject *const *args, Py_ssize_t nargs)
58 {
59 PyObject *return_value = NULL;
60 Py_ssize_t size = -1;
61
62 if (!_PyArg_CheckPositional("read", nargs, 0, 1)) {
63 goto exit;
64 }
65 if (nargs < 1) {
66 goto skip_optional;
67 }
68 if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
69 goto exit;
70 }
71 skip_optional:
72 return_value = _io_StringIO_read_impl(self, size);
73
74 exit:
75 return return_value;
76 }
77
78 PyDoc_STRVAR(_io_StringIO_readline__doc__,
79 "readline($self, size=-1, /)\n"
80 "--\n"
81 "\n"
82 "Read until newline or EOF.\n"
83 "\n"
84 "Returns an empty string if EOF is hit immediately.");
85
86 #define _IO_STRINGIO_READLINE_METHODDEF \
87 {"readline", (PyCFunction)(void(*)(void))_io_StringIO_readline, METH_FASTCALL, _io_StringIO_readline__doc__},
88
89 static PyObject *
90 _io_StringIO_readline_impl(stringio *self, Py_ssize_t size);
91
92 static PyObject *
_io_StringIO_readline(stringio * self,PyObject * const * args,Py_ssize_t nargs)93 _io_StringIO_readline(stringio *self, PyObject *const *args, Py_ssize_t nargs)
94 {
95 PyObject *return_value = NULL;
96 Py_ssize_t size = -1;
97
98 if (!_PyArg_CheckPositional("readline", nargs, 0, 1)) {
99 goto exit;
100 }
101 if (nargs < 1) {
102 goto skip_optional;
103 }
104 if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
105 goto exit;
106 }
107 skip_optional:
108 return_value = _io_StringIO_readline_impl(self, size);
109
110 exit:
111 return return_value;
112 }
113
114 PyDoc_STRVAR(_io_StringIO_truncate__doc__,
115 "truncate($self, pos=None, /)\n"
116 "--\n"
117 "\n"
118 "Truncate size to pos.\n"
119 "\n"
120 "The pos argument defaults to the current file position, as\n"
121 "returned by tell(). The current file position is unchanged.\n"
122 "Returns the new absolute position.");
123
124 #define _IO_STRINGIO_TRUNCATE_METHODDEF \
125 {"truncate", (PyCFunction)(void(*)(void))_io_StringIO_truncate, METH_FASTCALL, _io_StringIO_truncate__doc__},
126
127 static PyObject *
128 _io_StringIO_truncate_impl(stringio *self, Py_ssize_t size);
129
130 static PyObject *
_io_StringIO_truncate(stringio * self,PyObject * const * args,Py_ssize_t nargs)131 _io_StringIO_truncate(stringio *self, PyObject *const *args, Py_ssize_t nargs)
132 {
133 PyObject *return_value = NULL;
134 Py_ssize_t size = self->pos;
135
136 if (!_PyArg_CheckPositional("truncate", nargs, 0, 1)) {
137 goto exit;
138 }
139 if (nargs < 1) {
140 goto skip_optional;
141 }
142 if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
143 goto exit;
144 }
145 skip_optional:
146 return_value = _io_StringIO_truncate_impl(self, size);
147
148 exit:
149 return return_value;
150 }
151
152 PyDoc_STRVAR(_io_StringIO_seek__doc__,
153 "seek($self, pos, whence=0, /)\n"
154 "--\n"
155 "\n"
156 "Change stream position.\n"
157 "\n"
158 "Seek to character offset pos relative to position indicated by whence:\n"
159 " 0 Start of stream (the default). pos should be >= 0;\n"
160 " 1 Current position - pos must be 0;\n"
161 " 2 End of stream - pos must be 0.\n"
162 "Returns the new absolute position.");
163
164 #define _IO_STRINGIO_SEEK_METHODDEF \
165 {"seek", (PyCFunction)(void(*)(void))_io_StringIO_seek, METH_FASTCALL, _io_StringIO_seek__doc__},
166
167 static PyObject *
168 _io_StringIO_seek_impl(stringio *self, Py_ssize_t pos, int whence);
169
170 static PyObject *
_io_StringIO_seek(stringio * self,PyObject * const * args,Py_ssize_t nargs)171 _io_StringIO_seek(stringio *self, PyObject *const *args, Py_ssize_t nargs)
172 {
173 PyObject *return_value = NULL;
174 Py_ssize_t pos;
175 int whence = 0;
176
177 if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) {
178 goto exit;
179 }
180 {
181 Py_ssize_t ival = -1;
182 PyObject *iobj = _PyNumber_Index(args[0]);
183 if (iobj != NULL) {
184 ival = PyLong_AsSsize_t(iobj);
185 Py_DECREF(iobj);
186 }
187 if (ival == -1 && PyErr_Occurred()) {
188 goto exit;
189 }
190 pos = ival;
191 }
192 if (nargs < 2) {
193 goto skip_optional;
194 }
195 whence = _PyLong_AsInt(args[1]);
196 if (whence == -1 && PyErr_Occurred()) {
197 goto exit;
198 }
199 skip_optional:
200 return_value = _io_StringIO_seek_impl(self, pos, whence);
201
202 exit:
203 return return_value;
204 }
205
206 PyDoc_STRVAR(_io_StringIO_write__doc__,
207 "write($self, s, /)\n"
208 "--\n"
209 "\n"
210 "Write string to file.\n"
211 "\n"
212 "Returns the number of characters written, which is always equal to\n"
213 "the length of the string.");
214
215 #define _IO_STRINGIO_WRITE_METHODDEF \
216 {"write", (PyCFunction)_io_StringIO_write, METH_O, _io_StringIO_write__doc__},
217
218 PyDoc_STRVAR(_io_StringIO_close__doc__,
219 "close($self, /)\n"
220 "--\n"
221 "\n"
222 "Close the IO object.\n"
223 "\n"
224 "Attempting any further operation after the object is closed\n"
225 "will raise a ValueError.\n"
226 "\n"
227 "This method has no effect if the file is already closed.");
228
229 #define _IO_STRINGIO_CLOSE_METHODDEF \
230 {"close", (PyCFunction)_io_StringIO_close, METH_NOARGS, _io_StringIO_close__doc__},
231
232 static PyObject *
233 _io_StringIO_close_impl(stringio *self);
234
235 static PyObject *
_io_StringIO_close(stringio * self,PyObject * Py_UNUSED (ignored))236 _io_StringIO_close(stringio *self, PyObject *Py_UNUSED(ignored))
237 {
238 return _io_StringIO_close_impl(self);
239 }
240
241 PyDoc_STRVAR(_io_StringIO___init____doc__,
242 "StringIO(initial_value=\'\', newline=\'\\n\')\n"
243 "--\n"
244 "\n"
245 "Text I/O implementation using an in-memory buffer.\n"
246 "\n"
247 "The initial_value argument sets the value of object. The newline\n"
248 "argument is like the one of TextIOWrapper\'s constructor.");
249
250 static int
251 _io_StringIO___init___impl(stringio *self, PyObject *value,
252 PyObject *newline_obj);
253
254 static int
_io_StringIO___init__(PyObject * self,PyObject * args,PyObject * kwargs)255 _io_StringIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
256 {
257 int return_value = -1;
258 static const char * const _keywords[] = {"initial_value", "newline", NULL};
259 static _PyArg_Parser _parser = {NULL, _keywords, "StringIO", 0};
260 PyObject *argsbuf[2];
261 PyObject * const *fastargs;
262 Py_ssize_t nargs = PyTuple_GET_SIZE(args);
263 Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
264 PyObject *value = NULL;
265 PyObject *newline_obj = NULL;
266
267 fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 2, 0, argsbuf);
268 if (!fastargs) {
269 goto exit;
270 }
271 if (!noptargs) {
272 goto skip_optional_pos;
273 }
274 if (fastargs[0]) {
275 value = fastargs[0];
276 if (!--noptargs) {
277 goto skip_optional_pos;
278 }
279 }
280 newline_obj = fastargs[1];
281 skip_optional_pos:
282 return_value = _io_StringIO___init___impl((stringio *)self, value, newline_obj);
283
284 exit:
285 return return_value;
286 }
287
288 PyDoc_STRVAR(_io_StringIO_readable__doc__,
289 "readable($self, /)\n"
290 "--\n"
291 "\n"
292 "Returns True if the IO object can be read.");
293
294 #define _IO_STRINGIO_READABLE_METHODDEF \
295 {"readable", (PyCFunction)_io_StringIO_readable, METH_NOARGS, _io_StringIO_readable__doc__},
296
297 static PyObject *
298 _io_StringIO_readable_impl(stringio *self);
299
300 static PyObject *
_io_StringIO_readable(stringio * self,PyObject * Py_UNUSED (ignored))301 _io_StringIO_readable(stringio *self, PyObject *Py_UNUSED(ignored))
302 {
303 return _io_StringIO_readable_impl(self);
304 }
305
306 PyDoc_STRVAR(_io_StringIO_writable__doc__,
307 "writable($self, /)\n"
308 "--\n"
309 "\n"
310 "Returns True if the IO object can be written.");
311
312 #define _IO_STRINGIO_WRITABLE_METHODDEF \
313 {"writable", (PyCFunction)_io_StringIO_writable, METH_NOARGS, _io_StringIO_writable__doc__},
314
315 static PyObject *
316 _io_StringIO_writable_impl(stringio *self);
317
318 static PyObject *
_io_StringIO_writable(stringio * self,PyObject * Py_UNUSED (ignored))319 _io_StringIO_writable(stringio *self, PyObject *Py_UNUSED(ignored))
320 {
321 return _io_StringIO_writable_impl(self);
322 }
323
324 PyDoc_STRVAR(_io_StringIO_seekable__doc__,
325 "seekable($self, /)\n"
326 "--\n"
327 "\n"
328 "Returns True if the IO object can be seeked.");
329
330 #define _IO_STRINGIO_SEEKABLE_METHODDEF \
331 {"seekable", (PyCFunction)_io_StringIO_seekable, METH_NOARGS, _io_StringIO_seekable__doc__},
332
333 static PyObject *
334 _io_StringIO_seekable_impl(stringio *self);
335
336 static PyObject *
_io_StringIO_seekable(stringio * self,PyObject * Py_UNUSED (ignored))337 _io_StringIO_seekable(stringio *self, PyObject *Py_UNUSED(ignored))
338 {
339 return _io_StringIO_seekable_impl(self);
340 }
341 /*[clinic end generated code: output=eea93dcab10d0a97 input=a9049054013a1b77]*/
342