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 }