]> granicus.if.org Git - python/commitdiff
Clinic: fix "self converters" with METH_NOARGS functions.
authorLarry Hastings <larry@hastings.org>
Sun, 24 Nov 2013 12:41:57 +0000 (04:41 -0800)
committerLarry Hastings <larry@hastings.org>
Sun, 24 Nov 2013 12:41:57 +0000 (04:41 -0800)
Modules/zlibmodule.c
Tools/clinic/clinic.py

index 425de988209d48a8aa3c275c5ef1ed57dd7a6049..bf8c8e4d1212a604c699c6fa346912489b792ce6 100644 (file)
@@ -312,6 +312,9 @@ class uint_converter(CConverter):
     type = 'unsigned int'
     converter = 'uint_converter'
 
+class compobject_converter(self_converter):
+    type = "compobject *"
+
 [python]*/
 /*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
 
@@ -746,6 +749,8 @@ save_unconsumed_input(compobject *self, int err)
 
 zlib.Decompress.decompress
 
+    self: compobject
+
     data: Py_buffer
         The binary data to decompress.
     max_length: uint = 0
@@ -780,7 +785,7 @@ PyDoc_STRVAR(zlib_Decompress_decompress__doc__,
     {"decompress", (PyCFunction)zlib_Decompress_decompress, METH_VARARGS, zlib_Decompress_decompress__doc__},
 
 static PyObject *
-zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int max_length);
+zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length);
 
 static PyObject *
 zlib_Decompress_decompress(PyObject *self, PyObject *args)
@@ -793,7 +798,7 @@ zlib_Decompress_decompress(PyObject *self, PyObject *args)
         "y*|O&:decompress",
         &data, uint_converter, &max_length))
         goto exit;
-    return_value = zlib_Decompress_decompress_impl(self, &data, max_length);
+    return_value = zlib_Decompress_decompress_impl((compobject *)self, &data, max_length);
 
 exit:
     /* Cleanup for data */
@@ -804,10 +809,9 @@ exit:
 }
 
 static PyObject *
-zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int max_length)
-/*[clinic checksum: 4683928665a1fa6987f5c57cada4a22807a78fbb]*/
+zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length)
+/*[clinic checksum: 3599698948f5a712f5a8309491671cc2ce969d2c]*/
 {
-    compobject *zself = (compobject *)self;
     int err;
     unsigned int old_length, length = DEFAULTALLOC;
     PyObject *RetVal = NULL;
@@ -825,21 +829,21 @@ zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int ma
     if (!(RetVal = PyBytes_FromStringAndSize(NULL, length)))
         return NULL;
 
-    ENTER_ZLIB(zself);
+    ENTER_ZLIB(self);
 
-    start_total_out = zself->zst.total_out;
-    zself->zst.avail_in = (unsigned int)data->len;
-    zself->zst.next_in = data->buf;
-    zself->zst.avail_out = length;
-    zself->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal);
+    start_total_out = self->zst.total_out;
+    self->zst.avail_in = (unsigned int)data->len;
+    self->zst.next_in = data->buf;
+    self->zst.avail_out = length;
+    self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal);
 
     Py_BEGIN_ALLOW_THREADS
-    err = inflate(&(zself->zst), Z_SYNC_FLUSH);
+    err = inflate(&(self->zst), Z_SYNC_FLUSH);
     Py_END_ALLOW_THREADS
 
