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