Home | History | Annotate | Download | only in clinic
      1 /*[clinic input]
      2 preserve
      3 [clinic start generated code]*/
      4 
      5 PyDoc_STRVAR(msvcrt_heapmin__doc__,
      6 "heapmin($module, /)\n"
      7 "--\n"
      8 "\n"
      9 "Minimize the malloc() heap.\n"
     10 "\n"
     11 "Force the malloc() heap to clean itself up and return unused blocks\n"
     12 "to the operating system. On failure, this raises OSError.");
     13 
     14 #define MSVCRT_HEAPMIN_METHODDEF    \
     15     {"heapmin", (PyCFunction)msvcrt_heapmin, METH_NOARGS, msvcrt_heapmin__doc__},
     16 
     17 static PyObject *
     18 msvcrt_heapmin_impl(PyObject *module);
     19 
     20 static PyObject *
     21 msvcrt_heapmin(PyObject *module, PyObject *Py_UNUSED(ignored))
     22 {
     23     return msvcrt_heapmin_impl(module);
     24 }
     25 
     26 PyDoc_STRVAR(msvcrt_locking__doc__,
     27 "locking($module, fd, mode, nbytes, /)\n"
     28 "--\n"
     29 "\n"
     30 "Lock part of a file based on file descriptor fd from the C runtime.\n"
     31 "\n"
     32 "Raises IOError on failure. The locked region of the file extends from\n"
     33 "the current file position for nbytes bytes, and may continue beyond\n"
     34 "the end of the file. mode must be one of the LK_* constants listed\n"
     35 "below. Multiple regions in a file may be locked at the same time, but\n"
     36 "may not overlap. Adjacent regions are not merged; they must be unlocked\n"
     37 "individually.");
     38 
     39 #define MSVCRT_LOCKING_METHODDEF    \
     40     {"locking", (PyCFunction)msvcrt_locking, METH_VARARGS, msvcrt_locking__doc__},
     41 
     42 static PyObject *
     43 msvcrt_locking_impl(PyObject *module, int fd, int mode, long nbytes);
     44 
     45 static PyObject *
     46 msvcrt_locking(PyObject *module, PyObject *args)
     47 {
     48     PyObject *return_value = NULL;
     49     int fd;
     50     int mode;
     51     long nbytes;
     52 
     53     if (!PyArg_ParseTuple(args, "iil:locking",
     54         &fd, &mode, &nbytes)) {
     55         goto exit;
     56     }
     57     return_value = msvcrt_locking_impl(module, fd, mode, nbytes);
     58 
     59 exit:
     60     return return_value;
     61 }
     62 
     63 PyDoc_STRVAR(msvcrt_setmode__doc__,
     64 "setmode($module, fd, mode, /)\n"
     65 "--\n"
     66 "\n"
     67 "Set the line-end translation mode for the file descriptor fd.\n"
     68 "\n"
     69 "To set it to text mode, flags should be os.O_TEXT; for binary, it\n"
     70 "should be os.O_BINARY.\n"
     71 "\n"
     72 "Return value is the previous mode.");
     73 
     74 #define MSVCRT_SETMODE_METHODDEF    \
     75     {"setmode", (PyCFunction)msvcrt_setmode, METH_VARARGS, msvcrt_setmode__doc__},
     76 
     77 static long
     78 msvcrt_setmode_impl(PyObject *module, int fd, int flags);
     79 
     80 static PyObject *
     81 msvcrt_setmode(PyObject *module, PyObject *args)
     82 {
     83     PyObject *return_value = NULL;
     84     int fd;
     85     int flags;
     86     long _return_value;
     87 
     88     if (!PyArg_ParseTuple(args, "ii:setmode",
     89         &fd, &flags)) {
     90         goto exit;
     91     }
     92     _return_value = msvcrt_setmode_impl(module, fd, flags);
     93     if ((_return_value == -1) && PyErr_Occurred()) {
     94         goto exit;
     95     }
     96     return_value = PyLong_FromLong(_return_value);
     97 
     98 exit:
     99     return return_value;
    100 }
    101 
    102 PyDoc_STRVAR(msvcrt_open_osfhandle__doc__,
    103 "open_osfhandle($module, handle, flags, /)\n"
    104 "--\n"
    105 "\n"
    106 "Create a C runtime file descriptor from the file handle handle.\n"
    107 "\n"
    108 "The flags parameter should be a bitwise OR of os.O_APPEND, os.O_RDONLY,\n"
    109 "and os.O_TEXT. The returned file descriptor may be used as a parameter\n"
    110 "to os.fdopen() to create a file object.");
    111 
    112 #define MSVCRT_OPEN_OSFHANDLE_METHODDEF    \
    113     {"open_osfhandle", (PyCFunction)msvcrt_open_osfhandle, METH_VARARGS, msvcrt_open_osfhandle__doc__},
    114 
    115 static long
    116 msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags);
    117 
    118 static PyObject *
    119 msvcrt_open_osfhandle(PyObject *module, PyObject *args)
    120 {
    121     PyObject *return_value = NULL;
    122     intptr_t handle;
    123     int flags;
    124     long _return_value;
    125 
    126     if (!PyArg_ParseTuple(args, ""_Py_PARSE_INTPTR"i:open_osfhandle",
    127         &handle, &flags)) {
    128         goto exit;
    129     }
    130     _return_value = msvcrt_open_osfhandle_impl(module, handle, flags);
    131     if ((_return_value == -1) && PyErr_Occurred()) {
    132         goto exit;
    133     }
    134     return_value = PyLong_FromLong(_return_value);
    135 
    136 exit:
    137     return return_value;
    138 }
    139 
    140 PyDoc_STRVAR(msvcrt_get_osfhandle__doc__,
    141 "get_osfhandle($module, fd, /)\n"
    142 "--\n"
    143 "\n"
    144 "Return the file handle for the file descriptor fd.\n"
    145 "\n"
    146 "Raises IOError if fd is not recognized.");
    147 
    148 #define MSVCRT_GET_OSFHANDLE_METHODDEF    \
    149     {"get_osfhandle", (PyCFunction)msvcrt_get_osfhandle, METH_O, msvcrt_get_osfhandle__doc__},
    150 
    151 static intptr_t
    152 msvcrt_get_osfhandle_impl(PyObject *module, int fd);
    153 
    154 static PyObject *
    155 msvcrt_get_osfhandle(PyObject *module, PyObject *arg)
    156 {
    157     PyObject *return_value = NULL;
    158     int fd;
    159     intptr_t _return_value;
    160 
    161     if (!PyArg_Parse(arg, "i:get_osfhandle", &fd)) {
    162         goto exit;
    163     }
    164     _return_value = msvcrt_get_osfhandle_impl(module, fd);
    165     if ((_return_value == -1) && PyErr_Occurred()) {
    166         goto exit;
    167     }
    168     return_value = PyLong_FromVoidPtr((void *)_return_value);
    169 
    170 exit:
    171     return return_value;
    172 }
    173 
    174 PyDoc_STRVAR(msvcrt_kbhit__doc__,
    175 "kbhit($module, /)\n"
    176 "--\n"
    177 "\n"
    178 "Return true if a keypress is waiting to be read.");
    179 
    180 #define MSVCRT_KBHIT_METHODDEF    \
    181     {"kbhit", (PyCFunction)msvcrt_kbhit, METH_NOARGS, msvcrt_kbhit__doc__},
    182 
    183 static long
    184 msvcrt_kbhit_impl(PyObject *module);
    185 
    186 static PyObject *
    187 msvcrt_kbhit(PyObject *module, PyObject *Py_UNUSED(ignored))
    188 {
    189     PyObject *return_value = NULL;
    190     long _return_value;
    191 
    192     _return_value = msvcrt_kbhit_impl(module);
    193     if ((_return_value == -1) && PyErr_Occurred()) {
    194         goto exit;
    195     }
    196     return_value = PyLong_FromLong(_return_value);
    197 
    198 exit:
    199     return return_value;
    200 }
    201 
    202 PyDoc_STRVAR(msvcrt_getch__doc__,
    203 "getch($module, /)\n"
    204 "--\n"
    205 "\n"
    206 "Read a keypress and return the resulting character as a byte string.\n"
    207 "\n"
    208 "Nothing is echoed to the console. This call will block if a keypress is\n"
    209 "not already available, but will not wait for Enter to be pressed. If the\n"
    210 "pressed key was a special function key, this will return \'\\000\' or\n"
    211 "\'\\xe0\'; the next call will return the keycode. The Control-C keypress\n"
    212 "cannot be read with this function.");
    213 
    214 #define MSVCRT_GETCH_METHODDEF    \
    215     {"getch", (PyCFunction)msvcrt_getch, METH_NOARGS, msvcrt_getch__doc__},
    216 
    217 static int
    218 msvcrt_getch_impl(PyObject *module);
    219 
    220 static PyObject *
    221 msvcrt_getch(PyObject *module, PyObject *Py_UNUSED(ignored))
    222 {
    223     PyObject *return_value = NULL;
    224     char s[1];
    225 
    226     s[0] = msvcrt_getch_impl(module);
    227     return_value = PyBytes_FromStringAndSize(s, 1);
    228 
    229     return return_value;
    230 }
    231 
    232 PyDoc_STRVAR(msvcrt_getwch__doc__,
    233 "getwch($module, /)\n"
    234 "--\n"
    235 "\n"
    236 "Wide char variant of getch(), returning a Unicode value.");
    237 
    238 #define MSVCRT_GETWCH_METHODDEF    \
    239     {"getwch", (PyCFunction)msvcrt_getwch, METH_NOARGS, msvcrt_getwch__doc__},
    240 
    241 static wchar_t
    242 msvcrt_getwch_impl(PyObject *module);
    243 
    244 static PyObject *
    245 msvcrt_getwch(PyObject *module, PyObject *Py_UNUSED(ignored))
    246 {
    247     PyObject *return_value = NULL;
    248     wchar_t _return_value;
    249 
    250     _return_value = msvcrt_getwch_impl(module);
    251     return_value = PyUnicode_FromOrdinal(_return_value);
    252 
    253     return return_value;
    254 }
    255 
    256 PyDoc_STRVAR(msvcrt_getche__doc__,
    257 "getche($module, /)\n"
    258 "--\n"
    259 "\n"
    260 "Similar to getch(), but the keypress will be echoed if possible.");
    261 
    262 #define MSVCRT_GETCHE_METHODDEF    \
    263     {"getche", (PyCFunction)msvcrt_getche, METH_NOARGS, msvcrt_getche__doc__},
    264 
    265 static int
    266 msvcrt_getche_impl(PyObject *module);
    267 
    268 static PyObject *
    269 msvcrt_getche(PyObject *module, PyObject *Py_UNUSED(ignored))
    270 {
    271     PyObject *return_value = NULL;
    272     char s[1];
    273 
    274     s[0] = msvcrt_getche_impl(module);
    275     return_value = PyBytes_FromStringAndSize(s, 1);
    276 
    277     return return_value;
    278 }
    279 
    280 PyDoc_STRVAR(msvcrt_getwche__doc__,
    281 "getwche($module, /)\n"
    282 "--\n"
    283 "\n"
    284 "Wide char variant of getche(), returning a Unicode value.");
    285 
    286 #define MSVCRT_GETWCHE_METHODDEF    \
    287     {"getwche", (PyCFunction)msvcrt_getwche, METH_NOARGS, msvcrt_getwche__doc__},
    288 
    289 static wchar_t
    290 msvcrt_getwche_impl(PyObject *module);
    291 
    292 static PyObject *
    293 msvcrt_getwche(PyObject *module, PyObject *Py_UNUSED(ignored))
    294 {
    295     PyObject *return_value = NULL;
    296     wchar_t _return_value;
    297 
    298     _return_value = msvcrt_getwche_impl(module);
    299     return_value = PyUnicode_FromOrdinal(_return_value);
    300 
    301     return return_value;
    302 }
    303 
    304 PyDoc_STRVAR(msvcrt_putch__doc__,
    305 "putch($module, char, /)\n"
    306 "--\n"
    307 "\n"
    308 "Print the byte string char to the console without buffering.");
    309 
    310 #define MSVCRT_PUTCH_METHODDEF    \
    311     {"putch", (PyCFunction)msvcrt_putch, METH_O, msvcrt_putch__doc__},
    312 
    313 static PyObject *
    314 msvcrt_putch_impl(PyObject *module, char char_value);
    315 
    316 static PyObject *
    317 msvcrt_putch(PyObject *module, PyObject *arg)
    318 {
    319     PyObject *return_value = NULL;
    320     char char_value;
    321 
    322     if (!PyArg_Parse(arg, "c:putch", &char_value)) {
    323         goto exit;
    324     }
    325     return_value = msvcrt_putch_impl(module, char_value);
    326 
    327 exit:
    328     return return_value;
    329 }
    330 
    331 PyDoc_STRVAR(msvcrt_putwch__doc__,
    332 "putwch($module, unicode_char, /)\n"
    333 "--\n"
    334 "\n"
    335 "Wide char variant of putch(), accepting a Unicode value.");
    336 
    337 #define MSVCRT_PUTWCH_METHODDEF    \
    338     {"putwch", (PyCFunction)msvcrt_putwch, METH_O, msvcrt_putwch__doc__},
    339 
    340 static PyObject *
    341 msvcrt_putwch_impl(PyObject *module, int unicode_char);
    342 
    343 static PyObject *
    344 msvcrt_putwch(PyObject *module, PyObject *arg)
    345 {
    346     PyObject *return_value = NULL;
    347     int unicode_char;
    348 
    349     if (!PyArg_Parse(arg, "C:putwch", &unicode_char)) {
    350         goto exit;
    351     }
    352     return_value = msvcrt_putwch_impl(module, unicode_char);
    353 
    354 exit:
    355     return return_value;
    356 }
    357 
    358 PyDoc_STRVAR(msvcrt_ungetch__doc__,
    359 "ungetch($module, char, /)\n"
    360 "--\n"
    361 "\n"
    362 "Opposite of getch.\n"
    363 "\n"
    364 "Cause the byte string char to be \"pushed back\" into the\n"
    365 "console buffer; it will be the next character read by\n"
    366 "getch() or getche().");
    367 
    368 #define MSVCRT_UNGETCH_METHODDEF    \
    369     {"ungetch", (PyCFunction)msvcrt_ungetch, METH_O, msvcrt_ungetch__doc__},
    370 
    371 static PyObject *
    372 msvcrt_ungetch_impl(PyObject *module, char char_value);
    373 
    374 static PyObject *
    375 msvcrt_ungetch(PyObject *module, PyObject *arg)
    376 {
    377     PyObject *return_value = NULL;
    378     char char_value;
    379 
    380     if (!PyArg_Parse(arg, "c:ungetch", &char_value)) {
    381         goto exit;
    382     }
    383     return_value = msvcrt_ungetch_impl(module, char_value);
    384 
    385 exit:
    386     return return_value;
    387 }
    388 
    389 PyDoc_STRVAR(msvcrt_ungetwch__doc__,
    390 "ungetwch($module, unicode_char, /)\n"
    391 "--\n"
    392 "\n"
    393 "Wide char variant of ungetch(), accepting a Unicode value.");
    394 
    395 #define MSVCRT_UNGETWCH_METHODDEF    \
    396     {"ungetwch", (PyCFunction)msvcrt_ungetwch, METH_O, msvcrt_ungetwch__doc__},
    397 
    398 static PyObject *
    399 msvcrt_ungetwch_impl(PyObject *module, int unicode_char);
    400 
    401 static PyObject *
    402 msvcrt_ungetwch(PyObject *module, PyObject *arg)
    403 {
    404     PyObject *return_value = NULL;
    405     int unicode_char;
    406 
    407     if (!PyArg_Parse(arg, "C:ungetwch", &unicode_char)) {
    408         goto exit;
    409     }
    410     return_value = msvcrt_ungetwch_impl(module, unicode_char);
    411 
    412 exit:
    413     return return_value;
    414 }
    415 
    416 #if defined(_DEBUG)
    417 
    418 PyDoc_STRVAR(msvcrt_CrtSetReportFile__doc__,
    419 "CrtSetReportFile($module, type, file, /)\n"
    420 "--\n"
    421 "\n"
    422 "Wrapper around _CrtSetReportFile.\n"
    423 "\n"
    424 "Only available on Debug builds.");
    425 
    426 #define MSVCRT_CRTSETREPORTFILE_METHODDEF    \
    427     {"CrtSetReportFile", (PyCFunction)msvcrt_CrtSetReportFile, METH_VARARGS, msvcrt_CrtSetReportFile__doc__},
    428 
    429 static long
    430 msvcrt_CrtSetReportFile_impl(PyObject *module, int type, int file);
    431 
    432 static PyObject *
    433 msvcrt_CrtSetReportFile(PyObject *module, PyObject *args)
    434 {
    435     PyObject *return_value = NULL;
    436     int type;
    437     int file;
    438     long _return_value;
    439 
    440     if (!PyArg_ParseTuple(args, "ii:CrtSetReportFile",
    441         &type, &file)) {
    442         goto exit;
    443     }
    444     _return_value = msvcrt_CrtSetReportFile_impl(module, type, file);
    445     if ((_return_value == -1) && PyErr_Occurred()) {
    446         goto exit;
    447     }
    448     return_value = PyLong_FromLong(_return_value);
    449 
    450 exit:
    451     return return_value;
    452 }
    453 
    454 #endif /* defined(_DEBUG) */
    455 
    456 #if defined(_DEBUG)
    457 
    458 PyDoc_STRVAR(msvcrt_CrtSetReportMode__doc__,
    459 "CrtSetReportMode($module, type, mode, /)\n"
    460 "--\n"
    461 "\n"
    462 "Wrapper around _CrtSetReportMode.\n"
    463 "\n"
    464 "Only available on Debug builds.");
    465 
    466 #define MSVCRT_CRTSETREPORTMODE_METHODDEF    \
    467     {"CrtSetReportMode", (PyCFunction)msvcrt_CrtSetReportMode, METH_VARARGS, msvcrt_CrtSetReportMode__doc__},
    468 
    469 static long
    470 msvcrt_CrtSetReportMode_impl(PyObject *module, int type, int mode);
    471 
    472 static PyObject *
    473 msvcrt_CrtSetReportMode(PyObject *module, PyObject *args)
    474 {
    475     PyObject *return_value = NULL;
    476     int type;
    477     int mode;
    478     long _return_value;
    479 
    480     if (!PyArg_ParseTuple(args, "ii:CrtSetReportMode",
    481         &type, &mode)) {
    482         goto exit;
    483     }
    484     _return_value = msvcrt_CrtSetReportMode_impl(module, type, mode);
    485     if ((_return_value == -1) && PyErr_Occurred()) {
    486         goto exit;
    487     }
    488     return_value = PyLong_FromLong(_return_value);
    489 
    490 exit:
    491     return return_value;
    492 }
    493 
    494 #endif /* defined(_DEBUG) */
    495 
    496 #if defined(_DEBUG)
    497 
    498 PyDoc_STRVAR(msvcrt_set_error_mode__doc__,
    499 "set_error_mode($module, mode, /)\n"
    500 "--\n"
    501 "\n"
    502 "Wrapper around _set_error_mode.\n"
    503 "\n"
    504 "Only available on Debug builds.");
    505 
    506 #define MSVCRT_SET_ERROR_MODE_METHODDEF    \
    507     {"set_error_mode", (PyCFunction)msvcrt_set_error_mode, METH_O, msvcrt_set_error_mode__doc__},
    508 
    509 static long
    510 msvcrt_set_error_mode_impl(PyObject *module, int mode);
    511 
    512 static PyObject *
    513 msvcrt_set_error_mode(PyObject *module, PyObject *arg)
    514 {
    515     PyObject *return_value = NULL;
    516     int mode;
    517     long _return_value;
    518 
    519     if (!PyArg_Parse(arg, "i:set_error_mode", &mode)) {
    520         goto exit;
    521     }
    522     _return_value = msvcrt_set_error_mode_impl(module, mode);
    523     if ((_return_value == -1) && PyErr_Occurred()) {
    524         goto exit;
    525     }
    526     return_value = PyLong_FromLong(_return_value);
    527 
    528 exit:
    529     return return_value;
    530 }
    531 
    532 #endif /* defined(_DEBUG) */
    533 
    534 PyDoc_STRVAR(msvcrt_SetErrorMode__doc__,
    535 "SetErrorMode($module, mode, /)\n"
    536 "--\n"
    537 "\n"
    538 "Wrapper around SetErrorMode.");
    539 
    540 #define MSVCRT_SETERRORMODE_METHODDEF    \
    541     {"SetErrorMode", (PyCFunction)msvcrt_SetErrorMode, METH_O, msvcrt_SetErrorMode__doc__},
    542 
    543 static PyObject *
    544 msvcrt_SetErrorMode_impl(PyObject *module, unsigned int mode);
    545 
    546 static PyObject *
    547 msvcrt_SetErrorMode(PyObject *module, PyObject *arg)
    548 {
    549     PyObject *return_value = NULL;
    550     unsigned int mode;
    551 
    552     if (!PyArg_Parse(arg, "I:SetErrorMode", &mode)) {
    553         goto exit;
    554     }
    555     return_value = msvcrt_SetErrorMode_impl(module, mode);
    556 
    557 exit:
    558     return return_value;
    559 }
    560 
    561 #ifndef MSVCRT_CRTSETREPORTFILE_METHODDEF
    562     #define MSVCRT_CRTSETREPORTFILE_METHODDEF
    563 #endif /* !defined(MSVCRT_CRTSETREPORTFILE_METHODDEF) */
    564 
    565 #ifndef MSVCRT_CRTSETREPORTMODE_METHODDEF
    566     #define MSVCRT_CRTSETREPORTMODE_METHODDEF
    567 #endif /* !defined(MSVCRT_CRTSETREPORTMODE_METHODDEF) */
    568 
    569 #ifndef MSVCRT_SET_ERROR_MODE_METHODDEF
    570     #define MSVCRT_SET_ERROR_MODE_METHODDEF
    571 #endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */
    572 /*[clinic end generated code: output=ae04e2b50eef8b63 input=a9049054013a1b77]*/
    573