1 cananian 1.1     // ExecMap.java, created Sat Sep 12 17:08:50 1998 by cananian
 2 cananian 1.2     // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.2     // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1     package harpoon.Analysis.Maps;
 5 cananian 1.1     
 6 cananian 1.1     import harpoon.ClassFile.HCode;
 7 cananian 1.1     import harpoon.ClassFile.HCodeElement;
 8 cananian 1.1     import harpoon.ClassFile.HCodeEdge;
 9 cananian 1.1     /**
10 cananian 1.1      * <code>ExecMap</code> is a mapping from <code>HCodeElement</code>s to
11 cananian 1.1      * their executable status.
12 cananian 1.1      * 
13 cananian 1.1      * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
14 cananian 1.4      * @version $Id: ExecMap.java,v 1.4 2002/09/02 19:23:26 cananian Exp $
15 cananian 1.1      */
16 cananian 1.1     
17 cananian 1.4     public interface ExecMap<HCE extends HCodeElement>  {
18 cananian 1.1         /** 
19 cananian 1.1          * Returns the executable status of an <code>HCodeElement</code>.
20 cananian 1.1          * @param node The <code>HCodeElement</code> to examine.
21 cananian 1.1          * @return <code>true</code> if it is possible to execute this 
22 cananian 1.1          *         <code>HCodeElement</code>; or <code>false</code> if
23 cananian 1.1          *         it can be proved that this <code>HCodeElement</code>
24 cananian 1.1          *         will never be executed. */
25 cananian 1.4         public boolean execMap(HCE node);
26 cananian 1.1         /** 
27 cananian 1.1          * Returns the executable status of an <code>HCodeEdge</code>.
28 cananian 1.1          * @param edge An edge between two <code>HCodeElement</code>s in
29 cananian 1.2.2.1      *             some <code>HCode</code>.
30 cananian 1.1          * @return <code>true</code> if it is possible to traverse this
31 cananian 1.1          *         edge during execution, or <code>false</code> if it
32 cananian 1.1          *         can be proved that this edge will never be followed.
33 cananian 1.1          */
34 cananian 1.4         public boolean execMap(HCodeEdge<HCE> edge);
35 cananian 1.1     }