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; }
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; } }
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)))); } }
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); }
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; }
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); }
static void* __map_next(Iterator *iter){ c_ppair result = (c_ppair)ITER_REF(*iter); ITER_INC(*iter); return result->first; }