blob: deec4241ea6d782749492a0c54fe2c53bf332f3b [file] [log] [blame]
Serhiy Storchaka1009bf12015-04-03 23:53:51 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(dict_fromkeys__doc__,
6"fromkeys($type, iterable, value=None, /)\n"
7"--\n"
8"\n"
9"Returns a new dict with keys from iterable and values equal to value.");
10
11#define DICT_FROMKEYS_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +010012 {"fromkeys", (PyCFunction)dict_fromkeys, METH_FASTCALL|METH_CLASS, dict_fromkeys__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030013
14static PyObject *
15dict_fromkeys_impl(PyTypeObject *type, PyObject *iterable, PyObject *value);
16
17static PyObject *
Victor Stinner0c4a8282017-01-17 02:21:47 +010018dict_fromkeys(PyTypeObject *type, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030019{
20 PyObject *return_value = NULL;
21 PyObject *iterable;
22 PyObject *value = Py_None;
23
Victor Stinner0c4a8282017-01-17 02:21:47 +010024 if (!_PyArg_UnpackStack(args, nargs, "fromkeys",
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030025 1, 2,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030026 &iterable, &value)) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030027 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030028 }
Victor Stinner0c4a8282017-01-17 02:21:47 +010029
30 if (!_PyArg_NoStackKeywords("fromkeys", kwnames)) {
31 goto exit;
32 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +030033 return_value = dict_fromkeys_impl(type, iterable, value);
34
35exit:
36 return return_value;
37}
38
39PyDoc_STRVAR(dict___contains____doc__,
40"__contains__($self, key, /)\n"
41"--\n"
42"\n"
43"True if D has a key k, else False.");
44
45#define DICT___CONTAINS___METHODDEF \
46 {"__contains__", (PyCFunction)dict___contains__, METH_O|METH_COEXIST, dict___contains____doc__},
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010047
48PyDoc_STRVAR(dict_get__doc__,
49"get($self, key, default=None, /)\n"
50"--\n"
51"\n"
52"D.get(key[, default]) -> D[key] if key in D, else default.");
53
54#define DICT_GET_METHODDEF \
55 {"get", (PyCFunction)dict_get, METH_FASTCALL, dict_get__doc__},
56
57static PyObject *
Serhiy Storchaka48088ee2017-01-19 19:00:30 +020058dict_get_impl(PyDictObject *self, PyObject *key, PyObject *default_value);
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010059
60static PyObject *
61dict_get(PyDictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
62{
63 PyObject *return_value = NULL;
64 PyObject *key;
Serhiy Storchaka48088ee2017-01-19 19:00:30 +020065 PyObject *default_value = Py_None;
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010066
67 if (!_PyArg_UnpackStack(args, nargs, "get",
68 1, 2,
Serhiy Storchaka48088ee2017-01-19 19:00:30 +020069 &key, &default_value)) {
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010070 goto exit;
71 }
72
73 if (!_PyArg_NoStackKeywords("get", kwnames)) {
74 goto exit;
75 }
Serhiy Storchaka48088ee2017-01-19 19:00:30 +020076 return_value = dict_get_impl(self, key, default_value);
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010077
78exit:
79 return return_value;
80}
81
82PyDoc_STRVAR(dict_setdefault__doc__,
83"setdefault($self, key, default=None, /)\n"
84"--\n"
85"\n"
86"D.get(key,default), also set D[key]=default if key not in D.");
87
88#define DICT_SETDEFAULT_METHODDEF \
89 {"setdefault", (PyCFunction)dict_setdefault, METH_FASTCALL, dict_setdefault__doc__},
90
91static PyObject *
Serhiy Storchaka48088ee2017-01-19 19:00:30 +020092dict_setdefault_impl(PyDictObject *self, PyObject *key,
93 PyObject *default_value);
Victor Stinner7dc6a5f2017-01-19 12:37:13 +010094
95static PyObject *
96dict_setdefault(PyDictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
97{
98 PyObject *return_value = NULL;
99 PyObject *key;
Serhiy Storchaka48088ee2017-01-19 19:00:30 +0200100 PyObject *default_value = Py_None;
Victor Stinner7dc6a5f2017-01-19 12:37:13 +0100101
102 if (!_PyArg_UnpackStack(args, nargs, "setdefault",
103 1, 2,
Serhiy Storchaka48088ee2017-01-19 19:00:30 +0200104 &key, &default_value)) {
Victor Stinner7dc6a5f2017-01-19 12:37:13 +0100105 goto exit;
106 }
107
108 if (!_PyArg_NoStackKeywords("setdefault", kwnames)) {
109 goto exit;
110 }
Serhiy Storchaka48088ee2017-01-19 19:00:30 +0200111 return_value = dict_setdefault_impl(self, key, default_value);
Victor Stinner7dc6a5f2017-01-19 12:37:13 +0100112
113exit:
114 return return_value;
115}
Serhiy Storchaka48088ee2017-01-19 19:00:30 +0200116/*[clinic end generated code: output=6e9d917602373072 input=a9049054013a1b77]*/