17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(_bz2_BZ2Compressor_compress__doc__,
67db96d56Sopenharmony_ci"compress($self, data, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Provide data to the compressor object.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"Returns a chunk of compressed data if possible, or b\'\' otherwise.\n"
127db96d56Sopenharmony_ci"\n"
137db96d56Sopenharmony_ci"When you have finished providing data to the compressor, call the\n"
147db96d56Sopenharmony_ci"flush() method to finish the compression process.");
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci#define _BZ2_BZ2COMPRESSOR_COMPRESS_METHODDEF    \
177db96d56Sopenharmony_ci    {"compress", (PyCFunction)_bz2_BZ2Compressor_compress, METH_O, _bz2_BZ2Compressor_compress__doc__},
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_cistatic PyObject *
207db96d56Sopenharmony_ci_bz2_BZ2Compressor_compress_impl(BZ2Compressor *self, Py_buffer *data);
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_cistatic PyObject *
237db96d56Sopenharmony_ci_bz2_BZ2Compressor_compress(BZ2Compressor *self, PyObject *arg)
247db96d56Sopenharmony_ci{
257db96d56Sopenharmony_ci    PyObject *return_value = NULL;
267db96d56Sopenharmony_ci    Py_buffer data = {NULL, NULL};
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci    if (PyObject_GetBuffer(arg, &data, PyBUF_SIMPLE) != 0) {
297db96d56Sopenharmony_ci        goto exit;
307db96d56Sopenharmony_ci    }
317db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&data, 'C')) {
327db96d56Sopenharmony_ci        _PyArg_BadArgument("compress", "argument", "contiguous buffer", arg);
337db96d56Sopenharmony_ci        goto exit;
347db96d56Sopenharmony_ci    }
357db96d56Sopenharmony_ci    return_value = _bz2_BZ2Compressor_compress_impl(self, &data);
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ciexit:
387db96d56Sopenharmony_ci    /* Cleanup for data */
397db96d56Sopenharmony_ci    if (data.obj) {
407db96d56Sopenharmony_ci       PyBuffer_Release(&data);
417db96d56Sopenharmony_ci    }
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci    return return_value;
447db96d56Sopenharmony_ci}
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ciPyDoc_STRVAR(_bz2_BZ2Compressor_flush__doc__,
477db96d56Sopenharmony_ci"flush($self, /)\n"
487db96d56Sopenharmony_ci"--\n"
497db96d56Sopenharmony_ci"\n"
507db96d56Sopenharmony_ci"Finish the compression process.\n"
517db96d56Sopenharmony_ci"\n"
527db96d56Sopenharmony_ci"Returns the compressed data left in internal buffers.\n"
537db96d56Sopenharmony_ci"\n"
547db96d56Sopenharmony_ci"The compressor object may not be used after this method is called.");
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci#define _BZ2_BZ2COMPRESSOR_FLUSH_METHODDEF    \
577db96d56Sopenharmony_ci    {"flush", (PyCFunction)_bz2_BZ2Compressor_flush, METH_NOARGS, _bz2_BZ2Compressor_flush__doc__},
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_cistatic PyObject *
607db96d56Sopenharmony_ci_bz2_BZ2Compressor_flush_impl(BZ2Compressor *self);
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_cistatic PyObject *
637db96d56Sopenharmony_ci_bz2_BZ2Compressor_flush(BZ2Compressor *self, PyObject *Py_UNUSED(ignored))
647db96d56Sopenharmony_ci{
657db96d56Sopenharmony_ci    return _bz2_BZ2Compressor_flush_impl(self);
667db96d56Sopenharmony_ci}
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ciPyDoc_STRVAR(_bz2_BZ2Decompressor_decompress__doc__,
697db96d56Sopenharmony_ci"decompress($self, /, data, max_length=-1)\n"
707db96d56Sopenharmony_ci"--\n"
717db96d56Sopenharmony_ci"\n"
727db96d56Sopenharmony_ci"Decompress *data*, returning uncompressed data as bytes.\n"
737db96d56Sopenharmony_ci"\n"
747db96d56Sopenharmony_ci"If *max_length* is nonnegative, returns at most *max_length* bytes of\n"
757db96d56Sopenharmony_ci"decompressed data. If this limit is reached and further output can be\n"
767db96d56Sopenharmony_ci"produced, *self.needs_input* will be set to ``False``. In this case, the next\n"
777db96d56Sopenharmony_ci"call to *decompress()* may provide *data* as b\'\' to obtain more of the output.\n"
787db96d56Sopenharmony_ci"\n"
797db96d56Sopenharmony_ci"If all of the input data was decompressed and returned (either because this\n"
807db96d56Sopenharmony_ci"was less than *max_length* bytes, or because *max_length* was negative),\n"
817db96d56Sopenharmony_ci"*self.needs_input* will be set to True.\n"
827db96d56Sopenharmony_ci"\n"
837db96d56Sopenharmony_ci"Attempting to decompress data after the end of stream is reached raises an\n"
847db96d56Sopenharmony_ci"EOFError.  Any data found after the end of the stream is ignored and saved in\n"
857db96d56Sopenharmony_ci"the unused_data attribute.");
867db96d56Sopenharmony_ci
877db96d56Sopenharmony_ci#define _BZ2_BZ2DECOMPRESSOR_DECOMPRESS_METHODDEF    \
887db96d56Sopenharmony_ci    {"decompress", _PyCFunction_CAST(_bz2_BZ2Decompressor_decompress), METH_FASTCALL|METH_KEYWORDS, _bz2_BZ2Decompressor_decompress__doc__},
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_cistatic PyObject *
917db96d56Sopenharmony_ci_bz2_BZ2Decompressor_decompress_impl(BZ2Decompressor *self, Py_buffer *data,
927db96d56Sopenharmony_ci                                     Py_ssize_t max_length);
937db96d56Sopenharmony_ci
947db96d56Sopenharmony_cistatic PyObject *
957db96d56Sopenharmony_ci_bz2_BZ2Decompressor_decompress(BZ2Decompressor *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
967db96d56Sopenharmony_ci{
977db96d56Sopenharmony_ci    PyObject *return_value = NULL;
987db96d56Sopenharmony_ci    static const char * const _keywords[] = {"data", "max_length", NULL};
997db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "decompress", 0};
1007db96d56Sopenharmony_ci    PyObject *argsbuf[2];
1017db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
1027db96d56Sopenharmony_ci    Py_buffer data = {NULL, NULL};
1037db96d56Sopenharmony_ci    Py_ssize_t max_length = -1;
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
1067db96d56Sopenharmony_ci    if (!args) {
1077db96d56Sopenharmony_ci        goto exit;
1087db96d56Sopenharmony_ci    }
1097db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[0], &data, PyBUF_SIMPLE) != 0) {
1107db96d56Sopenharmony_ci        goto exit;
1117db96d56Sopenharmony_ci    }
1127db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&data, 'C')) {
1137db96d56Sopenharmony_ci        _PyArg_BadArgument("decompress", "argument 'data'", "contiguous buffer", args[0]);
1147db96d56Sopenharmony_ci        goto exit;
1157db96d56Sopenharmony_ci    }
1167db96d56Sopenharmony_ci    if (!noptargs) {
1177db96d56Sopenharmony_ci        goto skip_optional_pos;
1187db96d56Sopenharmony_ci    }
1197db96d56Sopenharmony_ci    {
1207db96d56Sopenharmony_ci        Py_ssize_t ival = -1;
1217db96d56Sopenharmony_ci        PyObject *iobj = _PyNumber_Index(args[1]);
1227db96d56Sopenharmony_ci        if (iobj != NULL) {
1237db96d56Sopenharmony_ci            ival = PyLong_AsSsize_t(iobj);
1247db96d56Sopenharmony_ci            Py_DECREF(iobj);
1257db96d56Sopenharmony_ci        }
1267db96d56Sopenharmony_ci        if (ival == -1 && PyErr_Occurred()) {
1277db96d56Sopenharmony_ci            goto exit;
1287db96d56Sopenharmony_ci        }
1297db96d56Sopenharmony_ci        max_length = ival;
1307db96d56Sopenharmony_ci    }
1317db96d56Sopenharmony_ciskip_optional_pos:
1327db96d56Sopenharmony_ci    return_value = _bz2_BZ2Decompressor_decompress_impl(self, &data, max_length);
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ciexit:
1357db96d56Sopenharmony_ci    /* Cleanup for data */
1367db96d56Sopenharmony_ci    if (data.obj) {
1377db96d56Sopenharmony_ci       PyBuffer_Release(&data);
1387db96d56Sopenharmony_ci    }
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci    return return_value;
1417db96d56Sopenharmony_ci}
1427db96d56Sopenharmony_ci/*[clinic end generated code: output=a1175204a414fe2a input=a9049054013a1b77]*/
143