[pypy-commit] cffi cffi-1.0: Add keyword arguments to a few ffi methods

arigo noreply at buildbot.pypy.org
Fri May 8 11:35:48 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: cffi-1.0
Changeset: r1930:f9eca71a085b
Date: 2015-05-08 11:36 +0200
http://bitbucket.org/cffi/cffi/changeset/f9eca71a085b/

Log:	Add keyword arguments to a few ffi methods

diff --git a/_cffi1/ffi_obj.c b/_cffi1/ffi_obj.c
--- a/_cffi1/ffi_obj.c
+++ b/_cffi1/ffi_obj.c
@@ -91,7 +91,7 @@
 
 static int ffiobj_init(PyObject *self, PyObject *args, PyObject *kwds)
 {
-    char *keywords[] = {NULL};
+    static char *keywords[] = {NULL};
     if (!PyArg_ParseTupleAndKeywords(args, kwds, ":FFI", keywords))
         return -1;
     return 0;
@@ -255,11 +255,13 @@
 "used for a longer time.  Be careful about that when copying the\n"
 "pointer to the memory somewhere else, e.g. into another structure.");
 
-static PyObject *ffi_new(FFIObject *self, PyObject *args)
+static PyObject *ffi_new(FFIObject *self, PyObject *args, PyObject *kwds)
 {
     CTypeDescrObject *ct;
     PyObject *arg, *init = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:new", &arg, &init))
+    static char *keywords[] = {"cdecl", "init", NULL};
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:new", keywords,
+                                     &arg, &init))
         return NULL;
 
     ct = _ffi_type(self, arg, ACCEPT_STRING|ACCEPT_CTYPE);
@@ -441,15 +443,17 @@
 "extra text to append (or insert for more complicated C types), like a\n"
 "variable name, or '*' to get actually the C type 'pointer-to-cdecl'.");
 
-static PyObject *ffi_getctype(FFIObject *self, PyObject *args)
+static PyObject *ffi_getctype(FFIObject *self, PyObject *args, PyObject *kwds)
 {
     PyObject *c_decl, *res;
     char *p, *replace_with = "";
     int add_paren, add_space;
     CTypeDescrObject *ct;
     size_t replace_with_len;
+    static char *keywords[] = {"cdecl", "replace_with", NULL};
 
-    if (!PyArg_ParseTuple(args, "O|s:getctype", &c_decl, &replace_with))
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s:getctype", keywords,
+                                     &c_decl, &replace_with))
         return NULL;
 
     ct = _ffi_type(self, c_decl, ACCEPT_STRING|ACCEPT_CTYPE);
@@ -568,12 +572,14 @@
 static PyObject *gc_weakrefs_build(FFIObject *ffi, CDataObject *cd,
                                    PyObject *destructor);   /* forward */
 
-static PyObject *ffi_gc(FFIObject *self, PyObject *args)
+static PyObject *ffi_gc(FFIObject *self, PyObject *args, PyObject *kwds)
 {
     CDataObject *cd;
     PyObject *destructor;
+    static char *keywords[] = {"cdata", "destructor", NULL};
 
-    if (!PyArg_ParseTuple(args, "O!O:gc", &CData_Type, &cd, &destructor))
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!O:gc", keywords,
+                                     &CData_Type, &cd, &destructor))
         return NULL;
 
     return gc_weakrefs_build(self, cd, destructor);
@@ -744,22 +750,22 @@
 }
 #endif
 
+#define METH_VKW  (METH_VARARGS | METH_KEYWORDS)
 static PyMethodDef ffi_methods[] = {
  {"addressof",  (PyCFunction)ffi_addressof,  METH_VARARGS, ffi_addressof_doc},
  {"alignof",    (PyCFunction)ffi_alignof,    METH_O,       ffi_alignof_doc},
  {"buffer",     (PyCFunction)ffi_buffer,     METH_VARARGS, ffi_buffer_doc},
- {"callback",   (PyCFunction)ffi_callback,   METH_VARARGS |
-                                             METH_KEYWORDS,ffi_callback_doc},
+ {"callback",   (PyCFunction)ffi_callback,   METH_VKW,     ffi_callback_doc},
  {"cast",       (PyCFunction)ffi_cast,       METH_VARARGS, ffi_cast_doc},
  {"from_buffer",(PyCFunction)ffi_from_buffer,METH_O,       ffi_from_buffer_doc},
  {"from_handle",(PyCFunction)ffi_from_handle,METH_O,       ffi_from_handle_doc},
- {"gc",         (PyCFunction)ffi_gc,         METH_VARARGS, ffi_gc_doc},
- {"getctype",   (PyCFunction)ffi_getctype,   METH_VARARGS, ffi_getctype_doc},
+ {"gc",         (PyCFunction)ffi_gc,         METH_VKW,     ffi_gc_doc},
+ {"getctype",   (PyCFunction)ffi_getctype,   METH_VKW,     ffi_getctype_doc},
 #ifdef MS_WIN32
  {"getwinerror",(PyCFunction)ffi_getwinerror,METH_VARARGS, ffi_getwinerror_doc},
 #endif
  {"offsetof",   (PyCFunction)ffi_offsetof,   METH_VARARGS, ffi_offsetof_doc},
- {"new",        (PyCFunction)ffi_new,        METH_VARARGS, ffi_new_doc},
+ {"new",        (PyCFunction)ffi_new,        METH_VKW,     ffi_new_doc},
  {"new_handle", (PyCFunction)ffi_new_handle, METH_O,       ffi_new_handle_doc},
  {"sizeof",     (PyCFunction)ffi_sizeof,     METH_O,       ffi_sizeof_doc},
  {"string",     (PyCFunction)ffi_string,     METH_VARARGS, ffi_string_doc},


More information about the pypy-commit mailing list