summaryrefslogtreecommitdiff
path: root/adlist.h
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2009-04-20 23:51:51 +0200
committerantirez <antirez@gmail.com>2009-04-20 23:51:51 +0200
commit6208b3a77644afe5c7c28688cd6d7554a0281953 (patch)
tree964524ab45b932d1ee23612ee740eb2c63c51216 /adlist.h
parent40d224a9e3df29e27e967ec2f1b9b0ecf66df50f (diff)
downloadredis-6208b3a77644afe5c7c28688cd6d7554a0281953.tar.gz
Non blocking replication (finally!). C-side linked lists API improved.
Diffstat (limited to 'adlist.h')
-rw-r--r--adlist.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/adlist.h b/adlist.h
index 43476c0ad..4d32fef50 100644
--- a/adlist.h
+++ b/adlist.h
@@ -39,6 +39,11 @@ typedef struct listNode {
void *value;
} listNode;
+typedef struct listIter {
+ listNode *next;
+ int direction;
+} listIter;
+
typedef struct list {
listNode *head;
listNode *tail;
@@ -46,14 +51,9 @@ typedef struct list {
void (*free)(void *ptr);
int (*match)(void *ptr, void *key);
unsigned int len;
+ listIter iter;
} list;
-typedef struct listIter {
- listNode *next;
- listNode *prev;
- int direction;
-} listIter;
-
/* Functions implemented as macros */
#define listLength(l) ((l)->len)
#define listFirst(l) ((l)->head)
@@ -77,11 +77,14 @@ list *listAddNodeHead(list *list, void *value);
list *listAddNodeTail(list *list, void *value);
void listDelNode(list *list, listNode *node);
listIter *listGetIterator(list *list, int direction);
-listNode *listNextElement(listIter *iter);
+listNode *listNext(listIter *iter);
void listReleaseIterator(listIter *iter);
list *listDup(list *orig);
listNode *listSearchKey(list *list, void *key);
listNode *listIndex(list *list, int index);
+void listRewind(list *list);
+void listRewindTail(list *list);
+listNode *listYield(list *list);
/* Directions for iterators */
#define AL_START_HEAD 0