Пример #1
0
static int print_queue(c_pqueue ps)
{
	c_vector tmpvt;
	__c_vector(&tmpvt, int_comparer);

	printf("queue is : \n");
	while(!c_queue_empty(ps))
	{
		int * tmp = c_queue_front(ps);
		printf("front is : %d, size is : %d, back is : %d\n", 
				*tmp, 
				c_queue_size(ps),
				*(int *)c_queue_back(ps));
		c_queue_pop(ps);
		c_vector_push_back(&tmpvt, tmp);
	}

	// recover queue
	do
	{
		c_iterator iter = c_vector_begin(&tmpvt);
		c_iterator end = c_vector_end(&tmpvt);
		for(; !ITER_EQUAL(iter, end); ITER_INC(iter))
		{
			c_queue_push(ps, ITER_REF(iter));
		}
	} while(0);	

	__c_rotcev(&tmpvt);
	return 0;
}
Пример #2
0
static void _A_insert_aux1(c_pvector thiz, c_iterator pos, node_t val)
{
	_c_vector_impl * pl = (_c_vector_impl *)thiz->_l;
	if(pl->_finish != pl->_end_of_storage)
	{
		node_t node;
		*pl->_finish = *(pl->_finish - 1);
		++ pl->_finish;
		node = val;
		c_copy_backward(pos,
				_A_get_iterator(pl->_finish - 2),
				_A_get_iterator(pl->_finish - 1));
		ITER_REF_ASSIGN(pos, node);
	}
	else
	{
		const size_type old_size = c_vector_size(thiz);
		const size_type len = old_size != 0 ? 2 * old_size : 1;
		c_iterator new_start = _A_get_iterator(_A_allocate(thiz, len));
		c_iterator new_finish = new_start;
		new_finish = c_copy(_A_get_iterator(pl->_start), pos, new_start);
		ITER_REF_ASSIGN(new_finish, val);
		ITER_INC(new_finish);
		new_finish = c_copy(pos, _A_get_iterator(pl->_finish), new_finish);
		_A_deallocate(thiz, pl->_start, abs(pl->_end_of_storage - pl->_start));
		pl->_start = (pnode_t)new_start._i;
		pl->_finish = (pnode_t)new_finish._i;
		pl->_end_of_storage = pl->_start + len;
	}
}
Пример #3
0
static void print_vector2_r(c_reverse_iterator first, c_reverse_iterator last)
{
    c_reverse_iterator iter;
    printf("vector is :\n");
    for(iter = first; 
            !ITER_EQUAL(iter, last); ITER_INC(iter))
    {
        printf("\t%d\n", *((int *)(ITER_REF(iter))));
    }
}
Пример #4
0
static void assert_valid_iter(c_pmap thiz, c_iterator val)
{
	c_iterator end = c_map_end(thiz);
	c_iterator iter = c_map_begin(thiz);
	for(; !ITER_EQUAL(iter, end); ITER_INC(iter))
	{
		if(ITER_EQUAL(iter, val))
			return;
	}
	assert(false);
}
Пример #5
0
static int print_map(c_pmap pt)
{
	c_iterator iter = c_map_begin(pt);
	c_iterator end = c_map_end(pt);
	printf("map is:\n");
	for(; !ITER_EQUAL(iter, end); ITER_INC(iter))
	{
		printf("key = %d, value = %d\n",
			*(int*)((c_ppair)ITER_REF(iter))->first,
			*(int*)((c_ppair)ITER_REF(iter))->second);
	}
	return 0;
}
Пример #6
0
static void vector_fill_insert(c_vector * p)
{
    c_iterator iter = c_vector_begin(p);
    
    c_vector_fill_insert(p, ITER_INC(iter), 10, &array[8]);
    printf("after fill insert middle\n");
    print_vector(p);    
    
    c_vector_fill_insert(p, c_vector_begin(p), 10, &array[6]);
    printf("after fill insert begin\n");
    print_vector(p);    
    
    c_vector_fill_insert(p, c_vector_end(p), 10, &array[4]);
    printf("after fill insert end\n");
    print_vector(p);
    
}
Пример #7
0
static void* __map_next(Iterator *iter){
	c_ppair result = (c_ppair)ITER_REF(*iter);
	ITER_INC(*iter);
	return result->first;
}