diff options
author | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2019-06-05 23:05:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-05 23:05:25 (GMT) |
commit | e985804207473796a1326585b3e1b9e18c764345 (patch) | |
tree | 2e01c8e7035bb5ae144f8051e916e8a579438346 /Modules | |
parent | c4c15ed7a2c7c2a1983e88b89c244d121eb3e512 (diff) | |
download | cpython-e985804207473796a1326585b3e1b9e18c764345.zip cpython-e985804207473796a1326585b3e1b9e18c764345.tar.gz cpython-e985804207473796a1326585b3e1b9e18c764345.tar.bz2 |
bpo-37165: Convert _count_elements to the argument clinic (GH-13848)
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_collectionsmodule.c | 27 | ||||
-rw-r--r-- | Modules/clinic/_collectionsmodule.c.h | 33 |
2 files changed, 48 insertions, 12 deletions
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index dacea3a..45169ec 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -8,9 +8,10 @@ #endif /*[clinic input] +module _collections class _tuplegetter "_tuplegetterobject *" "&tuplegetter_type" [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=ee5ed5baabe35068]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=a8ece4ccad7e30ac]*/ static PyTypeObject tuplegetter_type; #include "clinic/_collectionsmodule.c.h" @@ -2228,17 +2229,24 @@ static PyTypeObject defdict_type = { /* helper function for Counter *********************************************/ -PyDoc_STRVAR(_count_elements_doc, -"_count_elements(mapping, iterable) -> None\n\ -\n\ -Count elements in the iterable, updating the mapping"); +/*[clinic input] +_collections._count_elements + + mapping: object + iterable: object + / + +Count elements in the iterable, updating the mapping +[clinic start generated code]*/ static PyObject * -_count_elements(PyObject *self, PyObject *args) +_collections__count_elements_impl(PyObject *module, PyObject *mapping, + PyObject *iterable) +/*[clinic end generated code: output=7e0c1789636b3d8f input=e79fad04534a0b45]*/ { _Py_IDENTIFIER(get); _Py_IDENTIFIER(__setitem__); - PyObject *it, *iterable, *mapping, *oldval; + PyObject *it, *oldval; PyObject *newval = NULL; PyObject *key = NULL; PyObject *bound_get = NULL; @@ -2247,9 +2255,6 @@ _count_elements(PyObject *self, PyObject *args) PyObject *mapping_setitem; PyObject *dict_setitem; - if (!PyArg_UnpackTuple(args, "_count_elements", 2, 2, &mapping, &iterable)) - return NULL; - it = PyObject_GetIter(iterable); if (it == NULL) return NULL; @@ -2510,7 +2515,7 @@ PyDoc_STRVAR(module_doc, "); static struct PyMethodDef module_functions[] = { - {"_count_elements", _count_elements, METH_VARARGS, _count_elements_doc}, + _COLLECTIONS__COUNT_ELEMENTS_METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Modules/clinic/_collectionsmodule.c.h b/Modules/clinic/_collectionsmodule.c.h index ed3b1b5..c3ba1a6 100644 --- a/Modules/clinic/_collectionsmodule.c.h +++ b/Modules/clinic/_collectionsmodule.c.h @@ -2,6 +2,37 @@ preserve [clinic start generated code]*/ +PyDoc_STRVAR(_collections__count_elements__doc__, +"_count_elements($module, mapping, iterable, /)\n" +"--\n" +"\n" +"Count elements in the iterable, updating the mapping"); + +#define _COLLECTIONS__COUNT_ELEMENTS_METHODDEF \ + {"_count_elements", (PyCFunction)(void(*)(void))_collections__count_elements, METH_FASTCALL, _collections__count_elements__doc__}, + +static PyObject * +_collections__count_elements_impl(PyObject *module, PyObject *mapping, + PyObject *iterable); + +static PyObject * +_collections__count_elements(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *mapping; + PyObject *iterable; + + if (!_PyArg_CheckPositional("_count_elements", nargs, 2, 2)) { + goto exit; + } + mapping = args[0]; + iterable = args[1]; + return_value = _collections__count_elements_impl(module, mapping, iterable); + +exit: + return return_value; +} + static PyObject * tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc); @@ -42,4 +73,4 @@ tuplegetter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=51bd572577ca7111 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=9d2bfcc9df5faf35 input=a9049054013a1b77]*/ |