From 584550e76531435286a7a963dace0e8c062c1524 Mon Sep 17 00:00:00 2001 From: 4tochka Date: Sat, 11 May 2019 17:50:27 +0400 Subject: [PATCH] connector --- pybtc/lru/lru.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pybtc/lru/lru.c b/pybtc/lru/lru.c index 371d2a7..f2bc7e1 100644 --- a/pybtc/lru/lru.c +++ b/pybtc/lru/lru.c @@ -253,10 +253,7 @@ lru_subscript(LRU *self, register PyObject *key) assert(PyObject_TypeCheck(node, &NodeType)); /* We don't need to move the node when it's already self->first. */ - if (node != self->first) { - lru_remove_node(self, node); - lru_add_node_at_head(self, node); - } + self->hits++; Py_INCREF(node->value); @@ -264,6 +261,25 @@ lru_subscript(LRU *self, register PyObject *key) return node->value; } +static PyObject * +LRU_pop(LRU *self) +{ + + if (self->last) { + PyObject *tuple = PyTuple_New(2); + Py_INCREF(self->last->key); + PyTuple_SET_ITEM(tuple, 0, self->last->key); + Py_INCREF(self->last->value); + PyTuple_SET_ITEM(tuple, 1, self->last->value); + Node* n = self->last; + lru_remove_node(self, n); + PUT_NODE(self->dict, n->key, NULL); + return tuple; + } + else Py_RETURN_NONE; +} + + static PyObject * LRU_get(LRU *self, PyObject *args) {