Ejemplo n.º 1
0
/**
 * btree_init
 * @access private
 * @param btree struct, caller allocates and owns
 * @return void
 *
 * Empties out the current contents of a btree and sets up a new root node
 */
static void btree_init(btree_tree *t)
{
	btree_node *tmp_node;

	t->header->version = 1;
	t->header->next_node_idx = 0;
	t->header->node_count = NODE_COUNT(t->header->max_items, t->header->order);

	t->freelist.size = t->header->max_items;
	t->freelist.setinfo = t->mmap + BTREE_HEADER_SIZE;
	dr_set_init(&(t->freelist));
	
	t->nodes = t->mmap +
		BTREE_HEADER_SIZE +
		BTREE_FREELIST_SIZE(t->header->max_items);

	t->data = t->mmap +
		BTREE_HEADER_SIZE +
		BTREE_FREELIST_SIZE(t->header->max_items) +
		(t->header->node_count * 4096);

	tmp_node = btree_allocate_node(t);
	tmp_node->leaf = 1;
	tmp_node->nr_of_keys = 0;

	t->root = tmp_node;
}
Ejemplo n.º 2
0
dr_set *dr_set_create(unsigned int size)
{
	dr_set *tmp;

	if (size < 1) {
		return NULL;
	}

	tmp = calloc(1, sizeof(dr_set));
	tmp->size = size;
	tmp->setinfo = calloc(1, DR_SET_SIZE(size));

	dr_set_init(tmp);

	return tmp;
}