|
8 | 8 | about ASCII ranges, so simple comparisons suffice. Bytes outside |
9 | 9 | 0-127 never match. */ |
10 | 10 |
|
11 | | -static inline int ascii_isdigit(char c) { |
| 11 | +/* c89 has no "inline" keyword. gcc and clang accept __inline__ in |
| 12 | + any mode; otherwise fall back to plain static functions. */ |
| 13 | +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L |
| 14 | +#define DBCTYPE_INLINE static inline |
| 15 | +#elif defined(__GNUC__) |
| 16 | +#define DBCTYPE_INLINE static __inline__ |
| 17 | +#else |
| 18 | +#define DBCTYPE_INLINE static |
| 19 | +#endif |
| 20 | + |
| 21 | +DBCTYPE_INLINE int ascii_isdigit(char c) { |
12 | 22 | return c >= '0' && c <= '9'; |
13 | 23 | } |
14 | 24 |
|
15 | | -static inline int ascii_isalpha(char c) { |
| 25 | +DBCTYPE_INLINE int ascii_isalpha(char c) { |
16 | 26 | return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); |
17 | 27 | } |
18 | 28 |
|
19 | | -static inline int ascii_isalnum(char c) { |
| 29 | +DBCTYPE_INLINE int ascii_isalnum(char c) { |
20 | 30 | return ascii_isalpha(c) || ascii_isdigit(c); |
21 | 31 | } |
22 | 32 |
|
23 | | -static inline int ascii_isspace(char c) { |
| 33 | +DBCTYPE_INLINE int ascii_isspace(char c) { |
24 | 34 | return c == ' ' || c == '\t' || c == '\n' |
25 | 35 | || c == '\v' || c == '\f' || c == '\r'; |
26 | 36 | } |
27 | 37 |
|
28 | | -static inline int ascii_isprint(char c) { |
| 38 | +DBCTYPE_INLINE int ascii_isprint(char c) { |
29 | 39 | return c >= 0x20 && c <= 0x7e; |
30 | 40 | } |
31 | 41 |
|
32 | | -static inline char ascii_tolower(char c) { |
| 42 | +DBCTYPE_INLINE char ascii_tolower(char c) { |
33 | 43 | if (c >= 'A' && c <= 'Z') { |
34 | 44 | return c + ('a' - 'A'); |
35 | 45 | } |
|
0 commit comments