(root)/
Python-3.11.7/
Modules/
clinic/
_queuemodule.c.h
       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  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           type->tp_init == simplequeue_get_state_by_type(type)->SimpleQueueType->tp_init) &&
      21          !_PyArg_NoPositional("SimpleQueue", args)) {
      22          goto exit;
      23      }
      24      if ((type == simplequeue_get_state_by_type(type)->SimpleQueueType ||
      25           type->tp_init == simplequeue_get_state_by_type(type)->SimpleQueueType->tp_init) &&
      26          !_PyArg_NoKeywords("SimpleQueue", kwargs)) {
      27          goto exit;
      28      }
      29      return_value = simplequeue_new_impl(type);
      30  
      31  exit:
      32      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  _queue_SimpleQueue_put(simplequeueobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
      53  {
      54      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      Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
      59      PyObject *item;
      60      int block = 1;
      61      PyObject *timeout = Py_None;
      62  
      63      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
      64      if (!args) {
      65          goto exit;
      66      }
      67      item = args[0];
      68      if (!noptargs) {
      69          goto skip_optional_pos;
      70      }
      71      if (args[1]) {
      72          block = PyObject_IsTrue(args[1]);
      73          if (block < 0) {
      74              goto exit;
      75          }
      76          if (!--noptargs) {
      77              goto skip_optional_pos;
      78          }
      79      }
      80      timeout = args[2];
      81  skip_optional_pos:
      82      return_value = _queue_SimpleQueue_put_impl(self, item, block, timeout);
      83  
      84  exit:
      85      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  _queue_SimpleQueue_put_nowait(simplequeueobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     105  {
     106      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      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     113      if (!args) {
     114          goto exit;
     115      }
     116      item = args[0];
     117      return_value = _queue_SimpleQueue_put_nowait_impl(self, item);
     118  
     119  exit:
     120      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  _queue_SimpleQueue_get(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     146  {
     147      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      Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
     152      int block = 1;
     153      PyObject *timeout_obj = Py_None;
     154  
     155      args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
     156      if (!args) {
     157          goto exit;
     158      }
     159      if (!noptargs) {
     160          goto skip_optional_pos;
     161      }
     162      if (args[0]) {
     163          block = PyObject_IsTrue(args[0]);
     164          if (block < 0) {
     165              goto exit;
     166          }
     167          if (!--noptargs) {
     168              goto skip_optional_pos;
     169          }
     170      }
     171      timeout_obj = args[1];
     172  skip_optional_pos:
     173      return_value = _queue_SimpleQueue_get_impl(self, cls, block, timeout_obj);
     174  
     175  exit:
     176      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  _queue_SimpleQueue_get_nowait(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     197  {
     198      if (nargs) {
     199          PyErr_SetString(PyExc_TypeError, "get_nowait() takes no arguments");
     200          return NULL;
     201      }
     202      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  _queue_SimpleQueue_empty(simplequeueobject *self, PyObject *Py_UNUSED(ignored))
     219  {
     220      PyObject *return_value = NULL;
     221      int _return_value;
     222  
     223      _return_value = _queue_SimpleQueue_empty_impl(self);
     224      if ((_return_value == -1) && PyErr_Occurred()) {
     225          goto exit;
     226      }
     227      return_value = PyBool_FromLong((long)_return_value);
     228  
     229  exit:
     230      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  _queue_SimpleQueue_qsize(simplequeueobject *self, PyObject *Py_UNUSED(ignored))
     247  {
     248      PyObject *return_value = NULL;
     249      Py_ssize_t _return_value;
     250  
     251      _return_value = _queue_SimpleQueue_qsize_impl(self);
     252      if ((_return_value == -1) && PyErr_Occurred()) {
     253          goto exit;
     254      }
     255      return_value = PyLong_FromSsize_t(_return_value);
     256  
     257  exit:
     258      return return_value;
     259  }
     260  /*[clinic end generated code: output=88ec8033aeb7241c input=a9049054013a1b77]*/