/* ASTInfoVisitor - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
package alloy.transl;
import java.util.Map;
import java.util.TreeMap;

import alloy.ast.ASTDepthFirstVisitor;
import alloy.ast.Leaf;
import alloy.ast.Node;

class ASTInfoVisitor extends ASTDepthFirstVisitor
{
    private Map _node2parent = new TreeMap();
    
    public void visit(Node node) {
	if (!(node instanceof Leaf)) {
	    for (int i = 0; i < node.numChildren(); i++) {
		Node node_0_ = node.childAt(i);
		_node2parent.put(node_0_, node);
		node_0_.applyVisitor(this);
	    }
	}
    }
    
    Node getParent(Node node) {
	return (Node) _node2parent.get(node);
    }
    
    public boolean isAncestor(Node node, Node node_1_) {
	Node node_2_ = getParent(node_1_);
	return (node_2_ != null
		&& (node_2_ == node || isAncestor(node, node_2_)));
    }
}
