Beispiel #1
0
 BitVector *BitVector_Create(int size,                      
		  void * (* allocator_func)(size_t),
		  void (*free_func)(void *),
		  BitVector_Flags flags){
  BitVector *ret = NULL;
  int init_val;
  //initialize bits to either 0 or 1
  if(flags & BV_INIT_FILL){
    init_val = SCHAR_MAX;
  }else{
    init_val = 0;
  }
  if (allocator_func) {
    ret= allocator_func(sizeof(BitVector));
    assert(ret!= NULL);
  }
  else {
    ret= malloc(sizeof(BitVector));
    assert(ret!= NULL);
  }
  memset(ret, 0, sizeof(BitVector));
  ret->size = size;
  ret->numBytes = ceil(size/ (double)CHAR_BIT );
  ret->allocator_func = (allocator_func ? allocator_func : malloc);
  ret->deallocator_func = (free_func ? free_func : free);
  ret->bits = (char*) ret->allocator_func(ret->numBytes);
  //initialize bits to either 0 or 1
  memset(ret->bits,
	 init_val,
	 ret->numBytes);
  return ret;
}