1 cananian 1.1.2.1 // ExecMapProxy.java, created Wed Nov 15 21:42:10 2000 by cananian
 2 cananian 1.1.2.2 // Copyright (C) 2000 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1.2.1 package harpoon.Analysis.Maps;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.1 import harpoon.ClassFile.HCodeAndMaps;
 7 cananian 1.1.2.1 import harpoon.ClassFile.HCodeEdge;
 8 cananian 1.1.2.1 import harpoon.ClassFile.HCodeElement;
 9 cananian 1.1.2.1 import harpoon.IR.Quads.Edge;
10 cananian 1.1.2.1 /**
11 cananian 1.1.2.1  * An <code>ExecMapProxy</code> implements an <code>ExecMap</code> for
12 cananian 1.1.2.1  * a cloned <code>HCode</code> given the <code>HCodeAndMaps</code> which
13 cananian 1.1.2.1  * specifies its relationship to an <code>HCode</code> for which a
14 cananian 1.1.2.1  * <code>ExecMap</code> is known.
15 cananian 1.1.2.1  * 
16 cananian 1.1.2.2  * @author   C. Scott Ananian <cananian@alumni.princeton.edu>
17 cananian 1.4      * @version $Id: ExecMapProxy.java,v 1.4 2004/02/08 01:52:57 cananian Exp $
18 cananian 1.1.2.1  */
19 cananian 1.3     public class ExecMapProxy<HCE extends HCodeElement>
20 cananian 1.3         extends MapProxy<HCE> implements ExecMap<HCE> {
21 cananian 1.3         private ExecMap<HCE> em;
22 cananian 1.1.2.1     /** Creates an <code>ExecMapProxy</code>. */
23 cananian 1.3         public ExecMapProxy(HCodeAndMaps<HCE> hcam, ExecMap<HCE> em) {
24 cananian 1.1.2.1         super(hcam);
25 cananian 1.1.2.1         this.em = em;
26 cananian 1.1.2.1     }
27 cananian 1.3         public boolean execMap(HCE node) {
28 cananian 1.1.2.1         return em.execMap(n2o(node));
29 cananian 1.1.2.1     }
30 cananian 1.3         public boolean execMap(HCodeEdge<HCE> edge) {
31 cananian 1.4             if (((HCodeEdge/*XXX:JAVAC*/)edge) instanceof Edge)
32 cananian 1.4                 return em.execMap((HCodeEdge)n2o((Edge)((HCodeEdge/*XXX:JAVAC*/)edge)));
33 cananian 1.1.2.1         throw new Error("No consistent way to map edges between IRs.");
34 cananian 1.1.2.1     }
35 cananian 1.2     }