Beispiel #1
0
/**
 * Initialize data within range [it_begin, it_end) according to deque element data type.
 */
void _deque_init_elem_range_auxiliary(deque_t* pdeq_deque, deque_iterator_t it_begin, deque_iterator_t it_end)
{
    deque_iterator_t it_iter;

    assert(pdeq_deque != NULL);
    assert(_deque_is_inited(pdeq_deque) || _deque_is_created(pdeq_deque));
    assert(_deque_iterator_belong_to_deque(_GET_DEQUE_CONTAINER(it_begin), it_begin));
    assert(_deque_iterator_belong_to_deque(_GET_DEQUE_CONTAINER(it_end), it_end));
    assert(iterator_equal(it_begin, it_end) || _deque_iterator_before(it_begin, it_end));

    /* initialize new elements */
    if(_GET_DEQUE_TYPE_STYLE(pdeq_deque) == _TYPE_CSTL_BUILTIN)
    {
        /* get element type name */
        char s_elemtypename[_TYPE_NAME_SIZE + 1];
        _type_get_elem_typename(_GET_DEQUE_TYPE_NAME(pdeq_deque), s_elemtypename);

        for(it_iter = it_begin; !iterator_equal(it_iter, it_end); it_iter = iterator_next(it_iter))
        {
            _GET_DEQUE_TYPE_INIT_FUNCTION(pdeq_deque)(_deque_iterator_get_pointer_auxiliary(it_iter), s_elemtypename);
        }
    }
    else
    {
        for(it_iter = it_begin; !iterator_equal(it_iter, it_end); it_iter = iterator_next(it_iter))
        {
            bool_t t_result = _GET_DEQUE_TYPE_SIZE(pdeq_deque);
            _GET_DEQUE_TYPE_INIT_FUNCTION(pdeq_deque)(_deque_iterator_get_pointer_auxiliary(it_iter), &t_result);
            assert(t_result);
        }
    }
}
Beispiel #2
0
/**
 * Test the type that saved in the deque container is same.
 */
bool_t _deque_same_type(const deque_t* cpdeq_first, const deque_t* cpdeq_second)
{
    assert(cpdeq_first != NULL);
    assert(cpdeq_second != NULL);
    assert(_deque_is_inited(cpdeq_first) || _deque_is_created(cpdeq_first));
    assert(_deque_is_inited(cpdeq_second) || _deque_is_created(cpdeq_second));

    if(cpdeq_first == cpdeq_second)
    {
        return true;
    }

    return (cpdeq_first->_t_typeinfo._pt_type == cpdeq_second->_t_typeinfo._pt_type) &&
           (cpdeq_first->_t_typeinfo._t_style == cpdeq_second->_t_typeinfo._t_style) &&
           _type_is_same(_GET_DEQUE_TYPE_NAME(cpdeq_first), _GET_DEQUE_TYPE_NAME(cpdeq_second));
}
Beispiel #3
0
/**
 * Obtain data from variable argument list, the data type and deque element data type are same.
 */
void _deque_get_varg_value_auxiliary(deque_t* pdeq_deque, va_list val_elemlist, void* pv_varg)
{
    assert(pdeq_deque != NULL);
    assert(_deque_is_inited(pdeq_deque) || _deque_is_created(pdeq_deque));

    _deque_init_elem_auxiliary(pdeq_deque, pv_varg);
    _type_get_varg_value(&pdeq_deque->_t_typeinfo, val_elemlist, pv_varg);
}
Beispiel #4
0
void test__create_deque__libcstl_builtin_type(void** state)
{
    deque_t* pdeq = _create_deque("vector_t         <      int>     ");
    assert_true(pdeq != NULL);
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "vector_t<int>") == 0);
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #5
0
void test__create_deque__c_builtin_type(void** state)
{
    deque_t* pdeq = _create_deque("unsigned int");
    assert_true(pdeq != NULL);
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "unsigned int") == 0);
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #6
0
void test__create_deque_auxiliary__libcstl_builtin(void** state)
{
    deque_t* pdeq = malloc(sizeof(deque_t));
    assert_true(_create_deque_auxiliary(pdeq, "deque_t<   vector_t     <     string_t>>       "));
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "deque_t<vector_t<string_t>>") == 0);
    assert_true(_alloc_is_inited(&pdeq->_t_allocator));
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #7
0
void test__create_deque__user_defined_type_dup(void** state)
{
    deque_t* pdeq = NULL;

    type_duplicate(struct _tag_test__create_deque__user_defined_type, _test__create_deque__user_defined_type_t);
    pdeq = _create_deque("_test__create_deque__user_defined_type_t");
    assert_true(pdeq != NULL);
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "_test__create_deque__user_defined_type_t") == 0);
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #8
0
void test__create_deque__user_defined_type(void** state)
{
    deque_t* pdeq = NULL;

    type_register(struct _tag_test__create_deque__user_defined_type, NULL, NULL, NULL, NULL);
    pdeq = _create_deque("struct      _tag_test__create_deque__user_defined_type");
    assert_true(pdeq != NULL);
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "struct _tag_test__create_deque__user_defined_type") == 0);
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #9
0
void test__create_deque_auxiliary__user_defined_dup(void** state)
{
    deque_t* pdeq = NULL;
    type_duplicate(struct _tag_test__create_deque_auxiliary__user_defined, _test__create_deque_auxiliary__user_defined_t);
    pdeq = malloc(sizeof(deque_t));
    assert_true(_create_deque_auxiliary(pdeq, "_test__create_deque_auxiliary__user_defined_t"));
    assert_true(strcmp(_GET_DEQUE_TYPE_NAME(pdeq), "_test__create_deque_auxiliary__user_defined_t") == 0);
    assert_true(_alloc_is_inited(&pdeq->_t_allocator));
    assert_true(_deque_is_created(pdeq));

    deque_destroy(pdeq);
}
Beispiel #10
0
/**
 * Destroy data, the data type and deque element data type are same.
 */
void _deque_destroy_varg_value_auxiliary(deque_t* pdeq_deque, void* pv_varg)
{
    bool_t b_result = false;

    assert(pdeq_deque != NULL);
    assert(_deque_is_inited(pdeq_deque) || _deque_is_created(pdeq_deque));

    /* destroy varg value and free memory */
    b_result = _GET_DEQUE_TYPE_SIZE(pdeq_deque);
    _GET_DEQUE_TYPE_DESTROY_FUNCTION(pdeq_deque)(pv_varg, &b_result);
    assert(b_result);
}