Seth Woolley's Man Viewer

bitstring(3) - bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, bit_set, bit_test, bitstr_size, bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, bit_set, bit_test, bitstr_size - bit-string manipulation macros - man 3 bitstring

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

BITSTRING(3)                                                      BITSTRING(3)



NAME
       bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, bit_set,
       bitstr_size, bit_test - bit-string manipulation macros

SYNOPSIS
       #include <bitstring.h>

       name = bit_alloc(nbits)
       bitstr_t *name;
       int nbits;

       bit_decl(name, nbits)
       bitstr_t name;
       int nbits;

       bit_clear(name, bit)
       bitstr_t name;
       int bit;

       bit_ffc(name, nbits, value)
       bitstr_t name;
       int nbits, *value;

       bit_ffs(name, nbits, value)
       bitstr_t name;
       int nbits, *value;

       bit_nclear(name, start, stop)
       bitstr_t name;
       int start, stop;

       bit_nset(name, start, stop)
       bitstr_t name;
       int start, stop;

       bit_set(name, bit)
       bitstr_t name;
       int bit;

       bitstr_size(nbits)
       int nbits;

       bit_test(name, bit)
       bitstr_t name;
       int bit;

DESCRIPTION
       These macros operate on strings of bits.

       Bit_alloc returns a pointer of type bitstr_t * to sufficient  space  to
       store nbits bits, or NULL if(3,n) no space is available.

       Bit_decl is a macro for allocating sufficient space to store nbits bits
       on the stack.

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

       Bit_clear  and bit_set clear(1,3x,3x clrtobot) or set(7,n,1 builtins) the zero-based numbered bit bit, in(1,8)
       the bit string(3,n) name.

       Bit_nset and bit_nclear set(7,n,1 builtins) or clear(1,3x,3x clrtobot) the zero-based numbered bits  from
       start to stop in(1,8) the bit string(3,n) name.

       Bit_test  evaluates  to  zero if(3,n) the zero-based numbered bit bit of bit
       string(3,n) name is set(7,n,1 builtins), and non-zero otherwise.

       Bit_ffs sets *value to the zero-based number of the first  bit  set(7,n,1 builtins)  in(1,8)
       the array of nbits bits referenced by name.  If no bits are set(7,n,1 builtins), *value
       is set(7,n,1 builtins) to -1.

       Bit_ffc sets *value to the zero-based number of the first bit  not  set(7,n,1 builtins)
       in(1,8)  the  array  of nbits bits referenced by name.  If all bits are set(7,n,1 builtins),
       value is set(7,n,1 builtins) to -1.

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(3,n) (!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
       malloc(3)



4th Berkeley Distribution      December 13, 1989                  BITSTRING(3)

References for this manual (incoming links)