Module: wine Branch: master Commit: c1d46149e0bdaf59aa2251fc6b9c692b8c2f52e3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1d46149e0bdaf59aa2251fc6b...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Sep 7 19:31:26 2017 +0200
rbtree.h: Add a wine_rb_prev iteration helper function.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
include/wine/rbtree.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/include/wine/rbtree.h b/include/wine/rbtree.h index 65d9a90..bb4edf5 100644 --- a/include/wine/rbtree.h +++ b/include/wine/rbtree.h @@ -101,6 +101,13 @@ static inline struct wine_rb_entry *wine_rb_head(struct wine_rb_entry *iter) return iter; }
+static inline struct wine_rb_entry *wine_rb_tail(struct wine_rb_entry *iter) +{ + if (!iter) return NULL; + while (iter->right) iter = iter->right; + return iter; +} + static inline struct wine_rb_entry *wine_rb_next(struct wine_rb_entry *iter) { if (iter->right) return wine_rb_head(iter->right); @@ -108,6 +115,13 @@ static inline struct wine_rb_entry *wine_rb_next(struct wine_rb_entry *iter) return iter->parent; }
+static inline struct wine_rb_entry *wine_rb_prev(struct wine_rb_entry *iter) +{ + if (iter->left) return wine_rb_tail(iter->left); + while (iter->parent && iter->parent->left == iter) iter = iter->parent; + return iter->parent; +} + static inline struct wine_rb_entry *wine_rb_postorder_head(struct wine_rb_entry *iter) { if (!iter) return NULL;