tur/sized-bits
SizedBitVec: packed bit vector with static size annotations.
Since: Phase SZ3
sized-bitvec-new
(sized-bitvec-new [n])
allocate a bit vector of n bits, all zero.
| n | number of bits |
Opaque pointer to the new SizedBitVec.
(let [bv (unsafe (sized-bitvec-new 16))] ...)
Since: Phase SZ3
sized-bitvec-free
(sized-bitvec-free [bv])
free a SizedBitVec and its backing storage.
| bv | SizedBitVec pointer from sized-bitvec-new |
nil
(unsafe (sized-bitvec-free bv))
Since: Phase SZ3
sized-bitvec-len
(sized-bitvec-len [bv])
number of bits in the bit vector.
| bv | SizedBitVec pointer |
Bit count as :int.
(sized-bitvec-len bv) ; => 16
Since: Phase SZ3
sized-bitvec-size
(sized-bitvec-size [bv])
return the bit count as a Size expression.
| bv | SizedBitVec pointer |
A (Static n) where n is the bit count.
(size-eval (unsafe (sized-bitvec-size bv))) ; => bit count
Since: Phase SZ3
sized-bitvec-get
(sized-bitvec-get [bv i])
read bit i; aborts if out of range.
| bv | SizedBitVec pointer | |
| i | zero-based bit index (0 <= i < len) |
1 if bit i is set, 0 if clear.
(sized-bitvec-get bv 3) ; => 0 or 1
Since: Phase SZ3
sized-bitvec-set!
(sized-bitvec-set! [bv i])
set bit i to 1; aborts if out of range.
| bv | SizedBitVec pointer | |
| i | zero-based bit index |
The same bv pointer (for chaining).
(sized-bitvec-set! bv 3)
Since: Phase SZ3
sized-bitvec-clear!
(sized-bitvec-clear! [bv i])
clear bit i to 0; aborts if out of range.
| bv | SizedBitVec pointer | |
| i | zero-based bit index |
The same bv pointer (for chaining).
(sized-bitvec-clear! bv 3)
Since: Phase SZ3
sized-bitvec-toggle!
(sized-bitvec-toggle! [bv i])
flip bit i; aborts if out of range.
| bv | SizedBitVec pointer | |
| i | zero-based bit index |
The same bv pointer (for chaining).
(sized-bitvec-toggle! bv 3)
Since: Phase SZ3
sized-bitvec-count
(sized-bitvec-count [bv])
count the number of set bits (popcount).
| bv | SizedBitVec pointer |
Number of bits set to 1.
(sized-bitvec-count bv) ; => set bit count
Since: Phase SZ3
sized-bitvec-fill!
(sized-bitvec-fill! [bv v])
set all bits to v (0=clear, nonzero=set).
| bv | SizedBitVec pointer | |
| v | 0 to clear all bits, nonzero to set all bits |
The same bv pointer.
(sized-bitvec-fill! bv 0) ; clear all (sized-bitvec-fill! bv 1) ; set all
Since: Phase SZ3
sized-bitvec-assert-len!
(sized-bitvec-assert-len! [bv expected])
panic if the bit vector does not have the expected length.
| bv | SizedBitVec pointer | |
| expected | expected bit count as a (Size) |
nil on success; panics on mismatch.
(unsafe (sized-bitvec-assert-len! bv (Static 16)))
Since: Phase SZ3