BREAKING CHANGES since 1.2: size is now stored along with the bitvector. Some functions have a new signature.
The size of the bitvector used to be rounded up to the multiple of 30 or 62. In other words some functions such as iter would iterate on more bits than what was originally asked for. This is not the case anymore.
val length : t ‑> int
Size of underlying bitvector. This is not related to the underlying implementation. Changed at 1.2
val resize : t ‑> int ‑> unit
Resize the BV so that it has the specified length. This can grow or shrink the underlying bitvector.
val to_sorted_list : t ‑> int list
Same as to_list, but also guarantees the list is sorted in increasing order.
val of_list : int list ‑> t
From a list of true bits.
The bits are interpreted as indices into the returned bitvector, so the final
bitvector will have length t
equal to 1 more than max of list indices.
val filter : t ‑> (int ‑> bool) ‑> unit
filter bv p
only keeps the true bits of bv
whose index
satisfies p index
.
union_into ~into bv
sets into
to the union of itself and bv
.
Also updates the length of into
to be at least length bv
.
inter_into ~into bv
sets into
to the intersection of itself and bv
.
Also updates the length of into
to be at most length bv
.
val select : t ‑> 'a array ‑> 'a list
select arr bv
selects the elements of arr
whose index
corresponds to a true bit in bv
. If bv
is too short, elements of arr
with too high an index cannot be selected and are therefore not
selected.