add pointer to b_tree as a parameter to all callbacks
This commit is contained in:
16
src/b-tree.c
16
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(
|
||||
|
||||
23
src/b-tree.h
23
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 *);
|
||||
};
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user