shlist: couple new functions
authorMarko Kreen <markokr@gmail.com>
Mon, 31 Jan 2011 09:50:17 +0000 (11:50 +0200)
committerMarko Kreen <markokr@gmail.com>
Mon, 31 Jan 2011 09:50:17 +0000 (11:50 +0200)
usual/shlist.h

index b5370fcc3b6cc1dc35c5246c73be2ceb49ce777a..e209c8054e353037bee9f481bd600697a544e28d 100644 (file)
@@ -101,6 +101,16 @@ static inline bool shlist_empty(const struct SHList *list)
        return list->next == list->prev;
 }
 
+static inline struct SHList *shlist_next(const struct SHList *list, const struct SHList *elem)
+{
+       return _sh2ptr(list, elem->next);
+}
+
+static inline struct SHList *shlist_prev(const struct SHList *list, const struct SHList *elem)
+{
+       return _sh2ptr(list, elem->prev);
+}
+
 /** Return first elem */
 static inline struct SHList *shlist_first(const struct SHList *list)
 {
@@ -109,6 +119,14 @@ static inline struct SHList *shlist_first(const struct SHList *list)
        return _sh2ptr(list, list->next);
 }
 
+/** Return last elem */
+static inline struct SHList *shlist_last(const struct SHList *list)
+{
+       if (shlist_empty(list))
+               return NULL;
+       return _sh2ptr(list, list->prev);
+}
+
 /** Remove first elem */
 static inline struct SHList *shlist_pop(struct SHList *list)
 {