oggdec filter improvements.
[paraslash.git] / rbtree.c
index ed8f0ac7c9a545187dfaaab578e60ba74d7b11ea..7f200d1dd09eb36e6e1dd2930969e47e11256485 100644 (file)
--- 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)