return (getbool(PyMapping_HasKey(me, k)));
}
-PyObject *gmapmeth_keys(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_keys(PyObject *me)
{
PyObject *l = 0, *i = 0, *k, *rc = 0;
int err;
- if (!PyArg_ParseTuple(arg, ":keys") ||
- (l = PyList_New(0)) == 0 ||
+ if ((l = PyList_New(0)) == 0 ||
(i = PyObject_GetIter(me)) == 0)
goto done;
while ((k = PyIter_Next(i)) != 0)
return (rc);
}
-PyObject *gmapmeth_values(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_values(PyObject *me)
{
PyObject *l = 0, *i = 0, *k, *v, *rc = 0;
int err = 0;
- if (!PyArg_ParseTuple(arg, ":values") ||
- (l = PyList_New(0)) == 0 ||
+ if ((l = PyList_New(0)) == 0 ||
(i = PyObject_GetIter(me)) == 0)
goto done;
while ((k = PyIter_Next(i)) != 0) {
return (rc);
}
-PyObject *gmapmeth_items(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_items(PyObject *me)
{
PyObject *l = 0, *i = 0, *k, *v, *z, *rc = 0;
int err = 0;
- if (!PyArg_ParseTuple(arg, ":items") ||
- (l = PyList_New(0)) == 0 ||
+ if ((l = PyList_New(0)) == 0 ||
(i = PyObject_GetIter(me)) == 0)
goto done;
while ((k = PyIter_Next(i)) != 0) {
return (rc);
}
-PyObject *gmapmeth_iterkeys(PyObject *me, PyObject *arg)
-{
- if (!PyArg_ParseTuple(arg, ":iterkeys")) return (0);
- return (PyObject_GetIter(me));
-}
+PyObject *gmapmeth_iterkeys(PyObject *me)
+ { return (PyObject_GetIter(me)); }
-PyObject *gmapmeth_itervalues(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_itervalues(PyObject *me)
{
PyObject *i;
iter_pyobj *ii;
- if (!PyArg_ParseTuple(arg, ":itervalues") ||
- (i = PyObject_GetIter(me)) == 0)
+ if ((i = PyObject_GetIter(me)) == 0)
return (0);
ii = PyObject_NEW(iter_pyobj, valiter_pytype);
ii->map = me; Py_INCREF(me);
return ((PyObject *)ii);
}
-PyObject *gmapmeth_iteritems(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_iteritems(PyObject *me)
{
PyObject *i;
iter_pyobj *ii;
- if (!PyArg_ParseTuple(arg, ":iteritems") ||
- (i = PyObject_GetIter(me)) == 0)
+ if ((i = PyObject_GetIter(me)) == 0)
return (0);
ii = PyObject_NEW(iter_pyobj, itemiter_pytype);
ii->map = me; Py_INCREF(me);
return ((PyObject *)ii);
}
-PyObject *gmapmeth_clear(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_clear(PyObject *me)
{
PyObject *i = 0, *k = 0, *rc = 0;
- if (!PyArg_ParseTuple(arg, ":clear") ||
- (i = PyObject_GetIter(me)) == 0)
+ if ((i = PyObject_GetIter(me)) == 0)
goto end;
while ((k = PyIter_Next(i)) != 0) {
PyObject_DelItem(me, k);
return (rc);
}
-PyObject *gmapmeth_popitem(PyObject *me, PyObject *arg)
+PyObject *gmapmeth_popitem(PyObject *me)
{
PyObject *i = 0, *k = 0, *v = 0, *rc = 0;
- if (!PyArg_ParseTuple(arg, ":popitem") ||
- (i = PyObject_GetIter(me)) == 0)
+ if ((i = PyObject_GetIter(me)) == 0)
goto end;
if ((k = PyIter_Next(i)) == 0) {
if (!PyErr_Occurred()) VALERR("popitem(): mapping is empty");
CONVERT_CAREFULLY(PyCFunction, PyCFunctionWithKeywords, decor(func)), \
METH_VARARGS | METH_KEYWORDS | flags, \
doc },
+#define NOARG_METHOD(decor, func, flags, doc) \
+ { #func, \
+ CONVERT_CAREFULLY(PyCFunction, PyNoArgsFunction, decor(func)), \
+ METH_NOARGS | flags, \
+ doc },
/* Convenience wrappers for filling in `PyMethodDef' tables, following
* Pyke naming convention. Define `METHNAME' locally as
*/
#define METH(func, doc) STD_METHOD(METHNAME, func, 0, doc)
#define KWMETH(func, doc) KEYWORD_METHOD(METHNAME, func, 0, doc)
+#define NAMETH(func, doc) NOARG_METHOD(METHNAME, func, 0, doc)
#define CMTH(func, doc) STD_METHOD(METHNAME, func, METH_CLASS, doc)
#define KWCMTH(func, doc) KEYWORD_METHOD(METHNAME, func, METH_CLASS, doc)
+#define NACMTH(func, doc) NOARG_METHOD(METHNAME, func, METH_CLASS, doc)
#define SMTH(func, doc) STD_METHOD(METHNAME, func, METH_STATIC, doc)
#define KWSMTH(func, doc) KEYWORD_METHOD(METHNAME, func, METH_STATIC, doc)
+#define NASMTH(func, doc) NOARG_METHOD(METHNAME, func, METH_STATIC, doc)
/* Convenience wrappers for filling in `PyGetSetDef' tables, following Pyke
* naming convention. Define `GETSETNAME' locally as
#define GMAP_METMNAME(func) gmapmeth_##func
#define GMAP_METH(func, doc) STD_METHOD(GMAP_METMNAME, func, 0, doc)
#define GMAP_KWMETH(func, doc) KEYWORD_METHOD(GMAP_METMNAME, func, 0, doc)
+#define GMAP_NAMETH(func, doc) NOARG_METHOD(GMAP_METMNAME, func, 0, doc)
#define GMAP_METHDECL(func, doc) \
extern PyObject *gmapmeth_##func(PyObject *, PyObject *);
#define GMAP_KWMETHDECL(func, doc) \
extern PyObject *gmapmeth_##func(PyObject *, PyObject *, PyObject *);
+#define GMAP_NAMETHDECL(func, doc) \
+ extern PyObject *gmapmeth_##func(PyObject *);
-#define GMAP_DOROMETHODS(METH, KWMETH) \
+#define GMAP_DOROMETHODS(METH, KWMETH, NAMETH) \
METH (has_key, "D.has_key(KEY) -> BOOL") \
- METH (keys, "D.keys() -> LIST") \
- METH (values, "D.values() -> LIST") \
- METH (items, "D.items() -> LIST") \
- METH (iterkeys, "D.iterkeys() -> ITER") \
- METH (itervalues, "D.itervalues() -> ITER") \
- METH (iteritems, "D.iteritems() -> ITER") \
+ NAMETH(keys, "D.keys() -> LIST") \
+ NAMETH(values, "D.values() -> LIST") \
+ NAMETH(items, "D.items() -> LIST") \
+ NAMETH(iterkeys, "D.iterkeys() -> ITER") \
+ NAMETH(itervalues, "D.itervalues() -> ITER") \
+ NAMETH(iteritems, "D.iteritems() -> ITER") \
KWMETH(get, "D.get(KEY, [default = None]) -> VALUE")
-#define GMAP_DOMETHODS(METH, KWMETH) \
- GMAP_DOROMETHODS(METH, KWMETH) \
- METH (clear, "D.clear()") \
+#define GMAP_DOMETHODS(METH, KWMETH, NAMETH) \
+ GMAP_DOROMETHODS(METH, KWMETH, NAMETH) \
+ NAMETH(clear, "D.clear()") \
KWMETH(setdefault, "D.setdefault(K, [default = None]) -> VALUE") \
KWMETH(pop, "D.pop(KEY, [default = <error>]) -> VALUE") \
- METH (popitem, "D.popitem() -> (KEY, VALUE)") \
+ NAMETH(popitem, "D.popitem() -> (KEY, VALUE)") \
METH (update, "D.update(MAP)")
-GMAP_DOMETHODS(GMAP_METHDECL, GMAP_KWMETHDECL)
-#define GMAP_ROMETHODS GMAP_DOROMETHODS(GMAP_METH, GMAP_KWMETH)
-#define GMAP_METHODS GMAP_DOMETHODS(GMAP_METH, GMAP_KWMETH)
+GMAP_DOMETHODS(GMAP_METHDECL, GMAP_KWMETHDECL, GMAP_NAMETHDECL)
+#define GMAP_ROMETHODS GMAP_DOROMETHODS(GMAP_METH, GMAP_KWMETH, GMAP_NAMETH)
+#define GMAP_METHODS GMAP_DOMETHODS(GMAP_METH, GMAP_KWMETH, GMAP_NAMETH)
/* Mapping protocol implementation. */
extern Py_ssize_t gmap_pysize(PyObject *); /* for `mp_length' */