home *** CD-ROM | disk | FTP | other *** search
/ cs.rhul.ac.uk / www.cs.rhul.ac.uk.zip / www.cs.rhul.ac.uk / pub / rdp / rdp_cs3470.tar / rdp_supp / set.h < prev    next >
C/C++ Source or Header  |  1998-05-07  |  2KB  |  67 lines

  1. /*******************************************************************************
  2. *
  3. * RDP release 1.50 by Adrian Johnstone (A.Johnstone@rhbnc.ac.uk) 20 December 1997
  4. *
  5. * set.h - dynamically resizable set handling
  6. *
  7. * This file may be freely distributed. Please mail improvements to the author.
  8. *
  9. *******************************************************************************/
  10. #ifndef SET_H
  11. #define SET_H
  12.  
  13. #include <limits.h>
  14. #include <stddef.h>
  15.  
  16. typedef struct
  17. {
  18.   unsigned length; 
  19.   unsigned char * elements; 
  20. }set_; 
  21.  
  22. #define SET_NULL {0, NULL}     /* a null set */
  23. #define SET_END UINT_MAX       /* an impossible set value */
  24.  
  25. unsigned * set_array(const set_ * src); 
  26.  
  27. unsigned set_cardinality(const set_ * src); 
  28.  
  29. void set_assign_element(set_ * dst, const unsigned element); 
  30. void set_assign_list(set_ * dst, ...); 
  31. void set_assign_set(set_ * dst, const set_ * src); 
  32.  
  33. int set_compare(set_ * dst, set_ * src); 
  34.  
  35. void set_difference_element(set_ * dst, const unsigned element); 
  36. void set_difference_list(set_ * dst, ...); 
  37. void set_difference_set(const set_ * dst, const set_ * src); 
  38.  
  39. void set_free(set_ * dst); 
  40.  
  41. void set_grow(set_ * dst, const unsigned length); 
  42.  
  43. int set_includes_element(set_ * dst, const unsigned element); 
  44. int set_includes_list(set_ * dst, ...); 
  45. int set_includes_set(const set_ * dst, const set_ * src); 
  46.  
  47. void set_intersect_element(set_ * dst, const unsigned element); 
  48. void set_intersect_list(set_ * dst, ...); 
  49. void set_intersect_set(set_ * dst, const set_ * src); 
  50.  
  51. void set_invert(set_ * dst, const unsigned universe); 
  52.  
  53. unsigned set_minimum_size(const unsigned minimum_size); 
  54.  
  55. void set_normalise(set_ * dst); 
  56.  
  57. void set_print_element(const unsigned element, const char * element_names); 
  58. void set_print_set(const set_ * src, const char * element_names, unsigned line_length); 
  59.  
  60. void set_unite_element(set_ * dst, const unsigned element); 
  61. void set_unite_list(set_ * dst, ...); 
  62. void set_unite_set(set_ * dst, const set_ * src); 
  63.  
  64. #endif
  65.  
  66. /* End of set.h */
  67.