| 874 | } |
| 875 | |
| 876 | bool Reader::decodeUnicodeEscapeSequence(Token &token, |
| 877 | Location ¤t, |
| 878 | Location end, |
| 879 | unsigned int &unicode) { |
| 880 | if (end - current < 4) |
| 881 | return addError( |
| 882 | "Bad unicode escape sequence in string: four digits expected.", |
| 883 | token, |
| 884 | current); |
| 885 | unicode = 0; |
| 886 | for (int index = 0; index < 4; ++index) { |
| 887 | Char c = *current++; |
| 888 | unicode *= 16; |
| 889 | if (c >= '0' && c <= '9') |
| 890 | unicode += c - '0'; |
| 891 | else if (c >= 'a' && c <= 'f') |
| 892 | unicode += c - 'a' + 10; |
| 893 | else if (c >= 'A' && c <= 'F') |
| 894 | unicode += c - 'A' + 10; |
| 895 | else |
| 896 | return addError( |
| 897 | "Bad unicode escape sequence in string: hexadecimal digit expected.", |
| 898 | token, |
| 899 | current); |
| 900 | } |
| 901 | return true; |
| 902 | } |
| 903 | |
| 904 | bool |
| 905 | Reader::addError(const std::string &message, Token &token, Location extra) { |
nothing calls this directly
no outgoing calls
no test coverage detected