| 312 | |
| 313 | template<class Stream> |
| 314 | bool JsonSkipper<Stream>::SkipString() { |
| 315 | DCHECK(s_.Peek() == '"'); |
| 316 | s_.Take(); |
| 317 | char c; |
| 318 | bool escape = false; |
| 319 | while ((c = s_.Peek()) != '\0') { |
| 320 | if (escape) { |
| 321 | escape = false; |
| 322 | } else if (c == '\\') { |
| 323 | escape = true; |
| 324 | } else if (c == '"') { |
| 325 | s_.Take(); |
| 326 | return true; |
| 327 | } |
| 328 | s_.Take(); |
| 329 | } |
| 330 | ERROR_IF_FALSE(false, kParseErrorStringMissQuotationMark); |
| 331 | } |
| 332 | |
| 333 | template<class Stream> |
| 334 | bool JsonSkipper<Stream>::SkipNumber() { |