Пример #1
0
/**
 * Test iterator referenced data is within the slist.
 */
bool_t _slist_iterator_belong_to_slist(const slist_t* cpslist_slist, slist_iterator_t it_iter)
{
    _slistnode_t* pt_node = NULL;

    assert(cpslist_slist != NULL);
    assert(_slist_is_inited(cpslist_slist));
    assert(_SLIST_ITERATOR_CONTAINER(it_iter) == cpslist_slist);
    assert(_SLIST_ITERATOR_CONTAINER_TYPE(it_iter) == _SLIST_CONTAINER);
    assert(_SLIST_ITERATOR_ITERATOR_TYPE(it_iter) == _FORWARD_ITERATOR);

    /* the end iterator of slist corepos is NULL */
    if(_SLIST_ITERATOR_COREPOS(it_iter) == NULL)
    {
        return true;
    }

    for(pt_node = cpslist_slist->_t_head._pt_next; pt_node != NULL; pt_node = pt_node->_pt_next)
    {
        if(pt_node == (_slistnode_t*)_SLIST_ITERATOR_COREPOS(it_iter))
        {
            return true;
        }
    }

    return false;
}
Пример #2
0
/**
 * Test the type that saved in the slist container and referenced by it_iter are same.
 */
bool_t _slist_same_slist_iterator_type(const slist_t* cpslist_slist, slist_iterator_t it_iter)
{
    assert(cpslist_slist != NULL);
    assert(_SLIST_ITERATOR_CONTAINER(it_iter) != NULL);
    assert(_SLIST_ITERATOR_CONTAINER_TYPE(it_iter) == _SLIST_CONTAINER);
    assert(_SLIST_ITERATOR_ITERATOR_TYPE(it_iter) == _FORWARD_ITERATOR);

    return _slist_same_type(cpslist_slist, _SLIST_ITERATOR_CONTAINER(it_iter));
}
Пример #3
0
/**
 * Create slist iterator.
 */
slist_iterator_t _create_slist_iterator(void)
{
    slist_iterator_t it_iter;

    _SLIST_ITERATOR_ITERATOR_TYPE(it_iter) = _FORWARD_ITERATOR;
    _SLIST_ITERATOR_CONTAINER_TYPE(it_iter) = _SLIST_CONTAINER;
    _ITERATOR_CONTAINER(it_iter) = NULL;
    _SLIST_ITERATOR_COREPOS(it_iter) = NULL;

    return it_iter;
}