]> git.saurik.com Git - redis.git/blobdiff - adlist.h
check if the list encoding needs to be changed on LPUSHX, RPUSHX, LINSERT
[redis.git] / adlist.h
index 43476c0ad2acb11625a5646db58bc174242ece0b..a1209f62faaf8537ea752c250fe8c65f5c5b247c 100644 (file)
--- a/adlist.h
+++ b/adlist.h
@@ -1,6 +1,6 @@
 /* adlist.h - A generic doubly linked list implementation
  *
- * Copyright (c) 2006-2009, Salvatore Sanfilippo <antirez at gmail dot com>
+ * Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -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;
@@ -48,12 +53,6 @@ typedef struct list {
     unsigned int len;
 } 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)
@@ -75,13 +74,16 @@ list *listCreate(void);
 void listRelease(list *list);
 list *listAddNodeHead(list *list, void *value);
 list *listAddNodeTail(list *list, void *value);
+list *listInsertNode(list *list, listNode *old_node, void *value, int after);
 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, listIter *li);
+void listRewindTail(list *list, listIter *li);
 
 /* Directions for iterators */
 #define AL_START_HEAD 0