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     }