Branch data Line data Source code
1 : : /*[clinic input]
2 : : preserve
3 : : [clinic start generated code]*/
4 : :
5 : : PyDoc_STRVAR(simplequeue_new__doc__,
6 : : "SimpleQueue()\n"
7 : : "--\n"
8 : : "\n"
9 : : "Simple, unbounded, reentrant FIFO queue.");
10 : :
11 : : static PyObject *
12 : : simplequeue_new_impl(PyTypeObject *type);
13 : :
14 : : static PyObject *
15 : 379 : simplequeue_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
16 : : {
17 : 379 : PyObject *return_value = NULL;
18 : :
19 [ - + ]: 379 : if ((type == simplequeue_get_state_by_type(type)->SimpleQueueType ||
20 [ - - + - ]: 379 : type->tp_init == simplequeue_get_state_by_type(type)->SimpleQueueType->tp_init) &&
21 [ - + ]: 379 : !_PyArg_NoPositional("SimpleQueue", args)) {
22 : 0 : goto exit;
23 : : }
24 [ - + ]: 379 : if ((type == simplequeue_get_state_by_type(type)->SimpleQueueType ||
25 [ - - - + ]: 379 : type->tp_init == simplequeue_get_state_by_type(type)->SimpleQueueType->tp_init) &&
26 [ # # ]: 0 : !_PyArg_NoKeywords("SimpleQueue", kwargs)) {
27 : 0 : goto exit;
28 : : }
29 : 379 : return_value = simplequeue_new_impl(type);
30 : :
31 : 379 : exit:
32 : 379 : return return_value;
33 : : }
34 : :
35 : : PyDoc_STRVAR(_queue_SimpleQueue_put__doc__,
36 : : "put($self, /, item, block=True, timeout=None)\n"
37 : : "--\n"
38 : : "\n"
39 : : "Put the item on the queue.\n"
40 : : "\n"
41 : : "The optional \'block\' and \'timeout\' arguments are ignored, as this method\n"
42 : : "never blocks. They are provided for compatibility with the Queue class.");
43 : :
44 : : #define _QUEUE_SIMPLEQUEUE_PUT_METHODDEF \
45 : : {"put", _PyCFunction_CAST(_queue_SimpleQueue_put), METH_FASTCALL|METH_KEYWORDS, _queue_SimpleQueue_put__doc__},
46 : :
47 : : static PyObject *
48 : : _queue_SimpleQueue_put_impl(simplequeueobject *self, PyObject *item,
49 : : int block, PyObject *timeout);
50 : :
51 : : static PyObject *
52 : 52635 : _queue_SimpleQueue_put(simplequeueobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
53 : : {
54 : 52635 : PyObject *return_value = NULL;
55 : : static const char * const _keywords[] = {"item", "block", "timeout", NULL};
56 : : static _PyArg_Parser _parser = {NULL, _keywords, "put", 0};
57 : : PyObject *argsbuf[3];
58 [ - + ]: 52635 : Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
59 : : PyObject *item;
60 : 52635 : int block = 1;
61 : 52635 : PyObject *timeout = Py_None;
62 : :
63 [ + - + - : 52635 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
+ - - + ]
64 [ - + ]: 52635 : if (!args) {
65 : 0 : goto exit;
66 : : }
67 : 52635 : item = args[0];
68 [ + - ]: 52635 : if (!noptargs) {
69 : 52635 : goto skip_optional_pos;
70 : : }
71 [ # # ]: 0 : if (args[1]) {
72 : 0 : block = PyObject_IsTrue(args[1]);
73 [ # # ]: 0 : if (block < 0) {
74 : 0 : goto exit;
75 : : }
76 [ # # ]: 0 : if (!--noptargs) {
77 : 0 : goto skip_optional_pos;
78 : : }
79 : : }
80 : 0 : timeout = args[2];
81 : 52635 : skip_optional_pos:
82 : 52635 : return_value = _queue_SimpleQueue_put_impl(self, item, block, timeout);
83 : :
84 : 52635 : exit:
85 : 52635 : return return_value;
86 : : }
87 : :
88 : : PyDoc_STRVAR(_queue_SimpleQueue_put_nowait__doc__,
89 : : "put_nowait($self, /, item)\n"
90 : : "--\n"
91 : : "\n"
92 : : "Put an item into the queue without blocking.\n"
93 : : "\n"
94 : : "This is exactly equivalent to `put(item)` and is only provided\n"
95 : : "for compatibility with the Queue class.");
96 : :
97 : : #define _QUEUE_SIMPLEQUEUE_PUT_NOWAIT_METHODDEF \
98 : : {"put_nowait", _PyCFunction_CAST(_queue_SimpleQueue_put_nowait), METH_FASTCALL|METH_KEYWORDS, _queue_SimpleQueue_put_nowait__doc__},
99 : :
100 : : static PyObject *
101 : : _queue_SimpleQueue_put_nowait_impl(simplequeueobject *self, PyObject *item);
102 : :
103 : : static PyObject *
104 : 1 : _queue_SimpleQueue_put_nowait(simplequeueobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
105 : : {
106 : 1 : PyObject *return_value = NULL;
107 : : static const char * const _keywords[] = {"item", NULL};
108 : : static _PyArg_Parser _parser = {NULL, _keywords, "put_nowait", 0};
109 : : PyObject *argsbuf[1];
110 : : PyObject *item;
111 : :
112 [ + - + - : 1 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ - - + ]
113 [ - + ]: 1 : if (!args) {
114 : 0 : goto exit;
115 : : }
116 : 1 : item = args[0];
117 : 1 : return_value = _queue_SimpleQueue_put_nowait_impl(self, item);
118 : :
119 : 1 : exit:
120 : 1 : return return_value;
121 : : }
122 : :
123 : : PyDoc_STRVAR(_queue_SimpleQueue_get__doc__,
124 : : "get($self, /, block=True, timeout=None)\n"
125 : : "--\n"
126 : : "\n"
127 : : "Remove and return an item from the queue.\n"
128 : : "\n"
129 : : "If optional args \'block\' is true and \'timeout\' is None (the default),\n"
130 : : "block if necessary until an item is available. If \'timeout\' is\n"
131 : : "a non-negative number, it blocks at most \'timeout\' seconds and raises\n"
132 : : "the Empty exception if no item was available within that time.\n"
133 : : "Otherwise (\'block\' is false), return an item if one is immediately\n"
134 : : "available, else raise the Empty exception (\'timeout\' is ignored\n"
135 : : "in that case).");
136 : :
137 : : #define _QUEUE_SIMPLEQUEUE_GET_METHODDEF \
138 : : {"get", _PyCFunction_CAST(_queue_SimpleQueue_get), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _queue_SimpleQueue_get__doc__},
139 : :
140 : : static PyObject *
141 : : _queue_SimpleQueue_get_impl(simplequeueobject *self, PyTypeObject *cls,
142 : : int block, PyObject *timeout_obj);
143 : :
144 : : static PyObject *
145 : 42307 : _queue_SimpleQueue_get(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
146 : : {
147 : 42307 : PyObject *return_value = NULL;
148 : : static const char * const _keywords[] = {"block", "timeout", NULL};
149 : : static _PyArg_Parser _parser = {NULL, _keywords, "get", 0};
150 : : PyObject *argsbuf[2];
151 [ + + ]: 42307 : Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
152 : 42307 : int block = 1;
153 : 42307 : PyObject *timeout_obj = Py_None;
154 : :
155 [ + + + - : 42307 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
+ - + + ]
156 [ - + ]: 42307 : if (!args) {
157 : 0 : goto exit;
158 : : }
159 [ + + ]: 42307 : if (!noptargs) {
160 : 21941 : goto skip_optional_pos;
161 : : }
162 [ + + ]: 20366 : if (args[0]) {
163 : 19313 : block = PyObject_IsTrue(args[0]);
164 [ - + ]: 19313 : if (block < 0) {
165 : 0 : goto exit;
166 : : }
167 [ + - ]: 19313 : if (!--noptargs) {
168 : 19313 : goto skip_optional_pos;
169 : : }
170 : : }
171 : 1053 : timeout_obj = args[1];
172 : 42307 : skip_optional_pos:
173 : 42307 : return_value = _queue_SimpleQueue_get_impl(self, cls, block, timeout_obj);
174 : :
175 : 42307 : exit:
176 : 42307 : return return_value;
177 : : }
178 : :
179 : : PyDoc_STRVAR(_queue_SimpleQueue_get_nowait__doc__,
180 : : "get_nowait($self, /)\n"
181 : : "--\n"
182 : : "\n"
183 : : "Remove and return an item from the queue without blocking.\n"
184 : : "\n"
185 : : "Only get an item if one is immediately available. Otherwise\n"
186 : : "raise the Empty exception.");
187 : :
188 : : #define _QUEUE_SIMPLEQUEUE_GET_NOWAIT_METHODDEF \
189 : : {"get_nowait", _PyCFunction_CAST(_queue_SimpleQueue_get_nowait), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _queue_SimpleQueue_get_nowait__doc__},
190 : :
191 : : static PyObject *
192 : : _queue_SimpleQueue_get_nowait_impl(simplequeueobject *self,
193 : : PyTypeObject *cls);
194 : :
195 : : static PyObject *
196 : 51 : _queue_SimpleQueue_get_nowait(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
197 : : {
198 [ - + ]: 51 : if (nargs) {
199 : 0 : PyErr_SetString(PyExc_TypeError, "get_nowait() takes no arguments");
200 : 0 : return NULL;
201 : : }
202 : 51 : return _queue_SimpleQueue_get_nowait_impl(self, cls);
203 : : }
204 : :
205 : : PyDoc_STRVAR(_queue_SimpleQueue_empty__doc__,
206 : : "empty($self, /)\n"
207 : : "--\n"
208 : : "\n"
209 : : "Return True if the queue is empty, False otherwise (not reliable!).");
210 : :
211 : : #define _QUEUE_SIMPLEQUEUE_EMPTY_METHODDEF \
212 : : {"empty", (PyCFunction)_queue_SimpleQueue_empty, METH_NOARGS, _queue_SimpleQueue_empty__doc__},
213 : :
214 : : static int
215 : : _queue_SimpleQueue_empty_impl(simplequeueobject *self);
216 : :
217 : : static PyObject *
218 : 10 : _queue_SimpleQueue_empty(simplequeueobject *self, PyObject *Py_UNUSED(ignored))
219 : : {
220 : 10 : PyObject *return_value = NULL;
221 : : int _return_value;
222 : :
223 : 10 : _return_value = _queue_SimpleQueue_empty_impl(self);
224 [ - + - - ]: 10 : if ((_return_value == -1) && PyErr_Occurred()) {
225 : 0 : goto exit;
226 : : }
227 : 10 : return_value = PyBool_FromLong((long)_return_value);
228 : :
229 : 10 : exit:
230 : 10 : return return_value;
231 : : }
232 : :
233 : : PyDoc_STRVAR(_queue_SimpleQueue_qsize__doc__,
234 : : "qsize($self, /)\n"
235 : : "--\n"
236 : : "\n"
237 : : "Return the approximate size of the queue (not reliable!).");
238 : :
239 : : #define _QUEUE_SIMPLEQUEUE_QSIZE_METHODDEF \
240 : : {"qsize", (PyCFunction)_queue_SimpleQueue_qsize, METH_NOARGS, _queue_SimpleQueue_qsize__doc__},
241 : :
242 : : static Py_ssize_t
243 : : _queue_SimpleQueue_qsize_impl(simplequeueobject *self);
244 : :
245 : : static PyObject *
246 : 12 : _queue_SimpleQueue_qsize(simplequeueobject *self, PyObject *Py_UNUSED(ignored))
247 : : {
248 : 12 : PyObject *return_value = NULL;
249 : : Py_ssize_t _return_value;
250 : :
251 : 12 : _return_value = _queue_SimpleQueue_qsize_impl(self);
252 [ - + - - ]: 12 : if ((_return_value == -1) && PyErr_Occurred()) {
253 : 0 : goto exit;
254 : : }
255 : 12 : return_value = PyLong_FromSsize_t(_return_value);
256 : :
257 : 12 : exit:
258 : 12 : return return_value;
259 : : }
260 : : /*[clinic end generated code: output=88ec8033aeb7241c input=a9049054013a1b77]*/
|