| 543 | } |
| 544 | |
| 545 | template <typename Context, typename Iter> bool _parse_object(Context &ctx, input<Iter> &in) |
| 546 | { |
| 547 | if (!ctx.parse_object_start()) { |
| 548 | return false; |
| 549 | } |
| 550 | if (in.expect('}')) { |
| 551 | return true; |
| 552 | } |
| 553 | do { |
| 554 | std::string key; |
| 555 | if (!in.expect('"') || !_parse_string(key, in) || !in.expect(':')) { |
| 556 | return false; |
| 557 | } |
| 558 | if (!ctx.parse_object_item(in, key)) { |
| 559 | return false; |
| 560 | } |
| 561 | } while (in.expect(',')); |
| 562 | return in.expect('}'); |
| 563 | } |
| 564 | |
| 565 | template <typename Iter> std::string _parse_number(input<Iter> &in) |
| 566 | { |
no test coverage detected