cset.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // -*- C++ -*-
  2. // Declarations etc. related to the cset class, defined in libgroff/cset.cc.
  3. #ifdef HAVE_LIMITS_H
  4. #include <limits.h>
  5. #else /* not HAVE_LIMITS_H */
  6. #ifndef UCHAR_MAX
  7. #define UCHAR_MAX 255
  8. #endif
  9. #endif /* not HAVE_LIMITS_H */
  10. enum cset_builtin { CSET_BUILTIN };
  11. class cset
  12. {
  13. public:
  14. // ctors
  15. cset();
  16. cset(cset_builtin);
  17. cset(const char *);
  18. cset(const unsigned char *);
  19. int operator()(unsigned char) const;
  20. cset &operator|=(const cset &);
  21. cset &operator|=(unsigned char);
  22. friend class cset_init;
  23. private:
  24. char v[UCHAR_MAX+1];
  25. void clear();
  26. };
  27. inline int
  28. cset::operator()(unsigned char c) const
  29. {
  30. return v[c];
  31. }
  32. inline cset &
  33. cset::operator|=(unsigned char c)
  34. {
  35. v[c] = 1;
  36. return *this;
  37. }
  38. extern cset csalpha;
  39. extern cset csupper;
  40. extern cset cslower;
  41. extern cset csdigit;
  42. extern cset csxdigit;
  43. extern cset csspace;
  44. extern cset cspunct;
  45. extern cset csalnum;
  46. extern cset csprint;
  47. extern cset csgraph;
  48. extern cset cscntrl;
  49. static class cset_init
  50. {
  51. public:
  52. cset_init();
  53. private:
  54. static int initialised;
  55. } _cset_init;