Table of Contents

NAME

SYNOPSIS

DESCRIPTION

These macros operate on strings of bits. The macro returns a pointer of type to sufficient space to store bits, or if no space is available. The macro allocates sufficient space to store bits on the stack. The macro returns the number of elements of type necessary to store bits. This is useful for copying bit strings. The macros and clear or set the zero-based numbered bit in the bit string The and macros set or clear the zero-based numbered bits from to in the bit string The macro evaluates to non-zero if the zero-based numbered bit of bit string is set, and zero otherwise. The macro stores in the location referenced by the zero-based number of the first bit set in the array of bits referenced by If no bits are set, the location referenced by is set to -1. The macro stores in the location referenced by the zero-based number of the first bit not set in the array of bits referenced by If all bits are set, the location referenced by is set to -1. The arguments to these macros are evaluated only once and may safely have side effects.

EXAMPLE

#include <limits.h> #include <bitstring.h>

#define    LPR_BUSY_BIT        0 #define    LPR_FORMAT_BIT        1 #define    LPR_DOWNLOAD_BIT    2 #define    LPR_AVAILABLE_BIT    9 #define    LPR_MAX_BITS        10

make_lpr_available() {    bitstr_t bit_decl(bitlist, LPR_MAX_BITS);
   ...
   bit_nclear(bitlist, 0, LPR_MAX_BITS - 1);
   ...
   if (!bit_test(bitlist, LPR_BUSY_BIT)) {
       bit_clear(bitlist, LPR_FORMAT_BIT);
       bit_clear(bitlist, LPR_DOWNLOAD_BIT);
       bit_set(bitlist, LPR_AVAILABLE_BIT);
   }
}

SEE ALSO

HISTORY

The functions first appeared in 4.4BSD.


Table of Contents