From: Andre Noll Date: Sun, 10 May 2009 19:31:13 +0000 (+0200) Subject: rbtree: Add const qualifier to some functions. X-Git-Tag: v0.3.5~51 X-Git-Url: http://git.tue.mpg.de/?a=commitdiff_plain;h=9f0824c310af620e10f76f7cb1613228a517ea3f;p=paraslash.git rbtree: Add const qualifier to some functions. 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. --- diff --git a/rbtree.c b/rbtree.c index 95bcee39..7f200d1d 100644 --- 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) { struct rb_node *parent; diff --git a/rbtree.h b/rbtree.h index 38b7752b..8295d2ad 100644 --- a/rbtree.h +++ b/rbtree.h @@ -147,12 +147,13 @@ 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,