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