Lines Matching full:stack
108 // A level in the document reading stack.
136 SmallVector<StackLevel, 4> Stack;
140 Stack.push_back(StackLevel(Root, 0, (size_t)-1));
153 if (Multi && Stack.size() == 1) {
195 if (Stack.empty())
197 else if (Stack.back().Node.getKind() == Type::Array) {
199 auto &Array = Stack.back().Node.getArray();
200 DestNode = &Array[Stack.back().Index++];
202 auto &Map = Stack.back().Node.getMap();
203 if (!Stack.back().MapEntry) {
205 Stack.back().MapKey = Node;
206 Stack.back().MapEntry = &Map[Node];
210 DestNode = Stack.back().MapEntry;
211 Stack.back().MapEntry = nullptr;
212 ++Stack.back().Index;
219 DocNode MapKey = !Stack.empty() && !Stack.back().MapKey.isEmpty()
220 ? Stack.back().MapKey
234 Stack.push_back(StackLevel(*DestNode, MergeResult, Obj.Length, nullptr));
240 // Pop finished stack levels.
241 while (!Stack.empty()) {
242 if (Stack.back().MapEntry)
244 if (Stack.back().Index != Stack.back().End)
246 Stack.pop_back();
248 } while (!Stack.empty());
264 SmallVector<WriterStackLevel, 4> Stack;
270 Stack.push_back(
275 Stack.push_back(
301 // Pop finished stack levels.
302 while (!Stack.empty()) {
303 if (Stack.back().Node.getKind() == Type::Map) {
304 if (Stack.back().MapIt != Stack.back().Node.getMap().end())
307 if (Stack.back().ArrayIt != Stack.back().Node.getArray().end())
310 Stack.pop_back();
312 if (Stack.empty())
315 if (Stack.back().Node.getKind() == Type::Map) {
316 if (Stack.back().OnKey) {
318 Node = Stack.back().MapIt->first;
319 Stack.back().OnKey = false;
321 Node = Stack.back().MapIt->second;
322 ++Stack.back().MapIt;
323 Stack.back().OnKey = true;
326 Node = *Stack.back().ArrayIt;
327 ++Stack.back().ArrayIt;