diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2011-06-08 23:30:01 +0200 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@free.fr> | 2011-06-08 23:30:01 +0200 |
commit | 6d42e81bf9dc4b2152f678cc205a5e7175be15bc (patch) | |
tree | efd8d5443c4360db8c3e3b000a76f1006c578fc1 /tree.c | |
parent | 7b16b8192500916604f5e20185f69c6da82f9040 (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.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -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) |