1 bdemsky 1.1.2.5 // Loops.java, created Wed Jun 13 17:38:43 1998 by bdemsky 2 bdemsky 1.1.2.5 // Copyright (C) 1999 Brian Demsky <bdemsky@mit.edu> 3 bdemsky 1.1.2.5 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 bdemsky 1.1.2.2 5 bdemsky 1.1.2.1 package harpoon.Analysis.Loops; 6 bdemsky 1.1.2.1 7 cananian 1.3 import net.cscott.jutil.WorkSet; 8 bdemsky 1.1.2.1 import harpoon.ClassFile.HCode; 9 bdemsky 1.1.2.3 import java.util.Set; 10 bdemsky 1.1.2.5 /** 11 bdemsky 1.1.2.5 * <code>Loops</code> contains the interface to be implemented by objects 12 bdemsky 1.1.2.5 * generating nested loops trees. 13 bdemsky 1.1.2.5 * 14 bdemsky 1.1.2.5 * 15 bdemsky 1.1.2.5 * @author Brian Demsky <bdemsky@mit.edu> 16 cananian 1.3 * @version $Id: Loops.java,v 1.3 2004/02/08 01:52:50 cananian Exp $ 17 bdemsky 1.1.2.5 */ 18 bdemsky 1.1.2.1 19 bdemsky 1.1.2.1 public interface Loops { 20 bdemsky 1.1.2.2 21 bdemsky 1.1.2.5 /** Returns entrances to the Loop. 22 bdemsky 1.1.2.5 * This is a <code>Set</code> of <code>HCodeElement</code>s.*/ 23 bdemsky 1.1.2.5 public Set loopEntrances(); 24 cananian 1.1.2.7 25 cananian 1.1.2.7 /** Returns nodes that have edges exiting the loop. 26 cananian 1.1.2.7 * This is a <code>Set</code> of <code>HCodeElement</code>s.*/ 27 cananian 1.1.2.7 public Set loopExits(); 28 bdemsky 1.1.2.5 29 cananian 1.1.2.7 /** Returns entrances to the Loop. 30 cananian 1.1.2.6 * This is a <code>Set</code> of <code>HCodeEdge</code>s.*/ 31 cananian 1.1.2.7 public Set loopEntranceEdges(); 32 bdemsky 1.1.2.5 33 bdemsky 1.1.2.5 /** Returns nodes that have edges exiting the loop. 34 cananian 1.1.2.6 * This is a <code>Set</code> of <code>HCodeEdge</code>s.*/ 35 cananian 1.1.2.7 public Set loopExitEdges(); 36 bdemsky 1.1.2.5 37 cananian 1.1.2.7 /** Returns backedges in the Loop. 38 cananian 1.1.2.7 * This is a <code>Set</code> of <code>HCodeEdge</code>s.*/ 39 cananian 1.1.2.7 public Set loopBackEdges(); 40 cananian 1.1.2.7 41 bdemsky 1.1.2.5 /** Returns elements of this loops and all nested loop. 42 bdemsky 1.1.2.5 * This is a <code>Set</code> of <code>HCodeElement</code>s.*/ 43 cananian 1.1.2.7 public Set loopIncElements(); 44 bdemsky 1.1.2.5 45 bdemsky 1.1.2.5 /** Returns elements of this loop not in any nested loop. 46 bdemsky 1.1.2.5 * This is a <code>Set</code> of <code>HCodeElement</code>s.*/ 47 cananian 1.1.2.7 public Set loopExcElements(); 48 bdemsky 1.1.2.5 49 cananian 1.1.2.7 /** Returns a <code>Set</code> containing <code>Loops</code> that are 50 cananian 1.1.2.7 * nested.*/ 51 bdemsky 1.1.2.5 public Set nestedLoops(); 52 bdemsky 1.1.2.5 53 bdemsky 1.1.2.5 /** Returns the loop immediately nesting this loop. 54 bdemsky 1.1.2.5 * If this is the highest level loop, returns a null pointer.*/ 55 bdemsky 1.1.2.5 public Loops parentLoop(); 56 cananian 1.2 }