pyke/pyke.h: Add a `MEMBER' variant with explicit member name.
[catacomb-python] / buffer.c
index 43ed43d..690c7cd 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -107,10 +107,9 @@ end:
 }
 
 #define RBMETH_GETU_(n, W, w)                                          \
-  static PyObject *rbmeth_getu##w(PyObject *me, PyObject *arg)         \
+  static PyObject *rbmeth_getu##w(PyObject *me)                                \
   {                                                                    \
     uint##n x;                                                         \
-    if (!PyArg_ParseTuple(arg, ":getu" #w)) goto end;                  \
     if (buf_getu##w(BUF_B(me), &x)) BUFERR("buffer exhausted");                \
     if (MASK##W <= ULONG_MAX) return (getulong(x));                    \
     else { kludge64 y; ASSIGN64(y, x); return (getk64(y)); }           \
@@ -120,11 +119,10 @@ end:
 DOUINTCONV(RBMETH_GETU_)
 
 #define RBMETH_GETBLK_(n, W, w)                                                \
-  static PyObject *rbmeth_getblk##w(PyObject *me, PyObject *arg)       \
+  static PyObject *rbmeth_getblk##w(PyObject *me)                      \
   {                                                                    \
     size_t sz;                                                         \
     char *q;                                                           \
-    if (!PyArg_ParseTuple(arg, ":getblk" #w)) goto end;                        \
     if ((q = buf_getmem##w(BUF_B(me), &sz)) == 0)                      \
       BUFERR("buffer exhausted");                                      \
     return (bytestring_pywrap(q, sz));                                 \
@@ -134,11 +132,10 @@ DOUINTCONV(RBMETH_GETU_)
 BUF_DOSUFFIXES(RBMETH_GETBLK_)
 
 #define RBMETH_GETBUF_(n, W, w)                                                \
-  static PyObject *rbmeth_getbuf##w(PyObject *me, PyObject *arg)       \
+  static PyObject *rbmeth_getbuf##w(PyObject *me)                      \
   {                                                                    \
     buf_pyobj *b;                                                      \
     buf bb;                                                            \
-    if (!PyArg_ParseTuple(arg, ":getbuf" #w)) goto end;                        \
     if (buf_getbuf##w(BUF_B(me), &bb)) BUFERR("buffer exhausted");     \
     b = PyObject_NEW(buf_pyobj, rbuf_pytype);                          \
     b->b = bb;                                                         \
@@ -150,20 +147,18 @@ BUF_DOSUFFIXES(RBMETH_GETBLK_)
   }
 BUF_DOSUFFIXES(RBMETH_GETBUF_)
 
-static PyObject *rbmeth_getmp(PyObject *me, PyObject *arg)
+static PyObject *rbmeth_getmp(PyObject *me)
 {
   mp *x;
-  if (!PyArg_ParseTuple(arg, ":getmp")) goto end;
   if ((x = buf_getmp(BUF_B(me))) == 0) BUFERR("buffer exhausted");
   return (mp_pywrap(x));
 end:
   return (0);
 }
 
-static PyObject *rbmeth_getgf(PyObject *me, PyObject *arg)
+static PyObject *rbmeth_getgf(PyObject *me)
 {
   mp *x;
-  if (!PyArg_ParseTuple(arg, ":getgf")) goto end;
   if ((x = buf_getmp(BUF_B(me))) == 0) BUFERR("buffer exhausted");
   return (gf_pywrap(x));
 end:
@@ -245,7 +240,7 @@ end:
   return (-1);
 }
 
-static PyGetSetDef rbuf_pygetset[] = {
+static const PyGetSetDef rbuf_pygetset[] = {
 #define GETSETNAME(op, name) rb##op##_##name
   GET  (size,          "RBUF.size -> SIZE")
   GET  (left,          "RBUF.left -> REMAINDER")
@@ -255,21 +250,21 @@ static PyGetSetDef rbuf_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef rbuf_pymethods[] = {
+static const PyMethodDef rbuf_pymethods[] = {
 #define METHNAME(func) rbmeth_##func
   METH (skip,          "RBUF.skip(N)")
   METH (get,           "RBUF.get(N) -> BYTES")
 #define RBMETH_DECL_GETU_(n, W, w)                                     \
-    METH(getu##w,      "RBUF.getu" #w "() -> INT")
+    NAMETH(getu##w,    "RBUF.getu" #w "() -> INT")
   DOUINTCONV(RBMETH_DECL_GETU_)
 #define RBMETH_DECL_GETBLK_(n, W, w)                                   \
-    METH(getblk##w,    "RBUF.getblk" #w "() -> BYTES")
+    NAMETH(getblk##w,  "RBUF.getblk" #w "() -> BYTES")
   BUF_DOSUFFIXES(RBMETH_DECL_GETBLK_)
 #define RBMETH_DECL_GETBUF_(n, W, w)                                   \
-    METH(getbuf##w,    "RBUF.getbuf" #w "() -> RBUF'")
+    NAMETH(getbuf##w,  "RBUF.getbuf" #w "() -> RBUF'")
   BUF_DOSUFFIXES(RBMETH_DECL_GETBUF_)
-  METH (getmp,         "RBUF.getmp() -> X")
-  METH (getgf,         "RBUF.getgf() -> X")
+  NAMETH(getmp,                "RBUF.getmp() -> X")
+  NAMETH(getgf,                "RBUF.getgf() -> X")
   KWMETH(getecpt,      "RBUF.getecpt([curve = None]) -> P")
   METH (getecptraw,    "RBUF.getecptraw(CURVE) -> P")
   METH (getge,         "RBUF.getge(GROUP) -> X")
@@ -278,7 +273,7 @@ static PyMethodDef rbuf_pymethods[] = {
   { 0 }
 };
 
-static PyBufferProcs rbuf_pybuffer = {
+static const PyBufferProcs rbuf_pybuffer = {
   rbuf_pyreadbuf,                      /* @bf_getreadbuffer@ */
   0,                                   /* @bf_getwritebuffer@ */
   rbuf_pysegcount,                     /* @bf_getsegcount@ */
@@ -305,7 +300,7 @@ static PyTypeObject rbuf_pytype_skel = {
   0,                                   /* @tp_str@ */
   0,                                   /* @tp_getattro@ */
   0,                                   /* @tp_setattro@ */
-  &rbuf_pybuffer,                      /* @tp_as_buffer@ */
+  PYBUFFER(rbuf),                      /* @tp_as_buffer@ */
   Py_TPFLAGS_DEFAULT |                 /* @tp_flags@ */
     Py_TPFLAGS_BASETYPE,
 
@@ -318,9 +313,9 @@ static PyTypeObject rbuf_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  rbuf_pymethods,                      /* @tp_methods@ */
+  PYMETHODS(rbuf),                     /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  rbuf_pygetset,                       /* @tp_getset@ */
+  PYGETSET(rbuf),                      /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */
@@ -490,7 +485,7 @@ static PyObject *wbget_size(PyObject *me, void *hunoz)
 static PyObject *wbget_contents(PyObject *me, void *hunoz)
   { return (bytestring_pywrap(BBASE(BUF_B(me)), BLEN(BUF_B(me)))); }
 
-static PyGetSetDef wbuf_pygetset[] = {
+static const PyGetSetDef wbuf_pygetset[] = {
 #define GETSETNAME(op, name) wb##op##_##name
   GET  (size,          "WBUF.size -> SIZE")
   GET  (contents,      "WBUF.contents -> STR")
@@ -498,7 +493,7 @@ static PyGetSetDef wbuf_pygetset[] = {
   { 0 }
 };
 
-static PyMethodDef wbuf_pymethods[] = {
+static const PyMethodDef wbuf_pymethods[] = {
 #define METHNAME(func) wbmeth_##func
   METH (zero,          "WBUF.zero(N)")
   METH (put,           "WBUF.put(BYTES)")
@@ -518,7 +513,7 @@ static PyMethodDef wbuf_pymethods[] = {
   { 0 }
 };
 
-static PyBufferProcs wbuf_pybuffer = {
+static const PyBufferProcs wbuf_pybuffer = {
   wbuf_pyreadbuf,                      /* @bf_getreadbuffer@ */
   0,                                   /* @bf_getwritebuffer@ */
   wbuf_pysegcount,                     /* @bf_getsegcount@ */
@@ -545,7 +540,7 @@ static PyTypeObject wbuf_pytype_skel = {
   0,                                   /* @tp_str@ */
   0,                                   /* @tp_getattro@ */
   0,                                   /* @tp_setattro@ */
-  &wbuf_pybuffer,                      /* @tp_as_buffer@ */
+  PYBUFFER(wbuf),                      /* @tp_as_buffer@ */
   Py_TPFLAGS_DEFAULT |                 /* @tp_flags@ */
     Py_TPFLAGS_BASETYPE,
 
@@ -558,9 +553,9 @@ static PyTypeObject wbuf_pytype_skel = {
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
-  wbuf_pymethods,                      /* @tp_methods@ */
+  PYMETHODS(wbuf),                     /* @tp_methods@ */
   0,                                   /* @tp_members@ */
-  wbuf_pygetset,                       /* @tp_getset@ */
+  PYGETSET(wbuf),                      /* @tp_getset@ */
   0,                                   /* @tp_base@ */
   0,                                   /* @tp_dict@ */
   0,                                   /* @tp_descr_get@ */