-    if (err == Z_NEED_DICT && zself->zdict != NULL) {
+    if (err == Z_NEED_DICT && self->zdict != NULL) {
         Py_buffer zdict_buf;
-        if (PyObject_GetBuffer(zself->zdict, &zdict_buf, PyBUF_SIMPLE) == -1) {
+        if (PyObject_GetBuffer(self->zdict, &zdict_buf, PyBUF_SIMPLE) == -1) {
             Py_DECREF(RetVal);
             RetVal = NULL;
             goto error;
@@ -853,24 +857,24 @@ zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int ma
             goto error;
         }
 
-        err = inflateSetDictionary(&(zself->zst),
+        err = inflateSetDictionary(&(self->zst),
                                    zdict_buf.buf, (unsigned int)zdict_buf.len);
         PyBuffer_Release(&zdict_buf);
         if (err != Z_OK) {
-            zlib_error(zself->zst, err, "while decompressing data");
+            zlib_error(self->zst, err, "while decompressing data");
             Py_CLEAR(RetVal);
             goto error;
         }
         /* Repeat the call to inflate. */
         Py_BEGIN_ALLOW_THREADS
-        err = inflate(&(zself->zst), Z_SYNC_FLUSH);
+        err = inflate(&(self->zst), Z_SYNC_FLUSH);
         Py_END_ALLOW_THREADS
     }
 
     /* While Z_OK and the output buffer is full, there might be more output.
        So extend the output buffer and try again.
     */
-    while (err == Z_OK && zself->zst.avail_out == 0) {
+    while (err == Z_OK && self->zst.avail_out == 0) {
         /* If max_length set, don't continue decompressing if we've already
            reached the limit.
         */
@@ -887,16 +891,16 @@ zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int ma
             Py_CLEAR(RetVal);
             goto error;
         }
-        zself->zst.next_out =
+        self->zst.next_out =
             (unsigned char *)PyBytes_AS_STRING(RetVal) + old_length;
-        zself->zst.avail_out = length - old_length;
+        self->zst.avail_out = length - old_length;
 
         Py_BEGIN_ALLOW_THREADS
-        err = inflate(&(zself->zst), Z_SYNC_FLUSH);
+        err = inflate(&(self->zst), Z_SYNC_FLUSH);
         Py_END_ALLOW_THREADS
     }
 
-    if (save_unconsumed_input(zself, err) < 0) {
+    if (save_unconsumed_input(self, err) < 0) {
         Py_DECREF(RetVal);
         RetVal = NULL;
         goto error;
@@ -905,24 +909,24 @@ zlib_Decompress_decompress_impl(PyObject *self, Py_buffer *data, unsigned int ma
     if (err == Z_STREAM_END) {
         /* This is the logical place to call inflateEnd, but the old behaviour
            of only calling it on flush() is preserved. */
-        zself->eof = 1;
+        self->eof = 1;
     } else if (err != Z_OK && err != Z_BUF_ERROR) {
         /* We will only get Z_BUF_ERROR if the output buffer was full
            but there wasn't more output when we tried again, so it is
            not an error condition.
         */
-        zlib_error(zself->zst, err, "while decompressing data");
+        zlib_error(self->zst, err, "while decompressing data");
         Py_DECREF(RetVal);
         RetVal = NULL;
         goto error;
     }
 
-    if (_PyBytes_Resize(&RetVal, zself->zst.total_out - start_total_out) < 0) {
+    if (_PyBytes_Resize(&RetVal, self->zst.total_out - start_total_out) < 0) {
         Py_CLEAR(RetVal);
     }
 
  error:
-    LEAVE_ZLIB(zself);
+    LEAVE_ZLIB(self);
     return RetVal;
 }
 
@@ -1027,6 +1031,8 @@ PyZlib_flush(compobject *self, PyObject *args)
 /*[clinic]
 zlib.Compress.copy
 
+    self: compobject
+
 Return a copy of the compression object.
 [clinic]*/
 
@@ -1038,10 +1044,9 @@ PyDoc_STRVAR(zlib_Compress_copy__doc__,
     {"copy", (PyCFunction)zlib_Compress_copy, METH_NOARGS, zlib_Compress_copy__doc__},
 
 static PyObject *
-zlib_Compress_copy(PyObject *self)
-/*[clinic checksum: 8d30351f05defbc2b335c2a78d18f07aa367bb1d]*/
+zlib_Compress_copy(compobject *self)
+/*[clinic checksum: 0b37c07f8f27deb7d4769951fbecf600a1006ef8]*/
 {
-    compobject *zself = (compobject *)self;
     compobject *retval = NULL;
     int err;
 
@@ -1051,8 +1056,8 @@ zlib_Compress_copy(PyObject *self)
     /* Copy the zstream state
      * We use ENTER_ZLIB / LEAVE_ZLIB to make this thread-safe
      */
-    ENTER_ZLIB(zself);
-    err = deflateCopy(&retval->zst, &zself->zst);
+    ENTER_ZLIB(self);
+    err = deflateCopy(&retval->zst, &self->zst);
     switch(err) {
     case(Z_OK):
         break;
@@ -1064,28 +1069,28 @@ zlib_Compress_copy(PyObject *self)
                         "Can't allocate memory for compression object");
         goto error;
     default:
-        zlib_error(zself->zst, err, "while copying compression object");
+        zlib_error(self->zst, err, "while copying compression object");
         goto error;
     }
-    Py_INCREF(zself->unused_data);
-    Py_INCREF(zself->unconsumed_tail);
-    Py_XINCREF(zself->zdict);
+    Py_INCREF(self->unused_data);
+    Py_INCREF(self->unconsumed_tail);
+    Py_XINCREF(self->zdict);
     Py_XDECREF(retval->unused_data);
     Py_XDECREF(retval->unconsumed_tail);
     Py_XDECREF(retval->zdict);
-    retval->unused_data = zself->unused_data;
-    retval->unconsumed_tail = zself->unconsumed_tail;
-    retval->zdict = zself->zdict;
-    retval->eof = zself->eof;
+    retval->unused_data = self->unused_data;
+    retval->unconsumed_tail = self->unconsumed_tail;
+    retval->zdict = self->zdict;
+    retval->eof = self->eof;
 
     /* Mark it as being initialized */
     retval->is_initialised = 1;
 
-    LEAVE_ZLIB(zself);
+    LEAVE_ZLIB(self);
     return (PyObject *)retval;
 
 error:
-    LEAVE_ZLIB(zself);
+    LEAVE_ZLIB(self);
     Py_XDECREF(retval);
     return NULL;
 }
index cac90e1bdb90f38c6073b6712e4624ea2a4ea41a..c332b0cb5a5c9f4b7706849522983c266cc73568 100755 (executable)
@@ -403,7 +403,7 @@ PyDoc_STRVAR({c_basename}__doc__,
     def meth_noargs_pyobject_template(self, methoddef_flags=""):
         return self.template_base("METH_NOARGS", methoddef_flags) + """
 static PyObject *
-{c_basename}({self_type}{self_name})
+{c_basename}({impl_parameters})
 """
 
     def meth_noargs_template(self, methoddef_flags=""):