home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / unix / dgrep.arc / SET.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-14  |  1.8 KB  |  68 lines

  1. /**********************************************************************\
  2.  *
  3.  *    SET.H
  4.  *
  5.  * Interfaces to set routines and macro definitions.
  6.  *
  7.  * Author: Jarmo Ruuth 15-Mar-1988
  8.  *
  9.  * Copyright (C) 1988-90 by Jarmo Ruuth
  10.  * May be freely copied for any non-commercial usage.
  11. \**********************************************************************/
  12.  
  13. typedef unsigned    set_t;
  14.  
  15. #define SETBITS        (sizeof(set_t) * CHARBITS)
  16.  
  17. /**********************************************************************
  18.  *
  19.  *    set_bytesize
  20.  *
  21.  * Returns number of bytes needed for given number of bits.
  22.  */
  23. #define set_bytesize(bitsize) \
  24.     (((unsigned)(bitsize) / SETBITS + 1) * sizeof(set_t))
  25.  
  26. /**********************************************************************
  27.  *
  28.  *    in_set
  29.  */
  30. #define in_set(set, pos) \
  31.     (((set)[(unsigned)(pos)/SETBITS])&(1<<((unsigned)(pos)%SETBITS)))
  32.  
  33. /**********************************************************************
  34.  *
  35.  *    add_set
  36.  */
  37. #define add_set(set, pos) \
  38.     (((set)[(unsigned)(pos)/SETBITS])|=(1<<((unsigned)(pos)%SETBITS)))
  39.  
  40. /**********************************************************************
  41.  *
  42.  *    set_equal
  43.  */
  44. #define set_equal(set1, set2, setsize) (memcmp(set1, set2, setsize) == 0)
  45.  
  46. /**********************************************************************
  47.  *
  48.  *    set_copy
  49.  *
  50.  * Copies set to another.
  51.  */
  52. #define set_copy(dest, src, setsize) memcpy(dest, src, setsize)
  53.  
  54. /**********************************************************************
  55.  *
  56.  *    set_clear
  57.  *
  58.  * Clears set.
  59.  */
  60. #ifdef BSD
  61. #define set_clear(set, setsize) bzero(set, setsize)
  62. #else
  63. #define set_clear(set, setsize) memset(set, 0, setsize)
  64. #endif
  65.  
  66. extern bool set_empty(set_t* set, int setsize);
  67. extern void set_union(set_t* result, set_t* set1, set_t* set2, int setsize);
  68.