blob: 5543f9463e5142e6c304d3e39d6e4bd9f3d7f74f [file] [log] [blame]
Victor Stinnerb05cbac2017-01-17 03:46:13 +01001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(OrderedDict_fromkeys__doc__,
6"fromkeys($type, /, iterable, value=None)\n"
7"--\n"
8"\n"
9"New ordered dictionary with keys from S.\n"
10"\n"
11"If not specified, the value defaults to None.");
12
13#define ORDEREDDICT_FROMKEYS_METHODDEF \
14 {"fromkeys", (PyCFunction)OrderedDict_fromkeys, METH_FASTCALL|METH_CLASS, OrderedDict_fromkeys__doc__},
15
16static PyObject *
17OrderedDict_fromkeys_impl(PyTypeObject *type, PyObject *seq, PyObject *value);
18
19static PyObject *
20OrderedDict_fromkeys(PyTypeObject *type, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
21{
22 PyObject *return_value = NULL;
23 static const char * const _keywords[] = {"iterable", "value", NULL};
24 static _PyArg_Parser _parser = {"O|O:fromkeys", _keywords, 0};
25 PyObject *seq;
26 PyObject *value = Py_None;
27
28 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
29 &seq, &value)) {
30 goto exit;
31 }
32 return_value = OrderedDict_fromkeys_impl(type, seq, value);
33
34exit:
35 return return_value;
36}
37
38PyDoc_STRVAR(OrderedDict_setdefault__doc__,
39"setdefault($self, /, key, default=None)\n"
40"--\n"
41"\n"
42"od.get(k,d), also set od[k]=d if k not in od.");
43
44#define ORDEREDDICT_SETDEFAULT_METHODDEF \
45 {"setdefault", (PyCFunction)OrderedDict_setdefault, METH_FASTCALL, OrderedDict_setdefault__doc__},
46
47static PyObject *
48OrderedDict_setdefault_impl(PyODictObject *self, PyObject *key,
49 PyObject *failobj);
50
51static PyObject *
52OrderedDict_setdefault(PyODictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
53{
54 PyObject *return_value = NULL;
55 static const char * const _keywords[] = {"key", "default", NULL};
56 static _PyArg_Parser _parser = {"O|O:setdefault", _keywords, 0};
57 PyObject *key;
58 PyObject *failobj = Py_None;
59
60 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
61 &key, &failobj)) {
62 goto exit;
63 }
64 return_value = OrderedDict_setdefault_impl(self, key, failobj);
65
66exit:
67 return return_value;
68}
69
70PyDoc_STRVAR(OrderedDict_popitem__doc__,
71"popitem($self, /, last=True)\n"
72"--\n"
73"\n"
74"Return (k, v) and remove a (key, value) pair.\n"
75"\n"
76"Pairs are returned in LIFO order if last is true or FIFO order if false.");
77
78#define ORDEREDDICT_POPITEM_METHODDEF \
79 {"popitem", (PyCFunction)OrderedDict_popitem, METH_FASTCALL, OrderedDict_popitem__doc__},
80
81static PyObject *
82OrderedDict_popitem_impl(PyODictObject *self, int last);
83
84static PyObject *
85OrderedDict_popitem(PyODictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
86{
87 PyObject *return_value = NULL;
88 static const char * const _keywords[] = {"last", NULL};
89 static _PyArg_Parser _parser = {"|p:popitem", _keywords, 0};
90 int last = 1;
91
92 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
93 &last)) {
94 goto exit;
95 }
96 return_value = OrderedDict_popitem_impl(self, last);
97
98exit:
99 return return_value;
100}
101
102PyDoc_STRVAR(OrderedDict_move_to_end__doc__,
103"move_to_end($self, /, key, last=True)\n"
104"--\n"
105"\n"
106"\"Move an existing element to the end (or beginning if last==False).\n"
107"\n"
108" Raises KeyError if the element does not exist.\n"
109" When last=True, acts like a fast version of self[key]=self.pop(key).");
110
111#define ORDEREDDICT_MOVE_TO_END_METHODDEF \
112 {"move_to_end", (PyCFunction)OrderedDict_move_to_end, METH_FASTCALL, OrderedDict_move_to_end__doc__},
113
114static PyObject *
115OrderedDict_move_to_end_impl(PyODictObject *self, PyObject *key, int last);
116
117static PyObject *
118OrderedDict_move_to_end(PyODictObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
119{
120 PyObject *return_value = NULL;
121 static const char * const _keywords[] = {"key", "last", NULL};
122 static _PyArg_Parser _parser = {"O|p:move_to_end", _keywords, 0};
123 PyObject *key;
124 int last = 1;
125
126 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
127 &key, &last)) {
128 goto exit;
129 }
130 return_value = OrderedDict_move_to_end_impl(self, key, last);
131
132exit:
133 return return_value;
134}
135/*[clinic end generated code: output=f2641e1277045b59 input=a9049054013a1b77]*/