Alexandre Julliard : rbtree.h: Add a wine_rb_prev iteration helper function.
Alexandre Julliard
julliard at winehq.org
Thu Sep 7 15:44:57 CDT 2017
Module: wine
Branch: master
Commit: c1d46149e0bdaf59aa2251fc6b9c692b8c2f52e3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1d46149e0bdaf59aa2251fc6b9c692b8c2f52e3
Author: Alexandre Julliard <julliard at 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 at 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;
More information about the wine-cvs
mailing list