contrib/python-zstandard/c-ext/decompressobj.c
changeset 42070 675775c33ab6
parent 40121 73fef626dae3
child 46374 e92ca942ddca
equal deleted inserted replaced
42069:668eff08387f 42070:675775c33ab6
    73 	output.size = self->outSize;
    73 	output.size = self->outSize;
    74 	output.pos = 0;
    74 	output.pos = 0;
    75 
    75 
    76 	while (1) {
    76 	while (1) {
    77 		Py_BEGIN_ALLOW_THREADS
    77 		Py_BEGIN_ALLOW_THREADS
    78 		zresult = ZSTD_decompress_generic(self->decompressor->dctx, &output, &input);
    78 		zresult = ZSTD_decompressStream(self->decompressor->dctx, &output, &input);
    79 		Py_END_ALLOW_THREADS
    79 		Py_END_ALLOW_THREADS
    80 
    80 
    81 		if (ZSTD_isError(zresult)) {
    81 		if (ZSTD_isError(zresult)) {
    82 			PyErr_Format(ZstdError, "zstd decompressor error: %s",
    82 			PyErr_Format(ZstdError, "zstd decompressor error: %s",
    83 				ZSTD_getErrorName(zresult));
    83 				ZSTD_getErrorName(zresult));
   128 	PyBuffer_Release(&source);
   128 	PyBuffer_Release(&source);
   129 
   129 
   130 	return result;
   130 	return result;
   131 }
   131 }
   132 
   132 
       
   133 static PyObject* DecompressionObj_flush(ZstdDecompressionObj* self, PyObject* args, PyObject* kwargs) {
       
   134 	static char* kwlist[] = {
       
   135 		"length",
       
   136 		NULL
       
   137 	};
       
   138 
       
   139 	PyObject* length = NULL;
       
   140 
       
   141 	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:flush", kwlist, &length)) {
       
   142 	return NULL;
       
   143 	}
       
   144 
       
   145 	Py_RETURN_NONE;
       
   146 }
       
   147 
   133 static PyMethodDef DecompressionObj_methods[] = {
   148 static PyMethodDef DecompressionObj_methods[] = {
   134 	{ "decompress", (PyCFunction)DecompressionObj_decompress,
   149 	{ "decompress", (PyCFunction)DecompressionObj_decompress,
   135 	  METH_VARARGS | METH_KEYWORDS, PyDoc_STR("decompress data") },
   150 	  METH_VARARGS | METH_KEYWORDS, PyDoc_STR("decompress data") },
       
   151 	{ "flush", (PyCFunction)DecompressionObj_flush,
       
   152 	  METH_VARARGS | METH_KEYWORDS, PyDoc_STR("no-op") },
   136 	{ NULL, NULL }
   153 	{ NULL, NULL }
   137 };
   154 };
   138 
   155 
   139 PyTypeObject ZstdDecompressionObjType = {
   156 PyTypeObject ZstdDecompressionObjType = {
   140 	PyVarObject_HEAD_INIT(NULL, 0)
   157 	PyVarObject_HEAD_INIT(NULL, 0)