Subversion Repositories Kolibri OS

Rev

Rev 1870 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef _LINUX_CTYPE_H
  2. #define _LINUX_CTYPE_H
  3.  
  4. /*
  5.  * NOTE! This ctype does not handle EOF like the standard C
  6.  * library is required to.
  7.  */
  8.  
  9. #define _U      0x01    /* upper */
  10. #define _L      0x02    /* lower */
  11. #define _D      0x04    /* digit */
  12. #define _C      0x08    /* cntrl */
  13. #define _P      0x10    /* punct */
  14. #define _S      0x20    /* white space (space/lf/tab) */
  15. #define _X      0x40    /* hex digit */
  16. #define _SP     0x80    /* hard space (0x20) */
  17.  
  18. extern const unsigned char _ctype[];
  19.  
  20. #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
  21.  
  22. #define isalnum(c)      ((__ismask(c)&(_U|_L|_D)) != 0)
  23. #define isalpha(c)      ((__ismask(c)&(_U|_L)) != 0)
  24. #define iscntrl(c)      ((__ismask(c)&(_C)) != 0)
  25. #define isdigit(c)      ((__ismask(c)&(_D)) != 0)
  26. #define isgraph(c)      ((__ismask(c)&(_P|_U|_L|_D)) != 0)
  27. #define islower(c)      ((__ismask(c)&(_L)) != 0)
  28. #define isprint(c)      ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
  29. #define ispunct(c)      ((__ismask(c)&(_P)) != 0)
  30. /* Note: isspace() must return false for %NUL-terminator */
  31. #define isspace(c)      ((__ismask(c)&(_S)) != 0)
  32. #define isupper(c)      ((__ismask(c)&(_U)) != 0)
  33. #define isxdigit(c)     ((__ismask(c)&(_D|_X)) != 0)
  34.  
  35. #define isascii(c) (((unsigned char)(c))<=0x7f)
  36. #define toascii(c) (((unsigned char)(c))&0x7f)
  37.  
  38. static inline unsigned char __tolower(unsigned char c)
  39. {
  40.         if (isupper(c))
  41.                 c -= 'A'-'a';
  42.         return c;
  43. }
  44.  
  45. static inline unsigned char __toupper(unsigned char c)
  46. {
  47.         if (islower(c))
  48.                 c -= 'a'-'A';
  49.         return c;
  50. }
  51.  
  52. #define tolower(c) __tolower(c)
  53. #define toupper(c) __toupper(c)
  54.  
  55. /*
  56.  * Fast implementation of tolower() for internal usage. Do not use in your
  57.  * code.
  58.  */
  59. static inline char _tolower(const char c)
  60. {
  61.         return c | 0x20;
  62. }
  63.  
  64. #endif
  65.