The macro
bit_alloc
returns a pointer of type
"bitstr_t *"
to sufficient space to store
nbits
bits, or
NULL
if no space is available.

The macro
bit_decl
allocates sufficient space to store
nbits
bits on the stack.

The macro
bitstr_size
returns the number of elements of type
bitstr_t
necessary to store
nbits
bits.
This is useful for copying bit strings.

The macros
bit_clear
and
bit_set
clear or set the zero-based numbered bit
bit,
in the bit string
name.

The
bit_nset
and
bit_nclear
macros
set or clear the zero-based numbered bits from
start
through
stop
in the bit string
name.

The
bit_test
macro
evaluates to non-zero if the zero-based numbered bit
bit
of bit string
name
is set, and zero otherwise.

The
bit_ffs
macro
stores in the location referenced by
value
the zero-based number of the first bit set in the array of
nbits
bits referenced by
name.
If no bits are set, the location referenced by
value
is set to -1.

The macro
bit_ffc
stores in the location referenced by
value
the zero-based number of the first bit not set in the array of
nbits
bits referenced by
name.
If all bits are set, the location referenced by
value
is set to -1.

The arguments to these macros are evaluated only once and may safely
have side effects.