home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol181 / ctype.hq / CTYPE.H
Encoding:
C/C++ Source or Header  |  1985-02-10  |  1.6 KB  |  52 lines

  1.  
  2. /****************************************************************************/
  3. /*                                        */
  4. /*                CTYPE                        */
  5. /*                -----                        */
  6. /*                                        */
  7. /*   CTYPE.H  -  macros to classify ASCII-coded integers by table lookup.   */
  8. /*                                        */
  9. /*                                        */
  10. /*    Note:    Integer args are undefined for all int values > 127,        */
  11. /*        except for macro 'isascii()'.                    */
  12. /*    Assumes:                                */
  13. /*        User will link with standard library functions.            */
  14. /*        Compiler can handle declarator initializers and            */
  15. /*        '#defines' with parameters.                    */
  16. /*                                        */
  17. /****************************************************************************/
  18.  
  19. /*
  20.  *    Bit patterns for character class DEFINEs
  21.  */
  22. #define    __c    01
  23. #define    __p    02
  24. #define    __d    04
  25. #define    __u    010
  26. #define    __l    020
  27. #define    __s    040
  28. #define    __cs    041
  29. #define    __ps    042
  30.  
  31. #ifndef    CTYPE
  32. extern    char    __atab[];
  33. #endif
  34.  
  35. /*
  36.  *    Character Class Testing and Conversion DEFINEs:
  37.  */
  38. #define    isascii(ch) ((ch) < 0200)
  39. #define    isalpha(ch) (__atab[ch] & (__u | __l))
  40. #define    isupper(ch) (__atab[ch] & __u)
  41. #define    islower(ch) (__atab[ch] & __l)
  42. #define    isdigit(ch) (__atab[ch] & __d)
  43. #define    isalnum(ch) (__atab[ch] & (__u | __l | __d))
  44. #define    isspace(ch) (__atab[ch] & __s)
  45. #define    ispunct(ch) (__atab[ch] & __p)
  46. #define    isprint(ch) (__atab[ch] & (__u | __l | __d | __p))
  47. #define    iscntrl(ch) (__atab[ch] & __c)
  48.  
  49. #define    tolower(ch) (isupper(ch) ? (ch)+('a'-'A') : (ch))
  50. #define    toupper(ch) (islower(ch) ? (ch)+('A'-'a') : (ch))
  51. #define    toascii(ch) ((ch) & 0177)
  52.