| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | /*[clinic input]
 | 
					
						
							|  |  |  | preserve | 
					
						
							|  |  |  | [clinic start generated code]*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_compress__doc__, | 
					
						
							| 
									
										
										
										
											2016-06-25 22:43:05 +03:00
										 |  |  | "compress($module, data, /, level=Z_DEFAULT_COMPRESSION)\n" | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Returns a bytes object containing compressed data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2016-02-10 10:06:36 +00:00
										 |  |  | "  data\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "    Binary data to be compressed.\n" | 
					
						
							|  |  |  | "  level\n" | 
					
						
							| 
									
										
										
										
											2016-02-10 10:45:54 +00:00
										 |  |  | "    Compression level, in 0-9 or -1."); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"compress", (PyCFunction)(void(*)(void))zlib_compress, METH_FASTCALL|METH_KEYWORDS, zlib_compress__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 18:20:03 +03:00
										 |  |  | zlib_compress_impl(PyObject *module, Py_buffer *data, int level); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_compress(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-08-14 10:52:18 +03:00
										 |  |  |     static const char * const _keywords[] = {"", "level", NULL}; | 
					
						
							|  |  |  |     static _PyArg_Parser _parser = {"y*|i:compress", _keywords, 0}; | 
					
						
							| 
									
										
										
										
											2016-02-10 10:06:36 +00:00
										 |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     int level = Z_DEFAULT_COMPRESSION; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 01:29:01 +01:00
										 |  |  |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |         &data, &level)) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-02-10 10:06:36 +00:00
										 |  |  |     return_value = zlib_compress_impl(module, &data, level); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							| 
									
										
										
										
											2016-02-10 10:06:36 +00:00
										 |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2016-02-10 10:06:36 +00:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_decompress__doc__, | 
					
						
							| 
									
										
										
										
											2016-08-15 10:06:16 +03:00
										 |  |  | "decompress($module, data, /, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)\n" | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Returns a bytes object containing the uncompressed data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  data\n" | 
					
						
							|  |  |  | "    Compressed data.\n" | 
					
						
							|  |  |  | "  wbits\n" | 
					
						
							| 
									
										
										
										
											2016-05-27 07:32:11 +00:00
										 |  |  | "    The window buffer size and container format.\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "  bufsize\n" | 
					
						
							|  |  |  | "    The initial output buffer size."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"decompress", (PyCFunction)(void(*)(void))zlib_decompress, METH_FASTCALL|METH_KEYWORDS, zlib_decompress__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 17:35:15 +03:00
										 |  |  | zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  |                      Py_ssize_t bufsize); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_decompress(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-08-15 10:06:16 +03:00
										 |  |  |     static const char * const _keywords[] = {"", "wbits", "bufsize", NULL}; | 
					
						
							|  |  |  |     static _PyArg_Parser _parser = {"y*|iO&:decompress", _keywords, 0}; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							|  |  |  |     int wbits = MAX_WBITS; | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  |     Py_ssize_t bufsize = DEF_BUF_SIZE; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 01:29:01 +01:00
										 |  |  |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, | 
					
						
							| 
									
										
										
										
											2016-07-23 03:39:49 +00:00
										 |  |  |         &data, &wbits, ssize_t_converter, &bufsize)) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_decompress_impl(module, &data, wbits, bufsize); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_compressobj__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "compressobj($module, /, level=Z_DEFAULT_COMPRESSION, method=DEFLATED,\n" | 
					
						
							|  |  |  | "            wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL,\n" | 
					
						
							|  |  |  | "            strategy=Z_DEFAULT_STRATEGY, zdict=None)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a compressor object.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  level\n" | 
					
						
							| 
									
										
										
										
											2016-02-03 07:06:33 +00:00
										 |  |  | "    The compression level (an integer in the range 0-9 or -1; default is\n" | 
					
						
							|  |  |  | "    currently equivalent to 6).  Higher compression levels are slower,\n" | 
					
						
							|  |  |  | "    but produce smaller results.\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "  method\n" | 
					
						
							|  |  |  | "    The compression algorithm.  If given, this must be DEFLATED.\n" | 
					
						
							|  |  |  | "  wbits\n" | 
					
						
							| 
									
										
										
										
											2016-05-27 07:32:11 +00:00
										 |  |  | "    +9 to +15: The base-two logarithm of the window size.  Include a zlib\n" | 
					
						
							|  |  |  | "        container.\n" | 
					
						
							|  |  |  | "    -9 to -15: Generate a raw stream.\n" | 
					
						
							|  |  |  | "    +25 to +31: Include a gzip container.\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "  memLevel\n" | 
					
						
							|  |  |  | "    Controls the amount of memory used for internal compression state.\n" | 
					
						
							|  |  |  | "    Valid values range from 1 to 9.  Higher values result in higher memory\n" | 
					
						
							|  |  |  | "    usage, faster compression, and smaller output.\n" | 
					
						
							|  |  |  | "  strategy\n" | 
					
						
							|  |  |  | "    Used to tune the compression algorithm.  Possible values are\n" | 
					
						
							|  |  |  | "    Z_DEFAULT_STRATEGY, Z_FILTERED, and Z_HUFFMAN_ONLY.\n" | 
					
						
							|  |  |  | "  zdict\n" | 
					
						
							|  |  |  | "    The predefined compression dictionary - a sequence of bytes\n" | 
					
						
							|  |  |  | "    containing subsequences that are likely to occur in the input data."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESSOBJ_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"compressobj", (PyCFunction)(void(*)(void))zlib_compressobj, METH_FASTCALL|METH_KEYWORDS, zlib_compressobj__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 17:35:15 +03:00
										 |  |  | zlib_compressobj_impl(PyObject *module, int level, int method, int wbits, | 
					
						
							| 
									
										
										
										
											2015-04-14 18:07:59 -04:00
										 |  |  |                       int memLevel, int strategy, Py_buffer *zdict); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_compressobj(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-08-14 10:52:18 +03:00
										 |  |  |     static const char * const _keywords[] = {"level", "method", "wbits", "memLevel", "strategy", "zdict", NULL}; | 
					
						
							|  |  |  |     static _PyArg_Parser _parser = {"|iiiiiy*:compressobj", _keywords, 0}; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     int level = Z_DEFAULT_COMPRESSION; | 
					
						
							|  |  |  |     int method = DEFLATED; | 
					
						
							|  |  |  |     int wbits = MAX_WBITS; | 
					
						
							|  |  |  |     int memLevel = DEF_MEM_LEVEL; | 
					
						
							|  |  |  |     int strategy = Z_DEFAULT_STRATEGY; | 
					
						
							|  |  |  |     Py_buffer zdict = {NULL, NULL}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 01:29:01 +01:00
										 |  |  |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |         &level, &method, &wbits, &memLevel, &strategy, &zdict)) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_compressobj_impl(module, level, method, wbits, memLevel, strategy, &zdict); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for zdict */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (zdict.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&zdict); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_decompressobj__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "decompressobj($module, /, wbits=MAX_WBITS, zdict=b\'\')\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a decompressor object.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  wbits\n" | 
					
						
							| 
									
										
										
										
											2016-05-27 07:32:11 +00:00
										 |  |  | "    The window buffer size and container format.\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "  zdict\n" | 
					
						
							|  |  |  | "    The predefined compression dictionary.  This must be the same\n" | 
					
						
							|  |  |  | "    dictionary as used by the compressor that produced the input data."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESSOBJ_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"decompressobj", (PyCFunction)(void(*)(void))zlib_decompressobj, METH_FASTCALL|METH_KEYWORDS, zlib_decompressobj__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 17:35:15 +03:00
										 |  |  | zlib_decompressobj_impl(PyObject *module, int wbits, PyObject *zdict); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_decompressobj(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-08-14 10:52:18 +03:00
										 |  |  |     static const char * const _keywords[] = {"wbits", "zdict", NULL}; | 
					
						
							|  |  |  |     static _PyArg_Parser _parser = {"|iO:decompressobj", _keywords, 0}; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     int wbits = MAX_WBITS; | 
					
						
							|  |  |  |     PyObject *zdict = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 01:29:01 +01:00
										 |  |  |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |         &wbits, &zdict)) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_decompressobj_impl(module, wbits, zdict); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Compress_compress__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "compress($self, data, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Returns a bytes object containing compressed data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  data\n" | 
					
						
							|  |  |  | "    Binary data to be compressed.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "After calling this function, some of the input data may still\n" | 
					
						
							|  |  |  | "be stored in internal buffers for later processing.\n" | 
					
						
							|  |  |  | "Call the flush() method to clear these buffers."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS_COMPRESS_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2015-04-04 00:12:11 +03:00
										 |  |  |     {"compress", (PyCFunction)zlib_Compress_compress, METH_O, zlib_Compress_compress__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress_compress_impl(compobject *self, Py_buffer *data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2015-04-04 00:12:11 +03:00
										 |  |  | zlib_Compress_compress(compobject *self, PyObject *arg) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							|  |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-25 13:23:47 +02:00
										 |  |  |     if (PyObject_GetBuffer(arg, &data, PyBUF_SIMPLE) != 0) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!PyBuffer_IsContiguous(&data, 'C')) { | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |         _PyArg_BadArgument("compress", 0, "contiguous buffer", arg); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_Compress_compress_impl(self, &data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Decompress_decompress__doc__, | 
					
						
							| 
									
										
										
										
											2016-08-15 10:06:16 +03:00
										 |  |  | "decompress($self, data, /, max_length=0)\n" | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a bytes object containing the decompressed version of the data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  data\n" | 
					
						
							|  |  |  | "    The binary data to decompress.\n" | 
					
						
							|  |  |  | "  max_length\n" | 
					
						
							|  |  |  | "    The maximum allowable length of the decompressed data.\n" | 
					
						
							|  |  |  | "    Unconsumed input data will be stored in\n" | 
					
						
							|  |  |  | "    the unconsumed_tail attribute.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "After calling this function, some of the input data may still be stored in\n" | 
					
						
							|  |  |  | "internal buffers for later processing.\n" | 
					
						
							|  |  |  | "Call the flush() method to clear these buffers."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS_DECOMPRESS_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"decompress", (PyCFunction)(void(*)(void))zlib_Decompress_decompress, METH_FASTCALL|METH_KEYWORDS, zlib_Decompress_decompress__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2015-04-14 18:07:59 -04:00
										 |  |  | zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  |                                 Py_ssize_t max_length); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_Decompress_decompress(compobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-08-15 10:06:16 +03:00
										 |  |  |     static const char * const _keywords[] = {"", "max_length", NULL}; | 
					
						
							|  |  |  |     static _PyArg_Parser _parser = {"y*|O&:decompress", _keywords, 0}; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  |     Py_ssize_t max_length = 0; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 01:29:01 +01:00
										 |  |  |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, | 
					
						
							| 
									
										
										
										
											2016-07-23 03:39:49 +00:00
										 |  |  |         &data, ssize_t_converter, &max_length)) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |         goto exit; | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_Decompress_decompress_impl(self, &data, max_length); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Compress_flush__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "flush($self, mode=zlib.Z_FINISH, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a bytes object containing any remaining compressed data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  mode\n" | 
					
						
							|  |  |  | "    One of the constants Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH.\n" | 
					
						
							|  |  |  | "    If mode == Z_FINISH, the compressor object can no longer be\n" | 
					
						
							|  |  |  | "    used after calling the flush() method.  Otherwise, more data\n" | 
					
						
							|  |  |  | "    can still be compressed."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS_FLUSH_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"flush", (PyCFunction)(void(*)(void))zlib_Compress_flush, METH_FASTCALL, zlib_Compress_flush__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress_flush_impl(compobject *self, int mode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_Compress_flush(compobject *self, PyObject *const *args, Py_ssize_t nargs) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							|  |  |  |     int mode = Z_FINISH; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("flush", nargs, 0, 1)) { | 
					
						
							| 
									
										
										
										
											2017-01-17 01:35:17 +01:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (nargs < 1) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (PyFloat_Check(args[0])) { | 
					
						
							|  |  |  |         PyErr_SetString(PyExc_TypeError, | 
					
						
							|  |  |  |                         "integer argument expected, got float" ); | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     mode = _PyLong_AsInt(args[0]); | 
					
						
							|  |  |  |     if (mode == -1 && PyErr_Occurred()) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_Compress_flush_impl(self, mode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 22:03:12 -08:00
										 |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | PyDoc_STRVAR(zlib_Compress_copy__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "copy($self, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a copy of the compression object."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS_COPY_METHODDEF    \
 | 
					
						
							|  |  |  |     {"copy", (PyCFunction)zlib_Compress_copy, METH_NOARGS, zlib_Compress_copy__doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress_copy_impl(compobject *self); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress_copy(compobject *self, PyObject *Py_UNUSED(ignored)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return zlib_Compress_copy_impl(self); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 22:03:12 -08:00
										 |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-27 12:04:51 -06:00
										 |  |  | PyDoc_STRVAR(zlib_Compress___copy____doc__, | 
					
						
							|  |  |  | "__copy__($self, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS___COPY___METHODDEF    \
 | 
					
						
							|  |  |  |     {"__copy__", (PyCFunction)zlib_Compress___copy__, METH_NOARGS, zlib_Compress___copy____doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress___copy___impl(compobject *self); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Compress___copy__(compobject *self, PyObject *Py_UNUSED(ignored)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return zlib_Compress___copy___impl(self); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Compress___deepcopy____doc__, | 
					
						
							|  |  |  | "__deepcopy__($self, memo, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_COMPRESS___DEEPCOPY___METHODDEF    \
 | 
					
						
							|  |  |  |     {"__deepcopy__", (PyCFunction)zlib_Compress___deepcopy__, METH_O, zlib_Compress___deepcopy____doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | PyDoc_STRVAR(zlib_Decompress_copy__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "copy($self, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a copy of the decompression object."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS_COPY_METHODDEF    \
 | 
					
						
							|  |  |  |     {"copy", (PyCFunction)zlib_Decompress_copy, METH_NOARGS, zlib_Decompress_copy__doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Decompress_copy_impl(compobject *self); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Decompress_copy(compobject *self, PyObject *Py_UNUSED(ignored)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return zlib_Decompress_copy_impl(self); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-31 22:03:12 -08:00
										 |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-27 12:04:51 -06:00
										 |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Decompress___copy____doc__, | 
					
						
							|  |  |  | "__copy__($self, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS___COPY___METHODDEF    \
 | 
					
						
							|  |  |  |     {"__copy__", (PyCFunction)zlib_Decompress___copy__, METH_NOARGS, zlib_Decompress___copy____doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Decompress___copy___impl(compobject *self); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							|  |  |  | zlib_Decompress___copy__(compobject *self, PyObject *Py_UNUSED(ignored)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return zlib_Decompress___copy___impl(self); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(HAVE_ZLIB_COPY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_Decompress___deepcopy____doc__, | 
					
						
							|  |  |  | "__deepcopy__($self, memo, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF    \
 | 
					
						
							|  |  |  |     {"__deepcopy__", (PyCFunction)zlib_Decompress___deepcopy__, METH_O, zlib_Decompress___deepcopy____doc__}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* defined(HAVE_ZLIB_COPY) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | PyDoc_STRVAR(zlib_Decompress_flush__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "flush($self, length=zlib.DEF_BUF_SIZE, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Return a bytes object containing any remaining decompressed data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  length\n" | 
					
						
							|  |  |  | "    the initial size of the output buffer."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_DECOMPRESS_FLUSH_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"flush", (PyCFunction)(void(*)(void))zlib_Decompress_flush, METH_FASTCALL, zlib_Decompress_flush__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  | zlib_Decompress_flush_impl(compobject *self, Py_ssize_t length); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_Decompress_flush(compobject *self, PyObject *const *args, Py_ssize_t nargs) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							| 
									
										
										
										
											2016-07-23 03:02:07 +00:00
										 |  |  |     Py_ssize_t length = DEF_BUF_SIZE; | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("flush", nargs, 0, 1)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (nargs < 1) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!ssize_t_converter(args[0], &length)) { | 
					
						
							| 
									
										
										
										
											2017-01-17 01:35:17 +01:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_Decompress_flush_impl(self, length); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_adler32__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "adler32($module, data, value=1, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Compute an Adler-32 checksum of data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  value\n" | 
					
						
							|  |  |  | "    Starting value of the checksum.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "The returned checksum is an integer."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_ADLER32_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"adler32", (PyCFunction)(void(*)(void))zlib_adler32, METH_FASTCALL, zlib_adler32__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 17:35:15 +03:00
										 |  |  | zlib_adler32_impl(PyObject *module, Py_buffer *data, unsigned int value); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_adler32(PyObject *module, PyObject *const *args, Py_ssize_t nargs) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							|  |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							|  |  |  |     unsigned int value = 1; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("adler32", nargs, 1, 2)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (PyObject_GetBuffer(args[0], &data, PyBUF_SIMPLE) != 0) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!PyBuffer_IsContiguous(&data, 'C')) { | 
					
						
							|  |  |  |         _PyArg_BadArgument("adler32", 1, "contiguous buffer", args[0]); | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (nargs < 2) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (PyFloat_Check(args[1])) { | 
					
						
							|  |  |  |         PyErr_SetString(PyExc_TypeError, | 
					
						
							|  |  |  |                         "integer argument expected, got float" ); | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     value = (unsigned int)PyLong_AsUnsignedLongMask(args[1]); | 
					
						
							|  |  |  |     if (value == (unsigned int)-1 && PyErr_Occurred()) { | 
					
						
							| 
									
										
										
										
											2017-01-17 01:35:17 +01:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_adler32_impl(module, &data, value); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyDoc_STRVAR(zlib_crc32__doc__, | 
					
						
							| 
									
										
										
										
											2014-02-08 22:15:29 -08:00
										 |  |  | "crc32($module, data, value=0, /)\n" | 
					
						
							|  |  |  | "--\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | "Compute a CRC-32 checksum of data.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "  value\n" | 
					
						
							|  |  |  | "    Starting value of the checksum.\n" | 
					
						
							|  |  |  | "\n" | 
					
						
							|  |  |  | "The returned checksum is an integer."); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ZLIB_CRC32_METHODDEF    \
 | 
					
						
							| 
									
										
										
										
											2018-11-27 11:27:36 +02:00
										 |  |  |     {"crc32", (PyCFunction)(void(*)(void))zlib_crc32, METH_FASTCALL, zlib_crc32__doc__}, | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2016-07-07 17:35:15 +03:00
										 |  |  | zlib_crc32_impl(PyObject *module, Py_buffer *data, unsigned int value); | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static PyObject * | 
					
						
							| 
									
										
										
										
											2017-12-15 13:11:11 +02:00
										 |  |  | zlib_crc32(PyObject *module, PyObject *const *args, Py_ssize_t nargs) | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     PyObject *return_value = NULL; | 
					
						
							|  |  |  |     Py_buffer data = {NULL, NULL}; | 
					
						
							|  |  |  |     unsigned int value = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  |     if (!_PyArg_CheckPositional("crc32", nargs, 1, 2)) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (PyObject_GetBuffer(args[0], &data, PyBUF_SIMPLE) != 0) { | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (!PyBuffer_IsContiguous(&data, 'C')) { | 
					
						
							|  |  |  |         _PyArg_BadArgument("crc32", 1, "contiguous buffer", args[0]); | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (nargs < 2) { | 
					
						
							|  |  |  |         goto skip_optional; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (PyFloat_Check(args[1])) { | 
					
						
							|  |  |  |         PyErr_SetString(PyExc_TypeError, | 
					
						
							|  |  |  |                         "integer argument expected, got float" ); | 
					
						
							|  |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     value = (unsigned int)PyLong_AsUnsignedLongMask(args[1]); | 
					
						
							|  |  |  |     if (value == (unsigned int)-1 && PyErr_Occurred()) { | 
					
						
							| 
									
										
										
										
											2017-01-17 01:35:17 +01:00
										 |  |  |         goto exit; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  | skip_optional: | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |     return_value = zlib_crc32_impl(module, &data, value); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exit: | 
					
						
							|  |  |  |     /* Cleanup for data */ | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     if (data.obj) { | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  |        PyBuffer_Release(&data); | 
					
						
							| 
									
										
										
										
											2016-06-09 16:16:06 +03:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-01-27 00:03:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return return_value; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-04-03 13:09:02 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef ZLIB_COMPRESS_COPY_METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_COMPRESS_COPY_METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */
 | 
					
						
							| 
									
										
										
										
											2017-11-03 11:09:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-27 12:04:51 -06:00
										 |  |  | #ifndef ZLIB_COMPRESS___COPY___METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_COMPRESS___COPY___METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_COMPRESS___COPY___METHODDEF) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ZLIB_COMPRESS___DEEPCOPY___METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_COMPRESS___DEEPCOPY___METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_COMPRESS___DEEPCOPY___METHODDEF) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-03 11:09:00 +02:00
										 |  |  | #ifndef ZLIB_DECOMPRESS_COPY_METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_DECOMPRESS_COPY_METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_DECOMPRESS_COPY_METHODDEF) */
 | 
					
						
							| 
									
										
										
										
											2018-06-27 12:04:51 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef ZLIB_DECOMPRESS___COPY___METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_DECOMPRESS___COPY___METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_DECOMPRESS___COPY___METHODDEF) */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
 | 
					
						
							|  |  |  |     #define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
 | 
					
						
							|  |  |  | #endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */
 | 
					
						
							| 
									
										
										
										
											2019-01-11 16:01:14 +02:00
										 |  |  | /*[clinic end generated code: output=b3acec2384f18782 input=a9049054013a1b77]*/ |