diff --git a/src/b-tree.c b/src/b-tree.c index af89802..304632b 100644 --- a/src/b-tree.c +++ b/src/b-tree.c @@ -110,7 +110,7 @@ static int node_write(struct b_tree *tree, long id, const b_tree_node *in) static unsigned long node_get_nr_entries(struct b_tree *tree, b_tree_node *node) { - return tree->tree_ops->node_get_nr_entries(node); + return tree->tree_ops->node_get_nr_entries(tree, node); } static void node_set_nr_entries( @@ -118,7 +118,7 @@ static void node_set_nr_entries( b_tree_node *node, unsigned long val) { - tree->tree_ops->node_set_nr_entries(node, val); + tree->tree_ops->node_set_nr_entries(tree, node, val); } static unsigned long node_get_child( @@ -126,7 +126,7 @@ static unsigned long node_get_child( b_tree_node *node, unsigned long index) { - return tree->tree_ops->node_get_child(node, index); + return tree->tree_ops->node_get_child(tree, node, index); } static void node_set_child( @@ -135,7 +135,7 @@ static void node_set_child( unsigned long index, unsigned long ptr) { - tree->tree_ops->node_set_child(node, index, ptr); + tree->tree_ops->node_set_child(tree, node, index, ptr); } static b_tree_node_entry *node_get_entry( @@ -143,7 +143,7 @@ static b_tree_node_entry *node_get_entry( b_tree_node *node, unsigned long index) { - return tree->tree_ops->node_get_entry(node, index); + return tree->tree_ops->node_get_entry(tree, node, index); } static void node_set_entry( @@ -152,7 +152,7 @@ static void node_set_entry( unsigned long index, const b_tree_node_entry *entry) { - tree->tree_ops->node_set_entry(node, index, entry); + tree->tree_ops->node_set_entry(tree, node, index, entry); } static void node_kill_entry( @@ -160,7 +160,7 @@ static void node_kill_entry( b_tree_node *node, unsigned long index) { - tree->tree_ops->node_kill_entry(node, index); + tree->tree_ops->node_kill_entry(tree, node, index); } static void node_shift_entries( @@ -307,7 +307,7 @@ static int entry_compare( const b_tree_node_entry *a, const b_tree_node_entry *b) { - return tree->tree_ops->entry_compare(a, b); + return tree->tree_ops->entry_compare(tree, a, b); } static int node_put( diff --git a/src/b-tree.h b/src/b-tree.h index 7f85c79..a75b3fc 100644 --- a/src/b-tree.h +++ b/src/b-tree.h @@ -23,18 +23,29 @@ struct b_tree_ops { const b_tree_node *); long (*tree_alloc_node)(struct b_tree *); - unsigned long (*node_get_nr_entries)(b_tree_node *); - void (*node_set_nr_entries)(b_tree_node *, unsigned long); - b_tree_node_entry *(*node_get_entry)(b_tree_node *, unsigned long); + unsigned long (*node_get_nr_entries)(struct b_tree *, b_tree_node *); + void (*node_set_nr_entries)( + struct b_tree *, + b_tree_node *, + unsigned long); + b_tree_node_entry *( + *node_get_entry)(struct b_tree *, b_tree_node *, unsigned long); void (*node_set_entry)( + struct b_tree *, b_tree_node *, unsigned long, const b_tree_node_entry *); - void (*node_kill_entry)(b_tree_node *, unsigned long); - unsigned long (*node_get_child)(b_tree_node *, unsigned long); - void (*node_set_child)(b_tree_node *, unsigned long, unsigned long); + void (*node_kill_entry)(struct b_tree *, b_tree_node *, unsigned long); + unsigned long ( + *node_get_child)(struct b_tree *, b_tree_node *, unsigned long); + void (*node_set_child)( + struct b_tree *, + b_tree_node *, + unsigned long, + unsigned long); int (*entry_compare)( + const struct b_tree *, const b_tree_node_entry *, const b_tree_node_entry *); }; diff --git a/src/cluster-table.c b/src/cluster-table.c index 37fede5..794c2dd 100644 --- a/src/cluster-table.c +++ b/src/cluster-table.c @@ -97,25 +97,32 @@ static long tree_alloc_node(struct b_tree *p) return (long)len; } -static unsigned long node_get_nr_entries(b_tree_node *n) +static unsigned long node_get_nr_entries(struct b_tree *tree, b_tree_node *n) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; return b_i16_btoh(node->g_nr_clusters); } -static void node_set_nr_entries(b_tree_node *n, unsigned long val) +static void node_set_nr_entries( + struct b_tree *tree, + b_tree_node *n, + unsigned long val) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; node->g_nr_clusters = b_i16_htob(val); } -static b_tree_node_entry *node_get_entry(b_tree_node *n, unsigned long index) +static b_tree_node_entry *node_get_entry( + struct b_tree *tree, + b_tree_node *n, + unsigned long index) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; return (b_tree_node_entry *)&node->g_clusters[index]; } static void node_set_entry( + struct b_tree *tree, b_tree_node *n, unsigned long index, const b_tree_node_entry *entry) @@ -124,13 +131,19 @@ static void node_set_entry( memmove(&node->g_clusters[index], entry, sizeof(struct ec3_cluster)); } -static void node_kill_entry(b_tree_node *n, unsigned long index) +static void node_kill_entry( + struct b_tree *tree, + b_tree_node *n, + unsigned long index) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; memset(&node->g_clusters[index], 0x0, sizeof(struct ec3_cluster)); } -static unsigned long node_get_child(b_tree_node *n, unsigned long index) +static unsigned long node_get_child( + struct b_tree *tree, + b_tree_node *n, + unsigned long index) { struct ec3_cluster_group *node = (struct ec3_cluster_group *)n; b_i32 enc_child = node->g_child_offsets[index]; @@ -139,6 +152,7 @@ static unsigned long node_get_child(b_tree_node *n, unsigned long index) } static void node_set_child( + struct b_tree *tree, b_tree_node *n, unsigned long index, unsigned long ptr) @@ -150,6 +164,7 @@ static void node_set_child( } static int entry_compare( + const struct b_tree *tree, const b_tree_node_entry *e0, const b_tree_node_entry *e1) {