Exemple #1
0
/**
 * Test the type that saved in the avl tree container and referenced by it_iter are same.
 */
bool_t _avl_tree_same_avl_tree_iterator_type(const _avl_tree_t* cpt_avl_tree, _avl_tree_iterator_t it_iter)
{
    assert(cpt_avl_tree != NULL);
    assert( _AVL_TREE_ITERATOR_TREE(it_iter) != NULL);

    return _avl_tree_same_type(cpt_avl_tree, _AVL_TREE_ITERATOR_TREE(it_iter));
}
Exemple #2
0
/**
 * Test the type and compare function that saved in the avl tree container is same.
 */
bool_t _avl_tree_same_type_ex(const _avl_tree_t* cpt_first, const _avl_tree_t* cpt_second)
{
    assert(cpt_first != NULL);
    assert(cpt_second != NULL);
    assert(_avl_tree_is_inited(cpt_first) || _avl_tree_is_created(cpt_first));
    assert(_avl_tree_is_inited(cpt_second) || _avl_tree_is_created(cpt_second));

    if (cpt_first == cpt_second) {
        return true;
    }

    return (cpt_first->_t_compare == cpt_second->_t_compare) && _avl_tree_same_type(cpt_first, cpt_second);
}
Exemple #3
0
/**
 * Initialize avl tree container with avl tree.
 */
void _avl_tree_init_copy(_avl_tree_t* pt_dest, const _avl_tree_t* cpt_src)
{
    _avl_tree_iterator_t it_iter;
    _avl_tree_iterator_t it_begin;
    _avl_tree_iterator_t it_end;

    assert(pt_dest != NULL);
    assert(cpt_src != NULL);
    assert(_avl_tree_is_created(pt_dest));
    assert(_avl_tree_is_inited(cpt_src));
    assert(_avl_tree_same_type(pt_dest, cpt_src));

    /* init the avl tree with the src avl tree */
    _avl_tree_init(pt_dest,  cpt_src->_t_compare);
    it_begin = _avl_tree_begin(cpt_src);
    it_end = _avl_tree_end(cpt_src);

    /* insert all elements of src into dest */
    for (it_iter = it_begin;
         !_avl_tree_iterator_equal(it_iter, it_end);
         it_iter = _avl_tree_iterator_next(it_iter)) {
        _avl_tree_insert_equal(pt_dest, _avl_tree_iterator_get_pointer_ignore_cstr(it_iter));
    }
}