| 1 |
|
| 2 | #ifndef _LINUX_CTYPE_H
|
| 3 | #define _LINUX_CTYPE_H
|
| 4 |
|
| 5 | #include <linux/compiler.h>
|
| 6 |
|
| 7 | |
| 8 | * NOTE! This ctype does not handle EOF like the standard C
|
| 9 | * library is required to.
|
| 10 |
|
| 11 |
|
| 12 | #define _U 0x01
|
| 13 | #define _L 0x02
|
| 14 | #define _D 0x04
|
| 15 | #define _C 0x08
|
| 16 | #define _P 0x10
|
| 17 | #define _S 0x20
|
| 18 | #define _X 0x40
|
| 19 | #define _SP 0x80
|
| 20 |
|
| 21 | extern const unsigned char _ctype[];
|
| 22 |
|
| 23 | #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
|
| 24 |
|
| 25 | #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
|
| 26 | #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
|
| 27 | #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
|
| 28 | #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
|
| 29 | #define islower(c) ((__ismask(c)&(_L)) != 0)
|
| 30 | #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
|
| 31 | #define ispunct(c) ((__ismask(c)&(_P)) != 0)
|
| 32 |
|
| 33 | #define isspace(c) ((__ismask(c)&(_S)) != 0)
|
| 34 | #define isupper(c) ((__ismask(c)&(_U)) != 0)
|
| 35 | #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
|
| 36 |
|
| 37 | #define isascii(c) (((unsigned char)(c))<=0x7f)
|
| 38 | #define toascii(c) (((unsigned char)(c))&0x7f)
|
| 39 |
|
| 40 | #if __has_builtin(__builtin_isdigit)
|
| 41 | #define isdigit(c) __builtin_isdigit(c)
|
| 42 | #else
|
| 43 | static inline int isdigit(int c)
|
| 44 | {
|
| 45 | return '0' <= c && c <= '9';
|
| 46 | }
|
| 47 | #endif
|
| 48 |
|
| 49 | static inline unsigned char __tolower(unsigned char c)
|
| 50 | {
|
| 51 | if (isupper(c))
|
| 52 | c -= 'A'-'a';
|
| 53 | return c;
|
| 54 | }
|
| 55 |
|
| 56 | static inline unsigned char __toupper(unsigned char c)
|
| 57 | {
|
| 58 | if (islower(c))
|
| 59 | c -= 'a'-'A';
|
| 60 | return c;
|
| 61 | }
|
| 62 |
|
| 63 | #define tolower(c) __tolower(c)
|
| 64 | #define toupper(c) __toupper(c)
|
| 65 |
|
| 66 | |
| 67 | * Fast implementation of tolower() for internal usage. Do not use in your
|
| 68 | * code.
|
| 69 |
|
| 70 | static inline char _tolower(const char c)
|
| 71 | {
|
| 72 | return c | 0x20;
|
| 73 | }
|
| 74 |
|
| 75 |
|
| 76 | static inline int isodigit(const char c)
|
| 77 | {
|
| 78 | return c >= '0' && c <= '7';
|
| 79 | }
|
| 80 |
|
| 81 | #endif
|