Ejemplo n.º 1
0
Archivo: intset.c Proyecto: berkus/moto
int iset_comp(void* p1, void* p2) {
    IntSet* is1 = (IntSet*)p1;
    IntSet* is2 = (IntSet*)p2;
    int i;

    if (iset_size(is1) != iset_size(is2))
        return -1;

    for (i = 0; i < is1->cap; i++) {
        ISBucket *b = &is1->buckets[i];
        ISBucketNode *curnode = b->elements;
        while(curnode != NULL) {
            if (!iset_contains(is2,curnode->key))
                return -1;
            curnode = curnode->next;
        }
    }

    return 0;
}
Ejemplo n.º 2
0
static void set_bench_modify_randomly() {
	int i;

	log_printline("[number of modify: %d]", __num_modify);
	dbg_assert(iset_empty(__set));

	for (i = 0; i < __num_modify; i ++) {
		intptr_t x = rand() % __data_diff_type;
		bool found = iset_contains(__set, s_test_data_addr[x]);
		
		if (found == false) {
			iset_insert(__set, s_test_data_addr[x]);
			data_count[x] ++;
		} else {
			iset_remove(__set, s_test_data_addr[x]);
			data_count[x] --;
		}
	}

	iset_clear(__set);
}
Ejemplo n.º 3
0
Archivo: tnfa.c Proyecto: berkus/moto
int tnfa_priority(TNFA* tnfa, TagValueFunction* tvf_a, TagValueFunction* tvf_b){
	int x,tva_x=-1,tvb_x=-1;
	char minimize_tx;
	
   for(x=0;x<tnfa->tagcount;x++) {
   	tva_x = tvf_getTagValue(tvf_a,x);
   	tvb_x = tvf_getTagValue(tvf_b,x);
   	if(tva_x != tvb_x) break;
   }
  
   if(x == tnfa->tagcount)
   	return 0; /* TagValueFunction a is equivalent to b */
   	
   minimize_tx = iset_contains(tnfa->minimized,x);
      
	if ((minimize_tx && tva_x < tvb_x ) || (!minimize_tx && tva_x > tvb_x )){
		return 1; /* TagValueFunction a beats b */
	} else {
		return -1; /* TagValueFunction b beats a */
	}
   
}
Ejemplo n.º 4
0
static void set_bench_search_randomly() {
	int i;
	dbg_assert(iset_empty(__set));

	log_printline("[number of search: %d]", __num_search);

	for (i = 0; i < __data_diff_type; i ++) {
		/* insert all data one by one */
		iset_insert(__set, s_test_data_addr[i]);
	}
	/* now the set contains __data_diff_type * 2 of data, each elememt int [0, __data_diff_type)
	 * appears at least once */

	for (i = 0; i < __num_search; i ++) {
		intptr_t x = rand() % __data_diff_type;

		bool res = iset_contains(__set, s_test_data_addr[x]);
		dbg_assert(res == true);
	}

	iset_clear(__set);
}
Ejemplo n.º 5
0
static void set_test_basic_operation(_object* set, struct test_data_desc* td_desc) {
	address *test_data_addr   = td_desc->data_repo;
	//unknown_traits *td_traits = td_desc->data_traits;

	iset_clear(set);
	dbg_assert(iset_empty(set));

	{
		iset_insert(set, test_data_addr[4]);
		iset_insert(set, test_data_addr[5]);
		iset_insert(set, test_data_addr[3]);
		iset_insert(set, test_data_addr[6]);
		iset_insert(set, test_data_addr[2]);
		iset_insert(set, test_data_addr[7]);
		iset_insert(set, test_data_addr[1]);
		iset_insert(set, test_data_addr[8]);
	}
	/* now the set contains { 1, 2, 3, 4, 5, 6, 7, 8 } */
	dbg_assert(iset_size(set) == 8);
	{
		intptr_t current = 1;

		for (; current <= 8; current ++) {
			dbg_assert(iset_contains(set, test_data_addr[current]));
		}
		dbg_assert(iset_contains(set, test_data_addr[0]) == false);
		dbg_assert(iset_contains(set, test_data_addr[9]) == false);
	}

	/* test remove, delete the even ones */
	dbg_assert(iset_size(set) == 8);
	{
		/* now the set contains { 1, 2, 3, 4, 5, 6, 7, 8 } */
		intptr_t x;
		bool res;

		for (x = 2; x <= 8; x +=2) {
			res = iset_remove(set, test_data_addr[x]);
			dbg_assert(res == 1);
		}

		dbg_assert(iset_size(set) == 4);
		for (x = 1; x <= 8; x ++) {
			bool exist = x % 2 ? true : false;
			dbg_assert(iset_contains(set, test_data_addr[x]) == exist);
		}

		dbg_assert(iset_contains(set, test_data_addr[0]) == false);
	}

	dbg_assert(iset_size(set) == 4);
	{
		bool bool_res = false;

		/* remove elements one by one */

		bool_res = iset_remove(set, test_data_addr[3]);
		/* now the set is { 1,  5, 7 } */
		dbg_assert(bool_res == true);
		dbg_assert(iset_size(set) == 3);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[3]) == false);

		/* try to remove another 3, should failed */

		bool_res = iset_remove(set, test_data_addr[3]);
		/* now the set is { 1,  5, 7 } */
		dbg_assert(bool_res == false);
		dbg_assert(iset_size(set) == 3);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[3]) == false);


		bool_res = iset_remove(set, test_data_addr[5]);
		/* now the set is { 1,   7 } */
		dbg_assert(bool_res == true);
		dbg_assert(iset_size(set) == 2);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[5]) == false);
		

		bool_res = iset_remove(set, test_data_addr[1]);
		/* now the set is { 7 } */
		dbg_assert(bool_res == true);
		dbg_assert(iset_size(set) == 1);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[1]) == false);
		dbg_assert(iset_contains(set, test_data_addr[7]) == true);


		bool_res = iset_remove(set, test_data_addr[7]);
		/* now the set is { } */
		dbg_assert(bool_res == true);
		dbg_assert(iset_size(set) == 0);
		dbg_assert(iset_empty(set) == true);
		dbg_assert(iset_contains(set, test_data_addr[7]) == false);

		/* try to remove element from empty set */

		bool_res = iset_remove(set, test_data_addr[7]);
		/* now the set is { } */
		dbg_assert(bool_res == false);
		dbg_assert(iset_size(set) == 0);
		dbg_assert(iset_empty(set) == true);
		dbg_assert(iset_contains(set, test_data_addr[7]) == false);

		/* trying to add element into the set after removing from empty set */
		iset_insert(set, test_data_addr[2]);
		/* now the set is { 2 } */
		dbg_assert(iset_size(set) == 1);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[2]) == true);
		dbg_assert(iset_contains(set, test_data_addr[0]) == false);

		iset_insert(set, test_data_addr[3]);
		/* now the set is { 2, 3 } */
		dbg_assert(iset_size(set) == 2);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[2]) == true);
		dbg_assert(iset_contains(set, test_data_addr[3]) == true);

		iset_clear(set);
	}

	dbg_assert(iset_empty(set) == true);
	{
		/* try to add same element to the set */

		iset_insert(set, test_data_addr[1]);
		/* now the set is { 1 } */
		dbg_assert(iset_size(set) == 1);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[1]) == true);
		dbg_assert(iset_contains(set, test_data_addr[0]) == false);

		/* insert 1 again */

		iset_insert(set, test_data_addr[1]);
		/* now the set is { 1 } */
		dbg_assert(iset_size(set) == 1);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[1]) == true);
		dbg_assert(iset_contains(set, test_data_addr[0]) == false);

		/* insert 1 again and again */

		iset_insert(set, test_data_addr[1]);
		/* now the set is { 1 } */
		dbg_assert(iset_size(set) == 1);
		dbg_assert(iset_empty(set) == false);
		dbg_assert(iset_contains(set, test_data_addr[1]) == true);
		dbg_assert(iset_contains(set, test_data_addr[0]) == false);
	}

	/* test clear */
	{
		iset_clear(set);
		/* now the set is empty */
		dbg_assert(iset_empty(set));
		
		/* clear an empty set */
		iset_clear(set);
		dbg_assert(iset_empty(set));

		iset_insert(set, test_data_addr[1]);
		iset_insert(set, test_data_addr[1]);
		iset_insert(set, test_data_addr[1]);
		iset_insert(set, test_data_addr[1]);

		/* now the set is { 1 } */
		iset_clear(set);
		dbg_assert(iset_empty(set));
	}
}