X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=rbtree.c;h=7f200d1dd09eb36e6e1dd2930969e47e11256485;hp=ed8f0ac7c9a545187dfaaab578e60ba74d7b11ea;hb=0dd69d3988a677aeb8d0d3aea8364c664ac35fb9;hpb=f6f50d03a09d6bc423324206d274336e9905bbb4 diff --git a/rbtree.c b/rbtree.c index ed8f0ac7..7f200d1d 100644 --- a/rbtree.c +++ b/rbtree.c @@ -21,6 +21,8 @@ linux/lib/rbtree.c */ +/** \file rbtree.c Red-black tree implementation. */ + #include "stddef.h" #include "rbtree.h" @@ -304,7 +306,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) /* * This function returns the first node (in sort order) of the tree. */ -struct rb_node *rb_first(struct rb_root *root) +struct rb_node *rb_first(const struct rb_root *root) { struct rb_node *n; @@ -316,7 +318,7 @@ struct rb_node *rb_first(struct rb_root *root) return n; } -struct rb_node *rb_last(struct rb_root *root) +struct rb_node *rb_last(const struct rb_root *root) { struct rb_node *n; @@ -328,7 +330,7 @@ struct rb_node *rb_last(struct rb_root *root) return n; } -struct rb_node *rb_next(struct rb_node *node) +struct rb_node *rb_next(const struct rb_node *node) { struct rb_node *parent; @@ -341,7 +343,7 @@ struct rb_node *rb_next(struct rb_node *node) node = node->rb_right; while (node->rb_left) node=node->rb_left; - return node; + return (struct rb_node *)node; } /* No right-hand children. Everything down and left is @@ -356,7 +358,7 @@ struct rb_node *rb_next(struct rb_node *node) return parent; } -struct rb_node *rb_prev(struct rb_node *node) +struct rb_node *rb_prev(const struct rb_node *node) { struct rb_node *parent; @@ -369,7 +371,7 @@ struct rb_node *rb_prev(struct rb_node *node) node = node->rb_left; while (node->rb_right) node=node->rb_right; - return node; + return (struct rb_node *)node; } /* No left-hand children. Go up till we find an ancestor which @@ -411,7 +413,7 @@ void rb_replace_node(struct rb_node *victim, struct rb_node *new, * * \return Pointer to the \a n th greatest node on success, \p NULL on errors. */ -struct rb_node *rb_nth(struct rb_node *node, unsigned n) +struct rb_node *rb_nth(const struct rb_node *node, unsigned n) { unsigned size = 1; @@ -420,7 +422,7 @@ struct rb_node *rb_nth(struct rb_node *node, unsigned n) if (node->rb_left) size += node->rb_left->size; if (n == size) - return node; + return (struct rb_node *)node; if (n < size) return rb_nth(node->rb_left, n); return rb_nth(node->rb_right, n - size); @@ -434,11 +436,11 @@ struct rb_node *rb_nth(struct rb_node *node, unsigned n) * * \return Positive on success, -1 on errors. */ -int rb_rank(struct rb_node *node, unsigned *rank) +int rb_rank(const struct rb_node *node, unsigned *rank) { - *rank = 1; struct rb_node *parent; + *rank = 1; if (!node) return -1; if (node->rb_left)