summaryrefslogtreecommitdiff
path: root/filter/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'filter/tree.c')
-rw-r--r--filter/tree.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/filter/tree.c b/filter/tree.c
index f8379fa8..80e1d395 100644
--- a/filter/tree.c
+++ b/filter/tree.c
@@ -23,15 +23,15 @@
* Both set matching and |switch() { }| construction is implemented using this function,
* thus both are as fast as they can be.
*/
-struct f_tree *
-find_tree(struct f_tree *t, struct f_val val)
+const struct f_tree *
+find_tree(const struct f_tree *t, const struct f_val *val)
{
if (!t)
return NULL;
- if ((val_compare(t->from, val) != 1) &&
- (val_compare(t->to, val) != -1))
+ if ((val_compare(&(t->from), val) != 1) &&
+ (val_compare(&(t->to), val) != -1))
return t;
- if (val_compare(t->from, val) == -1)
+ if (val_compare(&(t->from), val) == -1)
return find_tree(t->right, val);
else
return find_tree(t->left, val);
@@ -56,7 +56,7 @@ build_tree_rec(struct f_tree **buf, int l, int h)
static int
tree_compare(const void *p1, const void *p2)
{
- return val_compare((* (struct f_tree **) p1)->from, (* (struct f_tree **) p2)->from);
+ return val_compare(&((* (struct f_tree **) p1)->from), &((* (struct f_tree **) p2)->from));
}
/**
@@ -119,39 +119,39 @@ f_new_tree(void)
* Compares two trees and returns 1 if they are same
*/
int
-same_tree(struct f_tree *t1, struct f_tree *t2)
+same_tree(const struct f_tree *t1, const struct f_tree *t2)
{
if ((!!t1) != (!!t2))
return 0;
if (!t1)
return 1;
- if (val_compare(t1->from, t2->from))
+ if (val_compare(&(t1->from), &(t2->from)))
return 0;
- if (val_compare(t1->to, t2->to))
+ if (val_compare(&(t1->to), &(t2->to)))
return 0;
if (!same_tree(t1->left, t2->left))
return 0;
if (!same_tree(t1->right, t2->right))
return 0;
- if (!i_same(t1->data, t2->data))
+ if (!f_same(t1->data, t2->data))
return 0;
return 1;
}
static void
-tree_node_format(struct f_tree *t, buffer *buf)
+tree_node_format(const struct f_tree *t, buffer *buf)
{
if (t == NULL)
return;
tree_node_format(t->left, buf);
- val_format(t->from, buf);
- if (val_compare(t->from, t->to) != 0)
+ val_format(&(t->from), buf);
+ if (val_compare(&(t->from), &(t->to)) != 0)
{
buffer_puts(buf, "..");
- val_format(t->to, buf);
+ val_format(&(t->to), buf);
}
buffer_puts(buf, ", ");
@@ -159,7 +159,7 @@ tree_node_format(struct f_tree *t, buffer *buf)
}
void
-tree_format(struct f_tree *t, buffer *buf)
+tree_format(const struct f_tree *t, buffer *buf)
{
buffer_puts(buf, "[");