17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(marshal_dump__doc__,
67db96d56Sopenharmony_ci"dump($module, value, file, version=version, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Write the value on the open file.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"  value\n"
127db96d56Sopenharmony_ci"    Must be a supported type.\n"
137db96d56Sopenharmony_ci"  file\n"
147db96d56Sopenharmony_ci"    Must be a writeable binary file.\n"
157db96d56Sopenharmony_ci"  version\n"
167db96d56Sopenharmony_ci"    Indicates the data format that dump should use.\n"
177db96d56Sopenharmony_ci"\n"
187db96d56Sopenharmony_ci"If the value has (or contains an object that has) an unsupported type, a\n"
197db96d56Sopenharmony_ci"ValueError exception is raised - but garbage data will also be written\n"
207db96d56Sopenharmony_ci"to the file. The object will not be properly read back by load().");
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci#define MARSHAL_DUMP_METHODDEF    \
237db96d56Sopenharmony_ci    {"dump", _PyCFunction_CAST(marshal_dump), METH_FASTCALL, marshal_dump__doc__},
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_cistatic PyObject *
267db96d56Sopenharmony_cimarshal_dump_impl(PyObject *module, PyObject *value, PyObject *file,
277db96d56Sopenharmony_ci                  int version);
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_cistatic PyObject *
307db96d56Sopenharmony_cimarshal_dump(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
317db96d56Sopenharmony_ci{
327db96d56Sopenharmony_ci    PyObject *return_value = NULL;
337db96d56Sopenharmony_ci    PyObject *value;
347db96d56Sopenharmony_ci    PyObject *file;
357db96d56Sopenharmony_ci    int version = Py_MARSHAL_VERSION;
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("dump", nargs, 2, 3)) {
387db96d56Sopenharmony_ci        goto exit;
397db96d56Sopenharmony_ci    }
407db96d56Sopenharmony_ci    value = args[0];
417db96d56Sopenharmony_ci    file = args[1];
427db96d56Sopenharmony_ci    if (nargs < 3) {
437db96d56Sopenharmony_ci        goto skip_optional;
447db96d56Sopenharmony_ci    }
457db96d56Sopenharmony_ci    version = _PyLong_AsInt(args[2]);
467db96d56Sopenharmony_ci    if (version == -1 && PyErr_Occurred()) {
477db96d56Sopenharmony_ci        goto exit;
487db96d56Sopenharmony_ci    }
497db96d56Sopenharmony_ciskip_optional:
507db96d56Sopenharmony_ci    return_value = marshal_dump_impl(module, value, file, version);
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ciexit:
537db96d56Sopenharmony_ci    return return_value;
547db96d56Sopenharmony_ci}
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ciPyDoc_STRVAR(marshal_load__doc__,
577db96d56Sopenharmony_ci"load($module, file, /)\n"
587db96d56Sopenharmony_ci"--\n"
597db96d56Sopenharmony_ci"\n"
607db96d56Sopenharmony_ci"Read one value from the open file and return it.\n"
617db96d56Sopenharmony_ci"\n"
627db96d56Sopenharmony_ci"  file\n"
637db96d56Sopenharmony_ci"    Must be readable binary file.\n"
647db96d56Sopenharmony_ci"\n"
657db96d56Sopenharmony_ci"If no valid value is read (e.g. because the data has a different Python\n"
667db96d56Sopenharmony_ci"version\'s incompatible marshal format), raise EOFError, ValueError or\n"
677db96d56Sopenharmony_ci"TypeError.\n"
687db96d56Sopenharmony_ci"\n"
697db96d56Sopenharmony_ci"Note: If an object containing an unsupported type was marshalled with\n"
707db96d56Sopenharmony_ci"dump(), load() will substitute None for the unmarshallable type.");
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci#define MARSHAL_LOAD_METHODDEF    \
737db96d56Sopenharmony_ci    {"load", (PyCFunction)marshal_load, METH_O, marshal_load__doc__},
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ciPyDoc_STRVAR(marshal_dumps__doc__,
767db96d56Sopenharmony_ci"dumps($module, value, version=version, /)\n"
777db96d56Sopenharmony_ci"--\n"
787db96d56Sopenharmony_ci"\n"
797db96d56Sopenharmony_ci"Return the bytes object that would be written to a file by dump(value, file).\n"
807db96d56Sopenharmony_ci"\n"
817db96d56Sopenharmony_ci"  value\n"
827db96d56Sopenharmony_ci"    Must be a supported type.\n"
837db96d56Sopenharmony_ci"  version\n"
847db96d56Sopenharmony_ci"    Indicates the data format that dumps should use.\n"
857db96d56Sopenharmony_ci"\n"
867db96d56Sopenharmony_ci"Raise a ValueError exception if value has (or contains an object that has) an\n"
877db96d56Sopenharmony_ci"unsupported type.");
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci#define MARSHAL_DUMPS_METHODDEF    \
907db96d56Sopenharmony_ci    {"dumps", _PyCFunction_CAST(marshal_dumps), METH_FASTCALL, marshal_dumps__doc__},
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_cistatic PyObject *
937db96d56Sopenharmony_cimarshal_dumps_impl(PyObject *module, PyObject *value, int version);
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_cistatic PyObject *
967db96d56Sopenharmony_cimarshal_dumps(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
977db96d56Sopenharmony_ci{
987db96d56Sopenharmony_ci    PyObject *return_value = NULL;
997db96d56Sopenharmony_ci    PyObject *value;
1007db96d56Sopenharmony_ci    int version = Py_MARSHAL_VERSION;
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("dumps", nargs, 1, 2)) {
1037db96d56Sopenharmony_ci        goto exit;
1047db96d56Sopenharmony_ci    }
1057db96d56Sopenharmony_ci    value = args[0];
1067db96d56Sopenharmony_ci    if (nargs < 2) {
1077db96d56Sopenharmony_ci        goto skip_optional;
1087db96d56Sopenharmony_ci    }
1097db96d56Sopenharmony_ci    version = _PyLong_AsInt(args[1]);
1107db96d56Sopenharmony_ci    if (version == -1 && PyErr_Occurred()) {
1117db96d56Sopenharmony_ci        goto exit;
1127db96d56Sopenharmony_ci    }
1137db96d56Sopenharmony_ciskip_optional:
1147db96d56Sopenharmony_ci    return_value = marshal_dumps_impl(module, value, version);
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ciexit:
1177db96d56Sopenharmony_ci    return return_value;
1187db96d56Sopenharmony_ci}
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciPyDoc_STRVAR(marshal_loads__doc__,
1217db96d56Sopenharmony_ci"loads($module, bytes, /)\n"
1227db96d56Sopenharmony_ci"--\n"
1237db96d56Sopenharmony_ci"\n"
1247db96d56Sopenharmony_ci"Convert the bytes-like object to a value.\n"
1257db96d56Sopenharmony_ci"\n"
1267db96d56Sopenharmony_ci"If no valid value is found, raise EOFError, ValueError or TypeError.  Extra\n"
1277db96d56Sopenharmony_ci"bytes in the input are ignored.");
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ci#define MARSHAL_LOADS_METHODDEF    \
1307db96d56Sopenharmony_ci    {"loads", (PyCFunction)marshal_loads, METH_O, marshal_loads__doc__},
1317db96d56Sopenharmony_ci
1327db96d56Sopenharmony_cistatic PyObject *
1337db96d56Sopenharmony_cimarshal_loads_impl(PyObject *module, Py_buffer *bytes);
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_cistatic PyObject *
1367db96d56Sopenharmony_cimarshal_loads(PyObject *module, PyObject *arg)
1377db96d56Sopenharmony_ci{
1387db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1397db96d56Sopenharmony_ci    Py_buffer bytes = {NULL, NULL};
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &bytes, PyBUF_SIMPLE) != 0) {
1427db96d56Sopenharmony_ci        goto exit;
1437db96d56Sopenharmony_ci    }
1447db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&bytes, 'C')) {
1457db96d56Sopenharmony_ci        _PyArg_BadArgument("loads", "argument", "contiguous buffer", arg);
1467db96d56Sopenharmony_ci        goto exit;
1477db96d56Sopenharmony_ci    }
1487db96d56Sopenharmony_ci    return_value = marshal_loads_impl(module, &bytes);
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ciexit:
1517db96d56Sopenharmony_ci    /* Cleanup for bytes */
1527db96d56Sopenharmony_ci    if (bytes.obj) {
1537db96d56Sopenharmony_ci       PyBuffer_Release(&bytes);
1547db96d56Sopenharmony_ci    }
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_ci    return return_value;
1577db96d56Sopenharmony_ci}
1587db96d56Sopenharmony_ci/*[clinic end generated code: output=b9e838edee43fe87 input=a9049054013a1b77]*/
159