Esempio n. 1
0
void SymbolTable::installSubtreeCaches(Node *Nd,
                                       VisitedNodesType &VisitedNodes,
                                       NodeVectorType &AdditionalNodes) {
  if (VisitedNodes.count(Nd))
    return;
  TraceClass::Method _("installSubtreeCaches", Node::Trace);
  Node::Trace.traceSexp(Nd);
  VisitedNodes.insert(Nd);
  Nd->installCaches(AdditionalNodes);
  for (auto *Kid : *Nd)
    AdditionalNodes.push_back(Kid);
}
Esempio n. 2
0
void Tree::VisitChildrenForLeafNodes(Node * const node, NodeVectorType & leaf_nodes) const
{
	std::vector<Node *> children = node->GetChildren();

	if (children.size() == 0)
		leaf_nodes.push_back(node);
	else
	{
		std::vector<Node *>::iterator children_iter;
		for (children_iter = children.begin(); children_iter != children.end(); ++children_iter)
			VisitChildrenForLeafNodes(*children_iter, leaf_nodes);
	}
}