summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2019-06-05 23:05:25 (GMT)
committerGitHub <noreply@github.com>2019-06-05 23:05:25 (GMT)
commite985804207473796a1326585b3e1b9e18c764345 (patch)
tree2e01c8e7035bb5ae144f8051e916e8a579438346 /Modules
parentc4c15ed7a2c7c2a1983e88b89c244d121eb3e512 (diff)
downloadcpython-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.c27
-rw-r--r--Modules/clinic/_collectionsmodule.c.h33
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]*/