package polyglot.ext.pao.extension;
import polyglot.ast.Ext;
import polyglot.ast.Node;
import polyglot.ast.NodeFactory;
import polyglot.ext.pao.types.PaoTypeSystem;
/**
* The <code>Ext</code> interface for the pao extension. The
* <code>PaoExt</code> interface provides one additional method:
* {@link #rewrite(PaoTypeSystem, NodeFactory) rewrite(PaoTypeSystem, NodeFactory)}.
*/
public interface PaoExt extends Ext {
/**
* Rewrites the <code>Node</code> associated with this <code>Ext</code>
* object, to automatically box and unbox primitives.
*
* @param ts The <code>PaoTypeSystem</code> instance.
* @param nf The <code>NodeFactory</code> instance.
* @return the result of rewriting the AST node to provide boxing and
* unboxing.
*/
public Node rewrite(PaoTypeSystem ts, NodeFactory nf);
}