Exemple #1
0
static void __map_remove(Map *map, void *key){
	Iterator target, map_end;
	target = c_map_find(&map->values, key);
	map_end = c_map_end(&map->values);
	if(!ITER_EQUAL(map_end, target))
	{
		c_map_erase(&map->values, target);
	}
}
Exemple #2
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;	
}
Exemple #3
0
static int test_erase(c_pmap thiz)
{
	c_iterator iter = c_map_begin(thiz);
	c_iterator end = c_map_end(thiz);
	assert(__c_rb_tree_verify(thiz->_l));
	//c_map_erase(thiz, end);  // erasing end results in error
	assert(__c_rb_tree_verify(thiz->_l));
	while(!ITER_EQUAL(iter, end))
	{
		c_iterator to_erase = iter;
		assert_valid_iter(thiz, to_erase);
		c_map_erase(thiz, to_erase);
		assert(__c_rb_tree_verify(thiz->_l));
		
		iter = c_map_begin(thiz);
		end = c_map_end(thiz);
	}
	assert(__c_rb_tree_verify(thiz->_l));
	assert(c_map_empty(thiz));
	return 0;
}