/******************************************************************************* wl_add Adds the integer element to the worklist, if this value is not already in the worklist. IN: worklist *w pointer to worklist created with wl_new int element integer element to be added *******************************************************************************/ void wl_add(worklist *w, int element) { _WL_CHECK_BOUNDS(element, 0, w->size); if (!bv_get_bit(w->W_bv, element)) { _BV_ASSERT((w->W_top < w->size)); w->W_stack[(w->W_top)++] = element; bv_set_bit(w->W_bv, element); } }
/************************************************************************ bv_to_string Transforms the bitvector bv to a string of 1's and 0's. IN: bitvector bv bitvector created with bv_new() int size size of bitvector bv IN/OUT: char *string allocated buffer, at least size + 1 elements RETURN:pointer to string ******************************************************************************/ char *bv_to_string(bitvector bv, char *string, int size) { int i; _BV_ASSERT(bv[0] == size); for(i = 0; i < size; i++) if (bv_get_bit(bv, i)) string[i]='1'; else string[i]='0'; string[i]=0; return string; }
static bool bit_vector_get(const bit_vector_t *bv, s4 bit) { assert(0 <= bit && bit < bv->size); return bv_get_bit(bv->bv, bit); }