bool opal_bitmap_are_different(opal_bitmap_t *left, opal_bitmap_t *right) { int i; /* * Sanity check */ if( NULL == left || NULL == right ) { return OPAL_ERR_BAD_PARAM; } if( opal_bitmap_size(left) != opal_bitmap_size(right) ) { return true; } /* * Direct comparison */ for(i = 0; i < left->array_size; ++i) { if( left->bitmap[i] != right->bitmap[i] ) { return true; } } return false; }
void test_bitmap_find_and_set(opal_bitmap_t *bm) { int bsize; int result=0; opal_bitmap_clear_all_bits(bm); result = find_and_set(bm, 0); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); result = find_and_set(bm, 1); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); result = find_and_set(bm, 2); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); result = find_and_set(bm, 3); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); result = opal_bitmap_set_bit(bm, 5); result = find_and_set(bm, 4); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); result = opal_bitmap_set_bit(bm, 6); result = opal_bitmap_set_bit(bm, 7); /* Setting beyond a char boundary */ result = find_and_set(bm, 8); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); opal_bitmap_set_bit(bm, 9); result = find_and_set(bm, 10); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); /* Setting beyond the current size of bitmap */ opal_bitmap_set_all_bits(bm); bsize = opal_bitmap_size(bm); result = find_and_set(bm, bsize); TEST_AND_REPORT(result, 0, "opal_bitmap_find_and_set_first_unset_bit"); }