Lines Matching full:children
22 /// AndIterator iterates through common items among all children. It becomes
24 /// iterator restores the invariant: all children must point to the same item.
28 : Iterator(Kind::And), Children(std::move(AllChildren)) { in AndIterator()
29 assert(!Children.empty() && "AND iterator should have at least one child."); in AndIterator()
31 for (const auto &Child : Children) in AndIterator()
34 // When children are sorted by the estimateSize(), sync() calls are more in AndIterator()
36 // children point to the same element. If any child is "above" the previous in AndIterator()
37 // ones, the algorithm resets and advances the children to the next in AndIterator()
41 llvm::sort(Children, [](const std::unique_ptr<Iterator> &LHS, in AndIterator()
49 /// Advances all children to the next common item.
52 Children.front()->advance(); in advance()
56 /// Advances all children to the next common item with DocumentID >= ID.
59 Children.front()->advanceTo(ID); in advanceTo()
63 DocID peek() const override { return Children.front()->peek(); } in peek()
68 for (const auto &Child : Children) in consume()
74 return Children.front()->estimateSize(); in estimateSize()
81 for (const auto &Child : Children) { in dump()
92 ReachedEnd |= Children.front()->reachedEnd(); in sync()
95 auto SyncID = Children.front()->peek(); in sync()
100 for (auto &Child : Children) { in sync()
111 // all children should be advanced to the next common item. in sync()
125 /// AndIterator owns its children and ensures that all of them point to the
128 std::vector<std::unique_ptr<Iterator>> Children; member in clang::clangd::dex::__anonfa78848f0111::AndIterator
141 /// soon as all of its children are exhausted.
145 : Iterator(Kind::Or), Children(std::move(AllChildren)) { in OrIterator()
146 assert(!Children.empty() && "OR iterator should have at least one child."); in OrIterator()
149 /// Returns true if all children are exhausted.
151 for (const auto &Child : Children) in reachedEnd()
161 for (const auto &Child : Children) in advance()
169 for (const auto &Child : Children) in advanceTo()
180 for (const auto &Child : Children) in peek()
187 // Returns the maximum boosting score among all Children when iterator
193 for (const auto &Child : Children) in consume()
201 for (const auto &Child : Children) in estimateSize()
210 for (const auto &Child : Children) { in dump()
218 std::vector<std::unique_ptr<Iterator>> Children; member in clang::clangd::dex::__anonfa78848f0111::OrIterator
365 Corpus::intersect(std::vector<std::unique_ptr<Iterator>> Children) const { in intersect()
367 for (auto &Child : Children) { in intersect()
375 auto &NewChildren = static_cast<AndIterator *>(Child.get())->Children; in intersect()
395 Corpus::unionOf(std::vector<std::unique_ptr<Iterator>> Children) const { in unionOf()
397 for (auto &Child : Children) { in unionOf()
403 auto &NewChildren = static_cast<OrIterator *>(Child.get())->Children; in unionOf()