• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 #if defined(MS_WINDOWS)
6 
7 PyDoc_STRVAR(_io__WindowsConsoleIO_close__doc__,
8 "close($self, /)\n"
9 "--\n"
10 "\n"
11 "Close the console object.\n"
12 "\n"
13 "A closed console object cannot be used for further I/O operations.\n"
14 "close() may be called more than once without error.");
15 
16 #define _IO__WINDOWSCONSOLEIO_CLOSE_METHODDEF    \
17     {"close", (PyCFunction)_io__WindowsConsoleIO_close, METH_NOARGS, _io__WindowsConsoleIO_close__doc__},
18 
19 static PyObject *
20 _io__WindowsConsoleIO_close_impl(winconsoleio *self);
21 
22 static PyObject *
_io__WindowsConsoleIO_close(winconsoleio * self,PyObject * Py_UNUSED (ignored))23 _io__WindowsConsoleIO_close(winconsoleio *self, PyObject *Py_UNUSED(ignored))
24 {
25     return _io__WindowsConsoleIO_close_impl(self);
26 }
27 
28 #endif /* defined(MS_WINDOWS) */
29 
30 #if defined(MS_WINDOWS)
31 
32 PyDoc_STRVAR(_io__WindowsConsoleIO___init____doc__,
33 "_WindowsConsoleIO(file, mode=\'r\', closefd=True, opener=None)\n"
34 "--\n"
35 "\n"
36 "Open a console buffer by file descriptor.\n"
37 "\n"
38 "The mode can be \'rb\' (default), or \'wb\' for reading or writing bytes. All\n"
39 "other mode characters will be ignored. Mode \'b\' will be assumed if it is\n"
40 "omitted. The *opener* parameter is always ignored.");
41 
42 static int
43 _io__WindowsConsoleIO___init___impl(winconsoleio *self, PyObject *nameobj,
44                                     const char *mode, int closefd,
45                                     PyObject *opener);
46 
47 static int
_io__WindowsConsoleIO___init__(PyObject * self,PyObject * args,PyObject * kwargs)48 _io__WindowsConsoleIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
49 {
50     int return_value = -1;
51     static const char * const _keywords[] = {"file", "mode", "closefd", "opener", NULL};
52     static _PyArg_Parser _parser = {NULL, _keywords, "_WindowsConsoleIO", 0};
53     PyObject *argsbuf[4];
54     PyObject * const *fastargs;
55     Py_ssize_t nargs = PyTuple_GET_SIZE(args);
56     Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
57     PyObject *nameobj;
58     const char *mode = "r";
59     int closefd = 1;
60     PyObject *opener = Py_None;
61 
62     fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 4, 0, argsbuf);
63     if (!fastargs) {
64         goto exit;
65     }
66     nameobj = fastargs[0];
67     if (!noptargs) {
68         goto skip_optional_pos;
69     }
70     if (fastargs[1]) {
71         if (!PyUnicode_Check(fastargs[1])) {
72             _PyArg_BadArgument("_WindowsConsoleIO", "argument 'mode'", "str", fastargs[1]);
73             goto exit;
74         }
75         Py_ssize_t mode_length;
76         mode = PyUnicode_AsUTF8AndSize(fastargs[1], &mode_length);
77         if (mode == NULL) {
78             goto exit;
79         }
80         if (strlen(mode) != (size_t)mode_length) {
81             PyErr_SetString(PyExc_ValueError, "embedded null character");
82             goto exit;
83         }
84         if (!--noptargs) {
85             goto skip_optional_pos;
86         }
87     }
88     if (fastargs[2]) {
89         closefd = _PyLong_AsInt(fastargs[2]);
90         if (closefd == -1 && PyErr_Occurred()) {
91             goto exit;
92         }
93         if (!--noptargs) {
94             goto skip_optional_pos;
95         }
96     }
97     opener = fastargs[3];
98 skip_optional_pos:
99     return_value = _io__WindowsConsoleIO___init___impl((winconsoleio *)self, nameobj, mode, closefd, opener);
100 
101 exit:
102     return return_value;
103 }
104 
105 #endif /* defined(MS_WINDOWS) */
106 
107 #if defined(MS_WINDOWS)
108 
109 PyDoc_STRVAR(_io__WindowsConsoleIO_fileno__doc__,
110 "fileno($self, /)\n"
111 "--\n"
112 "\n"
113 "Return the underlying file descriptor (an integer).");
114 
115 #define _IO__WINDOWSCONSOLEIO_FILENO_METHODDEF    \
116     {"fileno", (PyCFunction)_io__WindowsConsoleIO_fileno, METH_NOARGS, _io__WindowsConsoleIO_fileno__doc__},
117 
118 static PyObject *
119 _io__WindowsConsoleIO_fileno_impl(winconsoleio *self);
120 
121 static PyObject *
_io__WindowsConsoleIO_fileno(winconsoleio * self,PyObject * Py_UNUSED (ignored))122 _io__WindowsConsoleIO_fileno(winconsoleio *self, PyObject *Py_UNUSED(ignored))
123 {
124     return _io__WindowsConsoleIO_fileno_impl(self);
125 }
126 
127 #endif /* defined(MS_WINDOWS) */
128 
129 #if defined(MS_WINDOWS)
130 
131 PyDoc_STRVAR(_io__WindowsConsoleIO_readable__doc__,
132 "readable($self, /)\n"
133 "--\n"
134 "\n"
135 "True if console is an input buffer.");
136 
137 #define _IO__WINDOWSCONSOLEIO_READABLE_METHODDEF    \
138     {"readable", (PyCFunction)_io__WindowsConsoleIO_readable, METH_NOARGS, _io__WindowsConsoleIO_readable__doc__},
139 
140 static PyObject *
141 _io__WindowsConsoleIO_readable_impl(winconsoleio *self);
142 
143 static PyObject *
_io__WindowsConsoleIO_readable(winconsoleio * self,PyObject * Py_UNUSED (ignored))144 _io__WindowsConsoleIO_readable(winconsoleio *self, PyObject *Py_UNUSED(ignored))
145 {
146     return _io__WindowsConsoleIO_readable_impl(self);
147 }
148 
149 #endif /* defined(MS_WINDOWS) */
150 
151 #if defined(MS_WINDOWS)
152 
153 PyDoc_STRVAR(_io__WindowsConsoleIO_writable__doc__,
154 "writable($self, /)\n"
155 "--\n"
156 "\n"
157 "True if console is an output buffer.");
158 
159 #define _IO__WINDOWSCONSOLEIO_WRITABLE_METHODDEF    \
160     {"writable", (PyCFunction)_io__WindowsConsoleIO_writable, METH_NOARGS, _io__WindowsConsoleIO_writable__doc__},
161 
162 static PyObject *
163 _io__WindowsConsoleIO_writable_impl(winconsoleio *self);
164 
165 static PyObject *
_io__WindowsConsoleIO_writable(winconsoleio * self,PyObject * Py_UNUSED (ignored))166 _io__WindowsConsoleIO_writable(winconsoleio *self, PyObject *Py_UNUSED(ignored))
167 {
168     return _io__WindowsConsoleIO_writable_impl(self);
169 }
170 
171 #endif /* defined(MS_WINDOWS) */
172 
173 #if defined(MS_WINDOWS)
174 
175 PyDoc_STRVAR(_io__WindowsConsoleIO_readinto__doc__,
176 "readinto($self, buffer, /)\n"
177 "--\n"
178 "\n"
179 "Same as RawIOBase.readinto().");
180 
181 #define _IO__WINDOWSCONSOLEIO_READINTO_METHODDEF    \
182     {"readinto", (PyCFunction)_io__WindowsConsoleIO_readinto, METH_O, _io__WindowsConsoleIO_readinto__doc__},
183 
184 static PyObject *
185 _io__WindowsConsoleIO_readinto_impl(winconsoleio *self, Py_buffer *buffer);
186 
187 static PyObject *
_io__WindowsConsoleIO_readinto(winconsoleio * self,PyObject * arg)188 _io__WindowsConsoleIO_readinto(winconsoleio *self, PyObject *arg)
189 {
190     PyObject *return_value = NULL;
191     Py_buffer buffer = {NULL, NULL};
192 
193     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
194         PyErr_Clear();
195         _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
196         goto exit;
197     }
198     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
199         _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
200         goto exit;
201     }
202     return_value = _io__WindowsConsoleIO_readinto_impl(self, &buffer);
203 
204 exit:
205     /* Cleanup for buffer */
206     if (buffer.obj) {
207        PyBuffer_Release(&buffer);
208     }
209 
210     return return_value;
211 }
212 
213 #endif /* defined(MS_WINDOWS) */
214 
215 #if defined(MS_WINDOWS)
216 
217 PyDoc_STRVAR(_io__WindowsConsoleIO_readall__doc__,
218 "readall($self, /)\n"
219 "--\n"
220 "\n"
221 "Read all data from the console, returned as bytes.\n"
222 "\n"
223 "Return an empty bytes object at EOF.");
224 
225 #define _IO__WINDOWSCONSOLEIO_READALL_METHODDEF    \
226     {"readall", (PyCFunction)_io__WindowsConsoleIO_readall, METH_NOARGS, _io__WindowsConsoleIO_readall__doc__},
227 
228 static PyObject *
229 _io__WindowsConsoleIO_readall_impl(winconsoleio *self);
230 
231 static PyObject *
_io__WindowsConsoleIO_readall(winconsoleio * self,PyObject * Py_UNUSED (ignored))232 _io__WindowsConsoleIO_readall(winconsoleio *self, PyObject *Py_UNUSED(ignored))
233 {
234     return _io__WindowsConsoleIO_readall_impl(self);
235 }
236 
237 #endif /* defined(MS_WINDOWS) */
238 
239 #if defined(MS_WINDOWS)
240 
241 PyDoc_STRVAR(_io__WindowsConsoleIO_read__doc__,
242 "read($self, size=-1, /)\n"
243 "--\n"
244 "\n"
245 "Read at most size bytes, returned as bytes.\n"
246 "\n"
247 "Only makes one system call when size is a positive integer,\n"
248 "so less data may be returned than requested.\n"
249 "Return an empty bytes object at EOF.");
250 
251 #define _IO__WINDOWSCONSOLEIO_READ_METHODDEF    \
252     {"read", (PyCFunction)(void(*)(void))_io__WindowsConsoleIO_read, METH_FASTCALL, _io__WindowsConsoleIO_read__doc__},
253 
254 static PyObject *
255 _io__WindowsConsoleIO_read_impl(winconsoleio *self, Py_ssize_t size);
256 
257 static PyObject *
_io__WindowsConsoleIO_read(winconsoleio * self,PyObject * const * args,Py_ssize_t nargs)258 _io__WindowsConsoleIO_read(winconsoleio *self, PyObject *const *args, Py_ssize_t nargs)
259 {
260     PyObject *return_value = NULL;
261     Py_ssize_t size = -1;
262 
263     if (!_PyArg_CheckPositional("read", nargs, 0, 1)) {
264         goto exit;
265     }
266     if (nargs < 1) {
267         goto skip_optional;
268     }
269     if (!_Py_convert_optional_to_ssize_t(args[0], &size)) {
270         goto exit;
271     }
272 skip_optional:
273     return_value = _io__WindowsConsoleIO_read_impl(self, size);
274 
275 exit:
276     return return_value;
277 }
278 
279 #endif /* defined(MS_WINDOWS) */
280 
281 #if defined(MS_WINDOWS)
282 
283 PyDoc_STRVAR(_io__WindowsConsoleIO_write__doc__,
284 "write($self, b, /)\n"
285 "--\n"
286 "\n"
287 "Write buffer b to file, return number of bytes written.\n"
288 "\n"
289 "Only makes one system call, so not all of the data may be written.\n"
290 "The number of bytes actually written is returned.");
291 
292 #define _IO__WINDOWSCONSOLEIO_WRITE_METHODDEF    \
293     {"write", (PyCFunction)_io__WindowsConsoleIO_write, METH_O, _io__WindowsConsoleIO_write__doc__},
294 
295 static PyObject *
296 _io__WindowsConsoleIO_write_impl(winconsoleio *self, Py_buffer *b);
297 
298 static PyObject *
_io__WindowsConsoleIO_write(winconsoleio * self,PyObject * arg)299 _io__WindowsConsoleIO_write(winconsoleio *self, PyObject *arg)
300 {
301     PyObject *return_value = NULL;
302     Py_buffer b = {NULL, NULL};
303 
304     if (PyObject_GetBuffer(arg, &b, PyBUF_SIMPLE) != 0) {
305         goto exit;
306     }
307     if (!PyBuffer_IsContiguous(&b, 'C')) {
308         _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
309         goto exit;
310     }
311     return_value = _io__WindowsConsoleIO_write_impl(self, &b);
312 
313 exit:
314     /* Cleanup for b */
315     if (b.obj) {
316        PyBuffer_Release(&b);
317     }
318 
319     return return_value;
320 }
321 
322 #endif /* defined(MS_WINDOWS) */
323 
324 #if defined(MS_WINDOWS)
325 
326 PyDoc_STRVAR(_io__WindowsConsoleIO_isatty__doc__,
327 "isatty($self, /)\n"
328 "--\n"
329 "\n"
330 "Always True.");
331 
332 #define _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF    \
333     {"isatty", (PyCFunction)_io__WindowsConsoleIO_isatty, METH_NOARGS, _io__WindowsConsoleIO_isatty__doc__},
334 
335 static PyObject *
336 _io__WindowsConsoleIO_isatty_impl(winconsoleio *self);
337 
338 static PyObject *
_io__WindowsConsoleIO_isatty(winconsoleio * self,PyObject * Py_UNUSED (ignored))339 _io__WindowsConsoleIO_isatty(winconsoleio *self, PyObject *Py_UNUSED(ignored))
340 {
341     return _io__WindowsConsoleIO_isatty_impl(self);
342 }
343 
344 #endif /* defined(MS_WINDOWS) */
345 
346 #ifndef _IO__WINDOWSCONSOLEIO_CLOSE_METHODDEF
347     #define _IO__WINDOWSCONSOLEIO_CLOSE_METHODDEF
348 #endif /* !defined(_IO__WINDOWSCONSOLEIO_CLOSE_METHODDEF) */
349 
350 #ifndef _IO__WINDOWSCONSOLEIO_FILENO_METHODDEF
351     #define _IO__WINDOWSCONSOLEIO_FILENO_METHODDEF
352 #endif /* !defined(_IO__WINDOWSCONSOLEIO_FILENO_METHODDEF) */
353 
354 #ifndef _IO__WINDOWSCONSOLEIO_READABLE_METHODDEF
355     #define _IO__WINDOWSCONSOLEIO_READABLE_METHODDEF
356 #endif /* !defined(_IO__WINDOWSCONSOLEIO_READABLE_METHODDEF) */
357 
358 #ifndef _IO__WINDOWSCONSOLEIO_WRITABLE_METHODDEF
359     #define _IO__WINDOWSCONSOLEIO_WRITABLE_METHODDEF
360 #endif /* !defined(_IO__WINDOWSCONSOLEIO_WRITABLE_METHODDEF) */
361 
362 #ifndef _IO__WINDOWSCONSOLEIO_READINTO_METHODDEF
363     #define _IO__WINDOWSCONSOLEIO_READINTO_METHODDEF
364 #endif /* !defined(_IO__WINDOWSCONSOLEIO_READINTO_METHODDEF) */
365 
366 #ifndef _IO__WINDOWSCONSOLEIO_READALL_METHODDEF
367     #define _IO__WINDOWSCONSOLEIO_READALL_METHODDEF
368 #endif /* !defined(_IO__WINDOWSCONSOLEIO_READALL_METHODDEF) */
369 
370 #ifndef _IO__WINDOWSCONSOLEIO_READ_METHODDEF
371     #define _IO__WINDOWSCONSOLEIO_READ_METHODDEF
372 #endif /* !defined(_IO__WINDOWSCONSOLEIO_READ_METHODDEF) */
373 
374 #ifndef _IO__WINDOWSCONSOLEIO_WRITE_METHODDEF
375     #define _IO__WINDOWSCONSOLEIO_WRITE_METHODDEF
376 #endif /* !defined(_IO__WINDOWSCONSOLEIO_WRITE_METHODDEF) */
377 
378 #ifndef _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
379     #define _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
380 #endif /* !defined(_IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF) */
381 /*[clinic end generated code: output=48080572ffee22f5 input=a9049054013a1b77]*/
382