1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(dict_fromkeys__doc__,
6 "fromkeys($type, iterable, value=None, /)\n"
7 "--\n"
8 "\n"
9 "Create a new dictionary with keys from iterable and values set to value.");
10 
11 #define DICT_FROMKEYS_METHODDEF    \
12     {"fromkeys", (PyCFunction)dict_fromkeys, METH_FASTCALL|METH_CLASS, dict_fromkeys__doc__},
13 
14 static PyObject *
15 dict_fromkeys_impl(PyTypeObject *type, PyObject *iterable, PyObject *value);
16 
17 static PyObject *
dict_fromkeys(PyTypeObject * type,PyObject * const * args,Py_ssize_t nargs)18 dict_fromkeys(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs)
19 {
20     PyObject *return_value = NULL;
21     PyObject *iterable;
22     PyObject *value = Py_None;
23 
24     if (!_PyArg_UnpackStack(args, nargs, "fromkeys",
25         1, 2,
26         &iterable, &value)) {
27         goto exit;
28     }
29     return_value = dict_fromkeys_impl(type, iterable, value);
30 
31 exit:
32     return return_value;
33 }
34 
35 PyDoc_STRVAR(dict___contains____doc__,
36 "__contains__($self, key, /)\n"
37 "--\n"
38 "\n"
39 "True if the dictionary has the specified key, else False.");
40 
41 #define DICT___CONTAINS___METHODDEF    \
42     {"__contains__", (PyCFunction)dict___contains__, METH_O|METH_COEXIST, dict___contains____doc__},
43 
44 PyDoc_STRVAR(dict_get__doc__,
45 "get($self, key, default=None, /)\n"
46 "--\n"
47 "\n"
48 "Return the value for key if key is in the dictionary, else default.");
49 
50 #define DICT_GET_METHODDEF    \
51     {"get", (PyCFunction)dict_get, METH_FASTCALL, dict_get__doc__},
52 
53 static PyObject *
54 dict_get_impl(PyDictObject *self, PyObject *key, PyObject *default_value);
55 
56 static PyObject *
dict_get(PyDictObject * self,PyObject * const * args,Py_ssize_t nargs)57 dict_get(PyDictObject *self, PyObject *const *args, Py_ssize_t nargs)
58 {
59     PyObject *return_value = NULL;
60     PyObject *key;
61     PyObject *default_value = Py_None;
62 
63     if (!_PyArg_UnpackStack(args, nargs, "get",
64         1, 2,
65         &key, &default_value)) {
66         goto exit;
67     }
68     return_value = dict_get_impl(self, key, default_value);
69 
70 exit:
71     return return_value;
72 }
73 
74 PyDoc_STRVAR(dict_setdefault__doc__,
75 "setdefault($self, key, default=None, /)\n"
76 "--\n"
77 "\n"
78 "Insert key with a value of default if key is not in the dictionary.\n"
79 "\n"
80 "Return the value for key if key is in the dictionary, else default.");
81 
82 #define DICT_SETDEFAULT_METHODDEF    \
83     {"setdefault", (PyCFunction)dict_setdefault, METH_FASTCALL, dict_setdefault__doc__},
84 
85 static PyObject *
86 dict_setdefault_impl(PyDictObject *self, PyObject *key,
87                      PyObject *default_value);
88 
89 static PyObject *
dict_setdefault(PyDictObject * self,PyObject * const * args,Py_ssize_t nargs)90 dict_setdefault(PyDictObject *self, PyObject *const *args, Py_ssize_t nargs)
91 {
92     PyObject *return_value = NULL;
93     PyObject *key;
94     PyObject *default_value = Py_None;
95 
96     if (!_PyArg_UnpackStack(args, nargs, "setdefault",
97         1, 2,
98         &key, &default_value)) {
99         goto exit;
100     }
101     return_value = dict_setdefault_impl(self, key, default_value);
102 
103 exit:
104     return return_value;
105 }
106 /*[clinic end generated code: output=d7508c5091609a23 input=a9049054013a1b77]*/
107