| 935 | } |
| 936 | |
| 937 | bool Reader::decodeUnicodeEscapeSequence(Token& token, |
| 938 | Location& current, |
| 939 | Location end, |
| 940 | unsigned int& ret_unicode) { |
| 941 | if (end - current < 4) |
| 942 | return addError( |
| 943 | "Bad unicode escape sequence in string: four digits expected.", |
| 944 | token, |
| 945 | current); |
| 946 | int unicode = 0; |
| 947 | for (int index = 0; index < 4; ++index) { |
| 948 | Char c = *current++; |
| 949 | unicode *= 16; |
| 950 | if (c >= '0' && c <= '9') |
| 951 | unicode += c - '0'; |
| 952 | else if (c >= 'a' && c <= 'f') |
| 953 | unicode += c - 'a' + 10; |
| 954 | else if (c >= 'A' && c <= 'F') |
| 955 | unicode += c - 'A' + 10; |
| 956 | else |
| 957 | return addError( |
| 958 | "Bad unicode escape sequence in string: hexadecimal digit expected.", |
| 959 | token, |
| 960 | current); |
| 961 | } |
| 962 | ret_unicode = static_cast<unsigned int>(unicode); |
| 963 | return true; |
| 964 | } |
| 965 | |
| 966 | bool |
| 967 | Reader::addError(const JSONCPP_STRING& message, Token& token, Location extra) { |
nothing calls this directly
no outgoing calls
no test coverage detected