/src/cpython/Objects/clinic/dictobject.c.h
Line | Count | Source |
1 | | /*[clinic input] |
2 | | preserve |
3 | | [clinic start generated code]*/ |
4 | | |
5 | | #include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION() |
6 | | #include "pycore_modsupport.h" // _PyArg_CheckPositional() |
7 | | |
8 | | static PyObject * |
9 | | dict_repr_impl(PyObject *self); |
10 | | |
11 | | static PyObject * |
12 | | dict_repr(PyObject *self) |
13 | 0 | { |
14 | 0 | PyObject *return_value = NULL; |
15 | |
|
16 | 0 | Py_BEGIN_CRITICAL_SECTION(self); |
17 | 0 | return_value = dict_repr_impl(self); |
18 | 0 | Py_END_CRITICAL_SECTION(); |
19 | |
|
20 | 0 | return return_value; |
21 | 0 | } |
22 | | |
23 | | PyDoc_STRVAR(dict_fromkeys__doc__, |
24 | | "fromkeys($type, iterable, value=None, /)\n" |
25 | | "--\n" |
26 | | "\n" |
27 | | "Create a new dictionary with keys from iterable and values set to value."); |
28 | | |
29 | | #define DICT_FROMKEYS_METHODDEF \ |
30 | | {"fromkeys", _PyCFunction_CAST(dict_fromkeys), METH_FASTCALL|METH_CLASS, dict_fromkeys__doc__}, |
31 | | |
32 | | static PyObject * |
33 | | dict_fromkeys_impl(PyTypeObject *type, PyObject *iterable, PyObject *value); |
34 | | |
35 | | static PyObject * |
36 | | dict_fromkeys(PyObject *type, PyObject *const *args, Py_ssize_t nargs) |
37 | 1.37M | { |
38 | 1.37M | PyObject *return_value = NULL; |
39 | 1.37M | PyObject *iterable; |
40 | 1.37M | PyObject *value = Py_None; |
41 | | |
42 | 1.37M | if (!_PyArg_CheckPositional("fromkeys", nargs, 1, 2)) { |
43 | 0 | goto exit; |
44 | 0 | } |
45 | 1.37M | iterable = args[0]; |
46 | 1.37M | if (nargs < 2) { |
47 | 1.37M | goto skip_optional; |
48 | 1.37M | } |
49 | 8 | value = args[1]; |
50 | 1.37M | skip_optional: |
51 | 1.37M | return_value = dict_fromkeys_impl((PyTypeObject *)type, iterable, value); |
52 | | |
53 | 1.37M | exit: |
54 | 1.37M | return return_value; |
55 | 1.37M | } |
56 | | |
57 | | PyDoc_STRVAR(dict_copy__doc__, |
58 | | "copy($self, /)\n" |
59 | | "--\n" |
60 | | "\n" |
61 | | "Return a shallow copy of the dict."); |
62 | | |
63 | | #define DICT_COPY_METHODDEF \ |
64 | | {"copy", (PyCFunction)dict_copy, METH_NOARGS, dict_copy__doc__}, |
65 | | |
66 | | static PyObject * |
67 | | dict_copy_impl(PyDictObject *self); |
68 | | |
69 | | static PyObject * |
70 | | dict_copy(PyObject *self, PyObject *Py_UNUSED(ignored)) |
71 | 682k | { |
72 | 682k | return dict_copy_impl((PyDictObject *)self); |
73 | 682k | } |
74 | | |
75 | | PyDoc_STRVAR(dict___contains____doc__, |
76 | | "__contains__($self, key, /)\n" |
77 | | "--\n" |
78 | | "\n" |
79 | | "True if the dictionary has the specified key, else False."); |
80 | | |
81 | | #define DICT___CONTAINS___METHODDEF \ |
82 | | {"__contains__", (PyCFunction)dict___contains__, METH_O|METH_COEXIST, dict___contains____doc__}, |
83 | | |
84 | | static PyObject * |
85 | | dict___contains___impl(PyDictObject *self, PyObject *key); |
86 | | |
87 | | static PyObject * |
88 | | dict___contains__(PyObject *self, PyObject *key) |
89 | 448 | { |
90 | 448 | PyObject *return_value = NULL; |
91 | | |
92 | 448 | return_value = dict___contains___impl((PyDictObject *)self, key); |
93 | | |
94 | 448 | return return_value; |
95 | 448 | } |
96 | | |
97 | | PyDoc_STRVAR(dict_get__doc__, |
98 | | "get($self, key, default=None, /)\n" |
99 | | "--\n" |
100 | | "\n" |
101 | | "Return the value for key if key is in the dictionary, else default."); |
102 | | |
103 | | #define DICT_GET_METHODDEF \ |
104 | | {"get", _PyCFunction_CAST(dict_get), METH_FASTCALL, dict_get__doc__}, |
105 | | |
106 | | static PyObject * |
107 | | dict_get_impl(PyDictObject *self, PyObject *key, PyObject *default_value); |
108 | | |
109 | | static PyObject * |
110 | | dict_get(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
111 | 137M | { |
112 | 137M | PyObject *return_value = NULL; |
113 | 137M | PyObject *key; |
114 | 137M | PyObject *default_value = Py_None; |
115 | | |
116 | 137M | if (!_PyArg_CheckPositional("get", nargs, 1, 2)) { |
117 | 0 | goto exit; |
118 | 0 | } |
119 | 137M | key = args[0]; |
120 | 137M | if (nargs < 2) { |
121 | 18.5M | goto skip_optional; |
122 | 18.5M | } |
123 | 118M | default_value = args[1]; |
124 | 137M | skip_optional: |
125 | 137M | return_value = dict_get_impl((PyDictObject *)self, key, default_value); |
126 | | |
127 | 137M | exit: |
128 | 137M | return return_value; |
129 | 137M | } |
130 | | |
131 | | PyDoc_STRVAR(dict_setdefault__doc__, |
132 | | "setdefault($self, key, default=None, /)\n" |
133 | | "--\n" |
134 | | "\n" |
135 | | "Insert key with a value of default if key is not in the dictionary.\n" |
136 | | "\n" |
137 | | "Return the value for key if key is in the dictionary, else default."); |
138 | | |
139 | | #define DICT_SETDEFAULT_METHODDEF \ |
140 | | {"setdefault", _PyCFunction_CAST(dict_setdefault), METH_FASTCALL, dict_setdefault__doc__}, |
141 | | |
142 | | static PyObject * |
143 | | dict_setdefault_impl(PyDictObject *self, PyObject *key, |
144 | | PyObject *default_value); |
145 | | |
146 | | static PyObject * |
147 | | dict_setdefault(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
148 | 6.40M | { |
149 | 6.40M | PyObject *return_value = NULL; |
150 | 6.40M | PyObject *key; |
151 | 6.40M | PyObject *default_value = Py_None; |
152 | | |
153 | 6.40M | if (!_PyArg_CheckPositional("setdefault", nargs, 1, 2)) { |
154 | 0 | goto exit; |
155 | 0 | } |
156 | 6.40M | key = args[0]; |
157 | 6.40M | if (nargs < 2) { |
158 | 0 | goto skip_optional; |
159 | 0 | } |
160 | 6.40M | default_value = args[1]; |
161 | 6.40M | skip_optional: |
162 | 6.40M | Py_BEGIN_CRITICAL_SECTION(self); |
163 | 6.40M | return_value = dict_setdefault_impl((PyDictObject *)self, key, default_value); |
164 | 6.40M | Py_END_CRITICAL_SECTION(); |
165 | | |
166 | 6.40M | exit: |
167 | 6.40M | return return_value; |
168 | 6.40M | } |
169 | | |
170 | | PyDoc_STRVAR(dict_clear__doc__, |
171 | | "clear($self, /)\n" |
172 | | "--\n" |
173 | | "\n" |
174 | | "Remove all items from the dict."); |
175 | | |
176 | | #define DICT_CLEAR_METHODDEF \ |
177 | | {"clear", (PyCFunction)dict_clear, METH_NOARGS, dict_clear__doc__}, |
178 | | |
179 | | static PyObject * |
180 | | dict_clear_impl(PyDictObject *self); |
181 | | |
182 | | static PyObject * |
183 | | dict_clear(PyObject *self, PyObject *Py_UNUSED(ignored)) |
184 | 23.9k | { |
185 | 23.9k | return dict_clear_impl((PyDictObject *)self); |
186 | 23.9k | } |
187 | | |
188 | | PyDoc_STRVAR(dict_pop__doc__, |
189 | | "pop($self, key, default=<unrepresentable>, /)\n" |
190 | | "--\n" |
191 | | "\n" |
192 | | "D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n" |
193 | | "\n" |
194 | | "If the key is not found, return the default if given; otherwise,\n" |
195 | | "raise a KeyError."); |
196 | | |
197 | | #define DICT_POP_METHODDEF \ |
198 | | {"pop", _PyCFunction_CAST(dict_pop), METH_FASTCALL, dict_pop__doc__}, |
199 | | |
200 | | static PyObject * |
201 | | dict_pop_impl(PyDictObject *self, PyObject *key, PyObject *default_value); |
202 | | |
203 | | static PyObject * |
204 | | dict_pop(PyObject *self, PyObject *const *args, Py_ssize_t nargs) |
205 | 465k | { |
206 | 465k | PyObject *return_value = NULL; |
207 | 465k | PyObject *key; |
208 | 465k | PyObject *default_value = NULL; |
209 | | |
210 | 465k | if (!_PyArg_CheckPositional("pop", nargs, 1, 2)) { |
211 | 0 | goto exit; |
212 | 0 | } |
213 | 465k | key = args[0]; |
214 | 465k | if (nargs < 2) { |
215 | 252k | goto skip_optional; |
216 | 252k | } |
217 | 212k | default_value = args[1]; |
218 | 465k | skip_optional: |
219 | 465k | return_value = dict_pop_impl((PyDictObject *)self, key, default_value); |
220 | | |
221 | 465k | exit: |
222 | 465k | return return_value; |
223 | 465k | } |
224 | | |
225 | | PyDoc_STRVAR(dict_popitem__doc__, |
226 | | "popitem($self, /)\n" |
227 | | "--\n" |
228 | | "\n" |
229 | | "Remove and return a (key, value) pair as a 2-tuple.\n" |
230 | | "\n" |
231 | | "Pairs are returned in LIFO (last-in, first-out) order.\n" |
232 | | "Raises KeyError if the dict is empty."); |
233 | | |
234 | | #define DICT_POPITEM_METHODDEF \ |
235 | | {"popitem", (PyCFunction)dict_popitem, METH_NOARGS, dict_popitem__doc__}, |
236 | | |
237 | | static PyObject * |
238 | | dict_popitem_impl(PyDictObject *self); |
239 | | |
240 | | static PyObject * |
241 | | dict_popitem(PyObject *self, PyObject *Py_UNUSED(ignored)) |
242 | 71.2k | { |
243 | 71.2k | PyObject *return_value = NULL; |
244 | | |
245 | 71.2k | Py_BEGIN_CRITICAL_SECTION(self); |
246 | 71.2k | return_value = dict_popitem_impl((PyDictObject *)self); |
247 | 71.2k | Py_END_CRITICAL_SECTION(); |
248 | | |
249 | 71.2k | return return_value; |
250 | 71.2k | } |
251 | | |
252 | | PyDoc_STRVAR(dict___sizeof____doc__, |
253 | | "__sizeof__($self, /)\n" |
254 | | "--\n" |
255 | | "\n" |
256 | | "Return the size of the dict in memory, in bytes."); |
257 | | |
258 | | #define DICT___SIZEOF___METHODDEF \ |
259 | | {"__sizeof__", (PyCFunction)dict___sizeof__, METH_NOARGS, dict___sizeof____doc__}, |
260 | | |
261 | | static PyObject * |
262 | | dict___sizeof___impl(PyDictObject *self); |
263 | | |
264 | | static PyObject * |
265 | | dict___sizeof__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
266 | 0 | { |
267 | 0 | return dict___sizeof___impl((PyDictObject *)self); |
268 | 0 | } |
269 | | |
270 | | PyDoc_STRVAR(dict___reversed____doc__, |
271 | | "__reversed__($self, /)\n" |
272 | | "--\n" |
273 | | "\n" |
274 | | "Return a reverse iterator over the dict keys."); |
275 | | |
276 | | #define DICT___REVERSED___METHODDEF \ |
277 | | {"__reversed__", (PyCFunction)dict___reversed__, METH_NOARGS, dict___reversed____doc__}, |
278 | | |
279 | | static PyObject * |
280 | | dict___reversed___impl(PyDictObject *self); |
281 | | |
282 | | static PyObject * |
283 | | dict___reversed__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
284 | 0 | { |
285 | 0 | return dict___reversed___impl((PyDictObject *)self); |
286 | 0 | } |
287 | | |
288 | | PyDoc_STRVAR(dict_keys__doc__, |
289 | | "keys($self, /)\n" |
290 | | "--\n" |
291 | | "\n" |
292 | | "Return a set-like object providing a view on the dict\'s keys."); |
293 | | |
294 | | #define DICT_KEYS_METHODDEF \ |
295 | | {"keys", (PyCFunction)dict_keys, METH_NOARGS, dict_keys__doc__}, |
296 | | |
297 | | static PyObject * |
298 | | dict_keys_impl(PyDictObject *self); |
299 | | |
300 | | static PyObject * |
301 | | dict_keys(PyObject *self, PyObject *Py_UNUSED(ignored)) |
302 | 115k | { |
303 | 115k | return dict_keys_impl((PyDictObject *)self); |
304 | 115k | } |
305 | | |
306 | | PyDoc_STRVAR(dict_items__doc__, |
307 | | "items($self, /)\n" |
308 | | "--\n" |
309 | | "\n" |
310 | | "Return a set-like object providing a view on the dict\'s items."); |
311 | | |
312 | | #define DICT_ITEMS_METHODDEF \ |
313 | | {"items", (PyCFunction)dict_items, METH_NOARGS, dict_items__doc__}, |
314 | | |
315 | | static PyObject * |
316 | | dict_items_impl(PyDictObject *self); |
317 | | |
318 | | static PyObject * |
319 | | dict_items(PyObject *self, PyObject *Py_UNUSED(ignored)) |
320 | 1.77M | { |
321 | 1.77M | return dict_items_impl((PyDictObject *)self); |
322 | 1.77M | } |
323 | | |
324 | | PyDoc_STRVAR(dict_values__doc__, |
325 | | "values($self, /)\n" |
326 | | "--\n" |
327 | | "\n" |
328 | | "Return an object providing a view on the dict\'s values."); |
329 | | |
330 | | #define DICT_VALUES_METHODDEF \ |
331 | | {"values", (PyCFunction)dict_values, METH_NOARGS, dict_values__doc__}, |
332 | | |
333 | | static PyObject * |
334 | | dict_values_impl(PyDictObject *self); |
335 | | |
336 | | static PyObject * |
337 | | dict_values(PyObject *self, PyObject *Py_UNUSED(ignored)) |
338 | 103k | { |
339 | 103k | return dict_values_impl((PyDictObject *)self); |
340 | 103k | } |
341 | | |
342 | | PyDoc_STRVAR(frozendict_copy__doc__, |
343 | | "copy($self, /)\n" |
344 | | "--\n" |
345 | | "\n" |
346 | | "Return a shallow copy of the frozendict."); |
347 | | |
348 | | #define FROZENDICT_COPY_METHODDEF \ |
349 | | {"copy", (PyCFunction)frozendict_copy, METH_NOARGS, frozendict_copy__doc__}, |
350 | | |
351 | | static PyObject * |
352 | | frozendict_copy_impl(PyFrozenDictObject *self); |
353 | | |
354 | | static PyObject * |
355 | | frozendict_copy(PyObject *self, PyObject *Py_UNUSED(ignored)) |
356 | 0 | { |
357 | 0 | return frozendict_copy_impl((PyFrozenDictObject *)self); |
358 | 0 | } |
359 | | /*[clinic end generated code: output=46d2d00147dd7917 input=a9049054013a1b77]*/ |