| | 22 | /* |
| | 23 | * Add specialized checks for the case where the character |
| | 24 | * class is char or unsigned char. The specialized check avoids |
| | 25 | * comparing to <= 0xFF which triggers a GCC warning about the |
| | 26 | * fact that the check is always true. |
| | 27 | * |
| | 28 | * See https://svn.boost.org/trac/boost/ticket/5598 |
| | 29 | */ |
| | 30 | namespace detail { |
| | 31 | template <class Ch> |
| | 32 | bool check_is_ascii(const Ch c) |
| | 33 | { |
| | 34 | return (c == 0x20 || c == 0x21 || (c >= 0x23 && c <= 0x2E) || |
| | 35 | (c >= 0x30 && c <= 0x5B) || (c >= 0x5D && c <= 0xFF)); |
| | 36 | } |
| | 37 | |
| | 38 | template <> |
| | 39 | bool check_is_ascii(const char c) |
| | 40 | { |
| | 41 | return (c == 0x20 || c == 0x21 || (c >= 0x23 && c <= 0x2E) || |
| | 42 | (c >= 0x30 && c <= 0x5B) || c >= 0x5D); |
| | 43 | } |
| | 44 | |
| | 45 | template <> |
| | 46 | bool check_is_ascii(const unsigned char c) |
| | 47 | { |
| | 48 | return (c == 0x20 || c == 0x21 || (c >= 0x23 && c <= 0x2E) || |
| | 49 | (c >= 0x30 && c <= 0x5B) || c >= 0x5D); |
| | 50 | } |
| | 51 | } |