1 salcianu 1.1.2.1 // BasicBlockFactoryInterf.java, created Fri Dec 14 19:47:04 2001 by salcianu
 2 salcianu 1.1.2.1 // Copyright (C) 2000 Alexandru SALCIANU <salcianu@MIT.EDU>
 3 salcianu 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 salcianu 1.1.2.1 package harpoon.Analysis;
 5 salcianu 1.1.2.1 
 6 salcianu 1.1.2.1 import java.util.Set;
 7 salcianu 1.1.2.1 
 8 salcianu 1.1.2.1 import harpoon.ClassFile.HCode;
 9 salcianu 1.1.2.1 import harpoon.ClassFile.HCodeElement;
10 salcianu 1.1.2.1 
11 salcianu 1.1.2.1 /**
12 salcianu 1.1.2.1  * <code>BasicBlockFactoryInterf</code>
13 salcianu 1.1.2.1  * 
14 salcianu 1.1.2.1  * @author  Alexandru SALCIANU <salcianu@MIT.EDU>
15 cananian 1.3      * @version $Id: BasicBlockFactoryInterf.java,v 1.3 2002/04/10 02:58:48 cananian Exp $
16 salcianu 1.1.2.1  */
17 cananian 1.2.2.1 public interface BasicBlockFactoryInterf
18 cananian 1.2.2.1     <HCE extends HCodeElement,BB extends BasicBlockInterf<HCE,BB>> {
19 salcianu 1.1.2.1     
20 salcianu 1.1.2.1     /** Returns the <code>HCode</code> that <code>this</code> factory
21 salcianu 1.1.2.1         produces basic blocks of. */
22 cananian 1.2.2.1     public HCode<HCE> getHCode();
23 salcianu 1.1.2.1 
24 salcianu 1.1.2.1     /** Returns the root <code>BasicBlockInterfs</code>.
25 salcianu 1.1.2.1         <BR> <B>effects:</B> returns the <code>BasicBlock</code>
26 salcianu 1.1.2.1         that is at the start of the set of
27 salcianu 1.1.2.1         <code>HCodeElement</code>s being analyzed.
28 salcianu 1.1.2.1     */
29 cananian 1.2.2.1     public BB getRootBBInterf();
30 salcianu 1.1.2.1 
31 salcianu 1.1.2.1     /** Returns the leaf <code>BasicBlockInterf</code>s.
32 salcianu 1.1.2.1         <BR> <B>effects:</B> returns a <code>Set</code> of
33 salcianu 1.1.2.1         <code>BasicBlock</code>s that are at the ends of the
34 salcianu 1.1.2.1         <code>HCodeElement</code>s being analyzed.
35 salcianu 1.1.2.1     */
36 cananian 1.2.2.1     public Set<BB> getLeavesBBInterf();
37 salcianu 1.1.2.1 
38 salcianu 1.1.2.1     /** Returns the <code>BasicBlock</code>s constructed by
39 salcianu 1.1.2.1         the factory. */
40 cananian 1.2.2.1     public Set<BB> blockSet();
41 salcianu 1.1.2.1  
42 salcianu 1.1.2.1     /** Returns the <code>BasicBlockInterf</code> containing
43 salcianu 1.1.2.1         <code>hce</code>. 
44 salcianu 1.1.2.1         <BR> <B>requires:</B> hce is present in the code for
45 salcianu 1.1.2.1         <code>this</code>. 
46 salcianu 1.1.2.1         <BR> <B>effects:</B> returns the basic block that contains
47 salcianu 1.1.2.1         <code>hce</code>, or <code>null</code> if
48 salcianu 1.1.2.1         <code>hce</code> is unreachable.
49 salcianu 1.1.2.1     */
50 cananian 1.2.2.1     public BB getBBInterf(HCE hce);
51 salcianu 1.1.2.1    
52 cananian 1.2     }