]> git.saurik.com Git - redis.git/blobdiff - adlist.h
replace functions to get pointers to head and tail by macros
[redis.git] / adlist.h
index 43476c0ad2acb11625a5646db58bc174242ece0b..41ca13f1fc772e0f7d4bb9f87d13059dd04c2953 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)
@@ -77,11 +76,13 @@ 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, listIter *li);
+void listRewindTail(list *list, listIter *li);
 
 /* Directions for iterators */
 #define AL_START_HEAD 0