Lines Matching defs:Tree
31 /// Maps nodes of the left tree to ones on the right, and vice versa.
71 NodeId getMapped(const std::unique_ptr<SyntaxTree::Impl> &Tree,
73 if (&*Tree == &T1)
75 assert(&*Tree == &T2 && "Invalid tree.");
115 /// Constructs a tree from an AST node.
193 SyntaxTree::Impl &Tree;
195 PreorderVisitor(SyntaxTree::Impl &Tree) : Tree(Tree) {}
199 Tree.Nodes.emplace_back();
200 Node &N = Tree.getMutableNode(MyId);
207 Node &P = Tree.getMutableNode(Parent);
213 return std::make_tuple(MyId, Tree.getNode(MyId).Parent);
221 Node &N = Tree.getMutableNode(MyId);
224 N.RightMostDescendant < Tree.getSize() &&
225 "Rightmost descendant must be a valid tree node.");
227 Tree.Leaves.push_back(MyId);
230 N.Height = std::max(N.Height, 1 + Tree.getNode(Child).Height);
233 if (isNodeExcluded(Tree.AST.getSourceManager(), D))
243 if (isNodeExcluded(Tree.AST.getSourceManager(), S))
252 if (isNodeExcluded(Tree.AST.getSourceManager(), Init))
281 static std::vector<NodeId> getSubtreePostorder(const SyntaxTree::Impl &Tree,
285 const Node &N = Tree.getNode(Id);
294 static std::vector<NodeId> getSubtreeBfs(const SyntaxTree::Impl &Tree,
300 for (NodeId Child : Tree.getNode(Ids[Expanded++]).Children)
488 /// The parent tree.
489 const SyntaxTree::Impl &Tree;
498 Subtree(const SyntaxTree::Impl &Tree, NodeId SubtreeRoot) : Tree(Tree) {
499 RootIds = getSubtreePostorder(Tree, SubtreeRoot);
509 return Tree.getNode(getIdInRoot(Id));
517 return Tree.PostorderIds[getIdInRoot(SNodeId(1))];
520 return Tree.getNodeValue(getIdInRoot(Id));
532 assert(I == Tree.PostorderIds[getIdInRoot(SI)] - getPostorderOffset() &&
534 "the root tree by a constant offset.");
535 LeftMostDescendants[I] = SNodeId(Tree.PostorderIds[N.LeftMostDescendant] -
556 /// Implementation of Zhang and Shasha's Algorithm for tree edit distance.
710 const SyntaxTree::Impl &Tree;
711 HeightLess(const SyntaxTree::Impl &Tree) : Tree(Tree) {}
713 return Tree.getNode(Id1).Height < Tree.getNode(Id2).Height;
721 const SyntaxTree::Impl &Tree;
727 PriorityList(const SyntaxTree::Impl &Tree)
728 : Tree(Tree), Cmp(Tree), List(Cmp, Container) {}
748 return Tree.getNode(List.top()).Height;
751 for (NodeId Child : Tree.getNode(Id).Children)