1 cananian 1.1.2.1 // MapProxy.java, created Wed Nov 15 20:41:05 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.HCodeElement;
 8 cananian 1.1.2.1 import harpoon.IR.Quads.Edge;
 9 cananian 1.1.2.1 import harpoon.IR.Quads.Quad;
10 cananian 1.1.2.1 import harpoon.Temp.Temp;
11 cananian 1.1.2.1 import harpoon.Temp.TempMap;
12 cananian 1.1.2.1 
13 cananian 1.1.2.1 import java.util.Map;
14 cananian 1.1.2.1 /**
15 cananian 1.1.2.1  * <code>MapProxy</code> is an abstract class which contains code common
16 cananian 1.1.2.1  * to various types of map proxies.
17 cananian 1.1.2.1  * 
18 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
19 cananian 1.3      * @version $Id: MapProxy.java,v 1.3 2002/09/02 19:23:26 cananian Exp $
20 cananian 1.1.2.1  */
21 cananian 1.3     class MapProxy<HCE extends HCodeElement> {
22 cananian 1.3         private final Map<HCE,HCE> n2oE;
23 cananian 1.1.2.1     private final TempMap n2oT;
24 cananian 1.1.2.1     /** Creates a <code>MapProxy</code> from an <code>HCodeAndMaps</code>. */
25 cananian 1.3         MapProxy(HCodeAndMaps<HCE> hcam) {
26 cananian 1.1.2.1         this.n2oE = hcam.ancestorElementMap();
27 cananian 1.1.2.1         this.n2oT = hcam.ancestorTempMap();
28 cananian 1.1.2.1     }
29 cananian 1.3         HCE n2o(HCE hce) {
30 cananian 1.3             return n2oE.get(hce);
31 cananian 1.1.2.1     }
32 cananian 1.3         Temp n2o(Temp t) { return n2oT.tempMap(t); }
33 cananian 1.1.2.1     // utility for Quad forms.
34 cananian 1.1.2.1     Edge n2o(Edge e) {
35 cananian 1.3             Quad from = (Quad) n2o((HCE)e.from());
36 cananian 1.1.2.1         int which_succ = e.which_succ();
37 cananian 1.1.2.1         return from.nextEdge(which_succ);
38 cananian 1.1.2.1     }
39 cananian 1.2     }