shithub: sl

ref: a70379d7e4b822f532fb0a8ccdd1624a90b64a68
dir: /src/bitvector.h/

View raw version
u32int *bitvector_resize(u32int *b, u64int oldsz, u64int newsz, bool zero);

#define bitvector_new(n, initzero) bitvector_resize(nil, 0, (n), (initzero))
#define bitvector_nwords(nbits) (((u64int)(nbits)+31)>>5)
#define bitvector_get(b, n) (b[(n)>>5] & (1U<<((n)&31)))
#define bitvector_set(b, n) do{ \
		b[(n)>>5] |= 1U<<((n)&31); \
	}while(0)
#define bitvector_reset(b, n) do{ \
		b[(n)>>5] &= ~(1U<<((n)&31)); \
	}while(0)