| 5568 | } |
| 5569 | |
| 5570 | bool start_object(std::size_t len) |
| 5571 | { |
| 5572 | // check callback for object start |
| 5573 | const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded); |
| 5574 | keep_stack.push_back(keep); |
| 5575 | |
| 5576 | auto val = handle_value(BasicJsonType::value_t::object, true); |
| 5577 | ref_stack.push_back(val.second); |
| 5578 | |
| 5579 | // check object limit |
| 5580 | if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) |
| 5581 | { |
| 5582 | JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len))); |
| 5583 | } |
| 5584 | |
| 5585 | return true; |
| 5586 | } |
| 5587 | |
| 5588 | bool key(string_t& val) |
| 5589 | { |