MCPcopy Create free account
hub / github.com/danielaparker/jsoncons / visit_end_object

Method visit_end_object

include/jsoncons/json_decoder.hpp:138–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

136 }
137
138 JSONCONS_VISITOR_RETURN_TYPE visit_end_object(const ser_context&, std::error_code&) override
139 {
140 JSONCONS_ASSERT(structure_stack_.size() > 0);
141 JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::object_t);
142 const size_t structure_index = structure_stack_.back().container_index_;
143 JSONCONS_ASSERT(item_stack_.size() > structure_index);
144 const size_t count = item_stack_.size() - (structure_index + 1);
145 auto first = item_stack_.begin() + (structure_index+1);
146
147 if (count > 0)
148 {
149 item_stack_[structure_index].value.template cast<typename Json::object_storage>().value().uninitialized_init(
150 &item_stack_[structure_index+1], count);
151 }
152
153 item_stack_.erase(first, item_stack_.end());
154 structure_stack_.pop_back();
155 if (structure_stack_.back().type_ == structure_type::root_t)
156 {
157 result_.swap(item_stack_.front().value);
158 item_stack_.pop_back();
159 is_valid_ = true;
160 JSONCONS_VISITOR_RETURN;
161 }
162 JSONCONS_VISITOR_RETURN;
163 }
164
165 JSONCONS_VISITOR_RETURN_TYPE visit_begin_array(semantic_tag tag, const ser_context&, std::error_code&) override
166 {

Callers

nothing calls this directly

Calls 10

pop_backMethod · 0.80
frontMethod · 0.80
sizeMethod · 0.45
backMethod · 0.45
beginMethod · 0.45
uninitialized_initMethod · 0.45
valueMethod · 0.45
eraseMethod · 0.45
endMethod · 0.45
swapMethod · 0.45

Tested by

no test coverage detected