static void print_vector2(c_iterator first, c_iterator last) { c_iterator iter; printf("vector is :\n"); for(iter = first; !ITER_EQUAL(iter, last); ITER_INC(iter)) { if(ITER_REF(iter)) printf("\t%d\n", *((int *)(ITER_REF(iter)))); } }
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_equal(c_vector * p) { c_iterator iter; int * old; c_vector vt; __c_vector(&vt, int_comparer); print_vector(&vt); print_vector(p); printf(c_vector_equal(&vt, p) ? "IS equal\n" : "NOT equal\n"); create_with_push_back(&vt); print_vector(&vt); print_vector(p); printf(c_vector_equal(&vt, p) ? "IS equal\n" : "NOT equal\n"); iter = c_vector_begin(&vt); old = (int*)ITER_REF(iter); ITER_REF_ASSIGN(iter, &array[5]); print_vector(&vt); print_vector(p); printf(c_vector_equal(&vt, p) ? "IS equal\n" : "NOT equal\n"); ITER_REF_ASSIGN(iter, old); c_vector_clear(&vt); c_vector_clear(p); print_vector(&vt); print_vector(p); printf(c_vector_equal(&vt, p) ? "IS equal\n" : "NOT equal\n"); __c_rotcev(&vt); }
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 int test_reverse_find_erase(c_pmap thiz) { int j = 0; for(j = sizeof(keys) / sizeof(int) - 1; j >= 0; -- j) { c_iterator target, map_end; printf("j = %d\n", j); target = c_map_find(thiz, &keys[j]); // set same as map map_end = c_map_end(thiz); if(!ITER_EQUAL(map_end, target)) { printf("to erase : %d\n", *(int*)(((c_ppair)ITER_REF(target))->first)); assert_valid_iter(thiz, target); c_map_erase(thiz, target); assert(__c_rb_tree_verify(thiz->_l)); } } return 0; }
static void* __map_next(Iterator *iter){ c_ppair result = (c_ppair)ITER_REF(*iter); ITER_INC(*iter); return result->first; }