aboutsummaryrefslogtreecommitdiff
path: root/tree.c
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2011-06-08 23:30:01 +0200
committerDaniel Lezcano <daniel.lezcano@free.fr>2011-06-08 23:30:01 +0200
commit6d42e81bf9dc4b2152f678cc205a5e7175be15bc (patch)
treeefd8d5443c4360db8c3e3b000a76f1006c578fc1 /tree.c
parent7b16b8192500916604f5e20185f69c6da82f9040 (diff)
add a function to browse at reverse order the tree
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tree.c b/tree.c
index 0a9c119..516e832 100644
--- a/tree.c
+++ b/tree.c
@@ -224,6 +224,20 @@ int tree_for_each(struct tree *tree, tree_cb_t cb, void *data)
return tree_for_each(tree->next, cb, data);
}
+int tree_for_each_reverse(struct tree *tree, tree_cb_t cb, void *data)
+{
+ if (!tree)
+ return 0;
+
+ if (cb(tree, data))
+ return -1;
+
+ if (tree_for_each_reverse(tree->prev, cb, data))
+ return -1;
+
+ return tree_for_each_reverse(tree->parent, cb, data);
+}
+
int tree_for_each_parent(struct tree *tree, tree_cb_t cb, void *data)
{
if (!tree)