rbtree: Add const qualifier to some functions.
authorAndre Noll <maan@systemlinux.org>
Sun, 10 May 2009 19:36:18 +0000 (21:36 +0200)
committerAndre Noll <maan@systemlinux.org>
Sun, 10 May 2009 19:36:18 +0000 (21:36 +0200)
The 'rb_first()', 'rb_last()', 'rb_next()' and 'rb_prev()' calls take a pointer
to an RB node or RB root. They do not change the pointed objects, so add a
'const' qualifier.

See commit f4b477c47332367d35686bd2b808c2156b96d7c7 in the linux source tree.

rbtree.c
rbtree.h

index 5d24aeb..ec8bdb1 100644 (file)
--- a/rbtree.c
+++ b/rbtree.c
@@ -306,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;
 
@@ -318,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;
 
@@ -330,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;
 
@@ -343,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
@@ -358,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;
 
@@ -371,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
@@ -413,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;
 
@@ -422,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);
@@ -436,7 +436,7 @@ 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;
index 38b7752..109dd85 100644 (file)
--- a/rbtree.h
+++ b/rbtree.h
@@ -147,12 +147,12 @@ extern void rb_insert_color(struct rb_node *, struct rb_root *);
 extern void rb_erase(struct rb_node *, struct rb_root *);
 
 /* Find logical next and previous nodes in a tree */
-extern struct rb_node *rb_next(struct rb_node *);
-extern struct rb_node *rb_prev(struct rb_node *);
-extern struct rb_node *rb_first(struct rb_root *);
-extern struct rb_node *rb_last(struct rb_root *);
-extern struct rb_node *rb_nth(struct rb_node *node, unsigned n);
-extern int rb_rank(struct rb_node *node, unsigned *rank);
+extern struct rb_node *rb_next(const struct rb_node *);
+extern struct rb_node *rb_prev(const struct rb_node *);
+extern struct rb_node *rb_first(const struct rb_root *);
+extern struct rb_node *rb_last(const struct rb_root *);
+extern struct rb_node *rb_nth(const struct rb_node *node, unsigned n);
+extern int rb_rank(const struct rb_node *node, unsigned *rank);
 
 /* Fast replacement of a single node without remove/rebalance/add/rebalance */
 extern void rb_replace_node(struct rb_node *victim, struct rb_node *new,