Exemplo n.º 1
0
/**
 * Test the first iterator is before the second.
 */
bool_t _set_iterator_before(set_iterator_t it_first, set_iterator_t it_second)
{
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_first) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_first) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_second) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_second) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER(it_first) == _SET_ITERATOR_CONTAINER(it_second));

#ifdef CSTL_SET_AVL_TREE
    return _avl_tree_iterator_before(it_first, it_second);
#else
    return _rb_tree_iterator_before(it_first, it_second);
#endif
}
Exemplo n.º 2
0
/*
 * Erase a range of element in an set.
 */
void set_erase_range(set_t* pset_set, set_iterator_t it_begin, set_iterator_t it_end)
{
    assert(pset_set != NULL);
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_begin) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_begin) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_end) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_end) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER(it_begin) == pset_set);
    assert(_SET_ITERATOR_CONTAINER(it_end) == pset_set);

#ifdef CSTL_SET_AVL_TREE
    _avl_tree_erase_range(&pset_set->_t_tree, it_begin, it_end);
#else
    _rb_tree_erase_range(&pset_set->_t_tree, it_begin, it_end);
#endif
}
Exemplo n.º 3
0
/**
 * Initialize set container with specific range and compare function.
 */
void set_init_copy_range_ex(
    set_t* pset_dest, set_iterator_t it_begin, set_iterator_t it_end, binary_function_t bfun_compare)
{
    assert(pset_dest != NULL);
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_begin) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_begin) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER_TYPE(it_end) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(it_end) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER(it_begin) != pset_dest);
    assert(_SET_ITERATOR_CONTAINER(it_end) != pset_dest);
    assert(_SET_ITERATOR_CONTAINER(it_begin) == _SET_ITERATOR_CONTAINER(it_end));

#ifdef CSTL_SET_AVL_TREE
    _avl_tree_init_copy_range_ex(&pset_dest->_t_tree, it_begin, it_end, bfun_compare);
#else
    _rb_tree_init_copy_range_ex(&pset_dest->_t_tree, it_begin, it_end, bfun_compare);
#endif
}
Exemplo n.º 4
0
/*
 * Erase an element in an set from specificed position.
 */
void set_erase_pos(set_t* pset_set, set_iterator_t t_pos)
{
    assert(pset_set != NULL);
    assert(_SET_ITERATOR_CONTAINER_TYPE(t_pos) == _SET_CONTAINER);
    assert(_SET_ITERATOR_ITERATOR_TYPE(t_pos) == _BIDIRECTIONAL_ITERATOR);
    assert(_SET_ITERATOR_CONTAINER(t_pos) == pset_set);

#ifdef CSTL_SET_AVL_TREE
    _avl_tree_erase_pos(&pset_set->_t_tree, t_pos);
#else
    _rb_tree_erase_pos(&pset_set->_t_tree, t_pos);
#endif
}