/** exported function implementation section **/ void test_avl_tree(void) { avl_tree_t t_tree = _create_avl_tree(sizeof(int), "int"); avl_tree_t t_tree2 = _create_avl_tree(sizeof(int), "int"); int n_value = 900; _avl_tree_init(&t_tree, NULL, NULL); _avl_tree_insert_equal(&t_tree, &n_value); printf("avl tree1 - size:%u, max_size:%u, empty:%d\n", _avl_tree_size(&t_tree), _avl_tree_max_size(&t_tree), _avl_tree_empty(&t_tree)); /*_avl_tree_init_copy_range(*/ /*&t_tree2, _avl_tree_begin(&t_tree), _avl_tree_begin(&t_tree));*/ /*printf("avl tree2 - size:%u, max_size:%u, empty:%d\n",*/ /*_avl_tree_size(&t_tree2), _avl_tree_max_size(&t_tree2), _avl_tree_empty(&t_tree2));*/ _avl_tree_init_copy_range_cmp( &t_tree2, _avl_tree_begin(&t_tree), _avl_tree_begin(&t_tree), NULL); printf("avl tree2 - size:%u, max_size:%u, empty:%d\n", _avl_tree_size(&t_tree2), _avl_tree_max_size(&t_tree2), _avl_tree_empty(&t_tree2)); _avl_tree_insert_equal_range( &t_tree2, _avl_tree_begin(&t_tree), _avl_tree_begin(&t_tree)); printf("avl tree2 - size:%u, max_size:%u, empty:%d\n", _avl_tree_size(&t_tree2), _avl_tree_max_size(&t_tree2), _avl_tree_empty(&t_tree2)); _avl_tree_insert_unique_range( &t_tree2, _avl_tree_end(&t_tree), _avl_tree_end(&t_tree)); printf("avl tree2 - size:%u, max_size:%u, empty:%d\n", _avl_tree_size(&t_tree2), _avl_tree_max_size(&t_tree2), _avl_tree_empty(&t_tree2)); _avl_tree_erase_range(&t_tree2, _avl_tree_begin(&t_tree2), _avl_tree_begin(&t_tree2)); printf("avl tree2 - size:%u, max_size:%u, empty:%d\n", _avl_tree_size(&t_tree2), _avl_tree_max_size(&t_tree2), _avl_tree_empty(&t_tree2)); _avl_tree_destroy(&t_tree); _avl_tree_destroy(&t_tree2); }
/** * Initialize avl tree container with specific range and compare function. */ void _avl_tree_init_copy_equal_range_ex(_avl_tree_t* pt_dest, iterator_t it_begin, iterator_t it_end, bfun_t t_compare) { assert(pt_dest != NULL); assert(_avl_tree_is_created(pt_dest)); assert(_avl_tree_same_iterator_type(pt_dest, it_begin)); assert(_avl_tree_same_iterator_type(pt_dest, it_end)); assert(iterator_equal(it_begin, it_end) || _iterator_before(it_begin, it_end)); _avl_tree_init(pt_dest, t_compare); _avl_tree_insert_equal_range(pt_dest, it_begin, it_end); }
/** * Inserts an range of element into a multiset. */ void multiset_insert_range(multiset_t* pmset_mset, iterator_t it_begin, iterator_t it_end) { assert(pmset_mset != NULL); assert(iterator_equal(it_begin, it_end) || _iterator_before(it_begin, it_end)); #ifdef CSTL_MULTISET_AVL_TREE _avl_tree_insert_equal_range(&pmset_mset->_t_tree, it_begin, it_end); #else _rb_tree_insert_equal_range(&pmset_mset->_t_tree, it_begin, it_end); #endif }