home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Headers / ansi / ctype.h < prev    next >
C/C++ Source or Header  |  1995-01-23  |  2KB  |  82 lines

  1. /*    ctype.h    4.2    85/09/04    */
  2.  
  3. /* Copyright (c) 1988 NeXT, Inc. - 9/13/88 CCH */
  4. /* Copyright (c) 1992 NeXT Computer, Inc. - 11/14/92 WMG */
  5.  
  6. #ifndef _ANSI_CTYPE_H
  7. #define _ANSI_CTYPE_H
  8.  
  9. #if defined(__STRICT_ANSI__) || defined(_NEXT_SOURCE)
  10. #ifdef __STDC__
  11. extern int isalnum(int c);
  12. extern int isalpha(int c);
  13. extern int iscntrl(int c);
  14. extern int isdigit(int c);
  15. extern int isgraph(int c);
  16. extern int islower(int c);
  17. extern int isprint(int c);
  18. extern int ispunct(int c);
  19. extern int isspace(int c);
  20. extern int isupper(int c);
  21. extern int isxdigit(int c);
  22. extern int tolower(int c);
  23. extern int toupper(int c);
  24. #else
  25. extern int isalnum();
  26. extern int isalpha();
  27. extern int iscntrl();
  28. extern int isdigit();
  29. extern int isgraph();
  30. extern int islower();
  31. extern int isprint();
  32. extern int ispunct();
  33. extern int isspace();
  34. extern int isupper();
  35. extern int isxdigit();
  36. extern int tolower();
  37. extern int toupper();
  38. #endif /* __STDC__ */
  39. #endif /* __STRICT_ANSI__ || _NEXT_SOURCE */
  40.  
  41. #define    _U    01
  42. #define    _L    02
  43. #define    _N    04
  44. #define    _S    010
  45. #define _P    020
  46. #define _C    040
  47. #define _X    0100
  48. #define    _B    0200
  49.  
  50. extern const char _ctype_[];
  51.  
  52. #define isalnum(c)    ((int)((_ctype_+1)[c]&(_U|_L|_N)))
  53. #define    isalpha(c)    ((int)((_ctype_+1)[c]&(_U|_L)))
  54. #define iscntrl(c)    ((int)((_ctype_+1)[c]&_C))
  55. #define    isdigit(c)    ((int)((_ctype_+1)[c]&_N))
  56. #define isgraph(c)    ((int)((_ctype_+1)[c]&(_P|_U|_L|_N)))
  57. #define    islower(c)    ((int)((_ctype_+1)[c]&_L))
  58. #define isprint(c)    ((int)((_ctype_+1)[c]&(_P|_U|_L|_N|_B)))
  59. #define ispunct(c)    ((int)((_ctype_+1)[c]&_P))
  60. #define    isspace(c)    ((int)((_ctype_+1)[c]&_S))
  61. #define    isupper(c)    ((int)((_ctype_+1)[c]&_U))
  62. #define    isxdigit(c)    ((int)((_ctype_+1)[c]&(_N|_X)))
  63.  
  64. #define _tolower(c)    ((int)((c)-'A'+'a'))
  65. #define _toupper(c)    ((int)((c)-'a'+'A'))
  66.  
  67. #ifdef __STRICT_BSD__
  68. #define tolower(c)    _tolower(c)
  69. #define toupper(c)    _toupper(c)
  70. #define isascii(c)    ((unsigned)(c)<=0177)
  71. #define toascii(c)    ((int)((c)&0177))
  72. #else    /* !__STRICT_BSD__ */
  73. #ifndef __STRICT_ANSI__
  74. #define tolower(c)    ({int _c=(c); isupper(_c) ? _tolower(_c) : _c;})
  75. #define toupper(c)    ({int _c=(c); islower(_c) ? _toupper(_c) : _c;})
  76. #define isascii(c)    ((unsigned)(c)<=0177)
  77. #define toascii(c)    ((int)((c)&0177))
  78. #endif /* !__STRICT_ANSI__ */
  79. #endif /* !__STRICT_BSD__ */
  80.  
  81. #endif /* _ANSI_CTYPE_H */
  82.