| 683 | } |
| 684 | |
| 685 | void Serializer::end_object_internal(bool objectisoarray) { |
| 686 | if (!_stream->good()) { |
| 687 | return; |
| 688 | } |
| 689 | GroupInfo & group_info = peek_group_info(); |
| 690 | if (FIELD_OBJECT != group_info.type) { |
| 691 | CHECK(false) << "end_object() is called on " << group_info; |
| 692 | return _stream->set_bad(); |
| 693 | } |
| 694 | if (group_info.name_size == 0) { |
| 695 | ObjectHead objhead; |
| 696 | objhead.head.set_type(objectisoarray ? FIELD_OBJECTISOARRAY : FIELD_OBJECT); |
| 697 | objhead.head.set_name_size(0); |
| 698 | objhead.head.set_value_size(_stream->pushed_bytes() - group_info.output_offset |
| 699 | - sizeof(FieldLongHead)); |
| 700 | objhead.fields_head.item_count = group_info.item_count; |
| 701 | _stream->assign(group_info.head_area, &objhead); |
| 702 | pop_group_info(_ndepth); |
| 703 | } else { |
| 704 | FieldLongHead lhead; |
| 705 | lhead.set_type(objectisoarray ? FIELD_OBJECTISOARRAY : FIELD_OBJECT); |
| 706 | lhead.set_name_size(group_info.name_size); |
| 707 | lhead.set_value_size(_stream->pushed_bytes() - group_info.output_offset |
| 708 | - group_info.name_size - sizeof(FieldLongHead)); |
| 709 | _stream->assign(group_info.head_area, &lhead); |
| 710 | const ItemsHead items_head = { group_info.item_count }; |
| 711 | _stream->assign(group_info.items_head_area, &items_head); |
| 712 | pop_group_info(_ndepth); |
| 713 | } |
| 714 | } |
| 715 | |
| 716 | void Serializer::begin_array_internal(FieldType item_type, bool compack) { |
| 717 | if (!_stream->good()) { |
nothing calls this directly
no test coverage detected