forked from mirrors/kore
Give pyqueues "popnow".
This commit is contained in:
parent
c8795b7d7f
commit
fad5c6ea6f
|
@ -168,10 +168,12 @@ struct pyqueue {
|
|||
|
||||
static PyObject *pyqueue_pop(struct pyqueue *, PyObject *);
|
||||
static PyObject *pyqueue_push(struct pyqueue *, PyObject *);
|
||||
static PyObject *pyqueue_popnow(struct pyqueue *, PyObject *);
|
||||
|
||||
static PyMethodDef pyqueue_methods[] = {
|
||||
METHOD("pop", pyqueue_pop, METH_NOARGS),
|
||||
METHOD("push", pyqueue_push, METH_VARARGS),
|
||||
METHOD("popnow", pyqueue_popnow, METH_NOARGS),
|
||||
METHOD(NULL, NULL, -1)
|
||||
};
|
||||
|
||||
|
|
18
src/python.c
18
src/python.c
|
@ -1446,6 +1446,24 @@ pyqueue_pop(struct pyqueue *queue, PyObject *args)
|
|||
return ((PyObject *)op);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
pyqueue_popnow(struct pyqueue *queue, PyObject *args)
|
||||
{
|
||||
PyObject *obj;
|
||||
struct pyqueue_object *object;
|
||||
|
||||
if ((object = TAILQ_FIRST(&queue->objects)) == NULL) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
TAILQ_REMOVE(&queue->objects, object, list);
|
||||
|
||||
obj = object->obj;
|
||||
kore_pool_put(&queue_object_pool, object);
|
||||
|
||||
return (obj);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
pyqueue_push(struct pyqueue *queue, PyObject *args)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue