diff options
author | antirez <antirez@gmail.com> | 2009-04-20 23:51:51 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2009-04-20 23:51:51 +0200 |
commit | 6208b3a77644afe5c7c28688cd6d7554a0281953 (patch) | |
tree | 964524ab45b932d1ee23612ee740eb2c63c51216 /adlist.h | |
parent | 40d224a9e3df29e27e967ec2f1b9b0ecf66df50f (diff) | |
download | redis-6208b3a77644afe5c7c28688cd6d7554a0281953.tar.gz |
Non blocking replication (finally!). C-side linked lists API improved.
Diffstat (limited to 'adlist.h')
-rw-r--r-- | adlist.h | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -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 |