< ^ >
Bitvector
 
Bitvector is in principle array of bools. However more space-efficient implementation is provided then <bool>Array::t. Additionally standard bit-operations are available.
 
type t;
  Type of bitvectors.
 
t make(int size, bool ini);
  Return fresh bitvector, of size elements (bits), will set all of them to ini.
 
t init(int size, *(bool (int)) f);
  Return fresh bitvector, of size elements (bits). Elements are initialized by calling f(0), f(1), ..., f(size-1) and storing return values.
 
bool get(t b, int i);
  Return value of element number i of bitvector b. Raise Invalid_argument if i is outside allowed range 0 -- Bitvector::length(b) - 1.
 
void set(t b, int i, bool v);
  Set element number i of bitvector b to v. Raise Invalid_argument if i is outside allowed range 0 -- Bitvector::length(b) - 1.
 
int length(t b);
  Return number of elements (bits) in bitvector b.
 
void resize(t b, int new_size, bool ini);
  Resize b to be new_size bit long. If bitvector grows, new elements are all initialized to ini.
 
t copy(t src);
  Return fresh bitvector, initialized to contents of bitvector src.
 
void or(t dst, t src);
  Perform logical OR on bits of dst and src. Result is stored in dst. If dst is smaller then src, it is zero-padded. If src is smaller then dst it is virtually zero-padded (it is not changed, but operation is performed as if it was grown with zeros).
 
void and(t dst, t src);
  Same as Bitvector::or, but performs logical AND.
 
void xor(t dst, t src);
  Same as Bitvector::or, but performs logical XOR.