Temporary changes to dlinklist to keep the implementation static whilst
authorJeremy Allison <jra@samba.org>
Wed, 10 Feb 2010 23:30:59 +0000 (15:30 -0800)
committerJeremy Allison <jra@samba.org>
Wed, 10 Feb 2010 23:30:59 +0000 (15:30 -0800)
uses of (list)->prev are moved over to DLIST_PREV. This will be replaced
when the final (new) version of the dlinklist.h header is added.

Jeremy.

lib/util/dlinklist.h
source3/lib/ldb/include/dlinklist.h
source4/lib/ldb/include/dlinklist.h

index 693b43dd27e083152b9c6d189c115930872badd0..c1f01e616ae2ea1147e8370905f024a8f2a0b15f 100644 (file)
@@ -51,6 +51,22 @@ do { \
        if ((p) != (list)) (p)->next = (p)->prev = NULL; \
 } while (0)
 
        if ((p) != (list)) (p)->next = (p)->prev = NULL; \
 } while (0)
 
+#define DLIST_HEAD(p, result_head) \
+do { \
+       (result_head) = (p); \
+       while (DLIST_PREV(result_head)) (result_head) = (result_head)->prev; \
+} while(0)
+
+/* return the last element in the list */
+#define DLIST_TAIL(list, result_tail) \
+do { \
+       (result_tail) = (list); \
+       while ((result_tail) && (result_tail)->next) (result_tail) = (result_tail)->next; \
+} while (0);
+
+/* return the previous element in the list. */
+#define DLIST_PREV(p) ((p)?(p)->prev:NULL)
+
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \
index 62f885dd30c9c010f1e25a0933cee1a19e87ae64..0bd80a79df958311bf8c4507456fa6dcb9e61f94 100644 (file)
@@ -51,6 +51,22 @@ do { \
        if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
 } while (0)
 
        if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
 } while (0)
 
+#define DLIST_HEAD(p, result_head) \
+do { \
+       (result_head) = (p); \
+       while (DLIST_PREV(result_head)) (result_head) = (result_head)->prev; \
+} while(0)
+
+/* return the last element in the list */
+#define DLIST_TAIL(list, result_tail) \
+do { \
+       (result_tail) = (list); \
+       while ((result_tail) && (result_tail)->next) (result_tail) = (result_tail)->next; \
+} while (0);
+
+/* return the previous element in the list. */
+#define DLIST_PREV(p) ((p)?(p)->prev:NULL)
+
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \
index 62f885dd30c9c010f1e25a0933cee1a19e87ae64..0bd80a79df958311bf8c4507456fa6dcb9e61f94 100644 (file)
@@ -51,6 +51,22 @@ do { \
        if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
 } while (0)
 
        if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
 } while (0)
 
+#define DLIST_HEAD(p, result_head) \
+do { \
+       (result_head) = (p); \
+       while (DLIST_PREV(result_head)) (result_head) = (result_head)->prev; \
+} while(0)
+
+/* return the last element in the list */
+#define DLIST_TAIL(list, result_tail) \
+do { \
+       (result_tail) = (list); \
+       while ((result_tail) && (result_tail)->next) (result_tail) = (result_tail)->next; \
+} while (0);
+
+/* return the previous element in the list. */
+#define DLIST_PREV(p) ((p)?(p)->prev:NULL)
+
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \
 /* promote an element to the top of the list */
 #define DLIST_PROMOTE(list, p) \
 do { \