102 if (!stack_.back().is_parsed) {
103 if (!stack_.back().to) {
104 if (stack_.back().from.IsObject()) {
106 }
else if (stack_.back().from.IsArray()) {
112 if (stack_.back().current_parsing_elem) {
113 ++*stack_.back().current_parsing_elem;
115 stack_.back().current_parsing_elem = stack_.back().from.begin();
117 if (stack_.back().current_parsing_elem.value() == stack_.back().from.end()) {
118 stack_.back().is_parsed =
true;
121 auto new_from = *stack_.back().current_parsing_elem.value();
122 stack_.emplace_back(std::move(new_from));
126 auto& current_docs = stack_[stack_.size() - 2];
127 if (current_docs.from.IsObject()) {
128 current_docs.to.value()[current_docs.current_parsing_elem->GetName()] = std::move(stack_.back().to.value());
129 }
else if (current_docs.from.IsArray()) {
130 current_docs.to->PushBack(std::move(stack_.back().to.value()));
155 boost::container::deque<StackFrame,
void, boost::container::deque_options<boost::container::block_size<16>>::type>