1 cananian 1.1.2.1 // CFGraphable.java, created Mon Nov 29 23:34:03 1999 by cananian 2 cananian 1.1.2.1 // Copyright (C) 1999 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.2.1 package harpoon.IR.Properties; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 import harpoon.ClassFile.HCodeEdge; 7 cananian 1.4 import harpoon.ClassFile.HCodeElement; 8 cananian 1.5 import harpoon.Util.Collections.Graph; 9 cananian 1.1.2.1 10 cananian 1.6 import java.util.List; 11 cananian 1.1.2.1 /** 12 cananian 1.1.2.1 * <code>CFGraphable</code> defines an interface for intermediate 13 cananian 1.1.2.1 * representations that are inherently interconnected in a directed 14 cananian 1.1.2.1 * control-flow graphs. 15 cananian 1.1.2.1 * 16 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 17 cananian 1.6 * @version $Id: CFGraphable.java,v 1.6 2004/02/07 21:28:54 cananian Exp $ 18 cananian 1.1.2.3 * @see harpoon.IR.Properties.CFGrapher 19 cananian 1.1.2.3 * @see harpoon.IR.Properties.CFGrapher#DEFAULT 20 cananian 1.1.2.1 */ 21 cananian 1.4 public interface CFGraphable<CFG extends CFGraphable<CFG,E>, 22 cananian 1.4 E extends CFGEdge<CFG,E>> 23 cananian 1.5 extends harpoon.ClassFile.HCodeElement, Graph.Node<CFG,E> { 24 cananian 1.1.2.1 /** Returns an array of all the edges to and from this 25 cananian 1.1.2.1 * <code>CFGraphable</code>. */ 26 cananian 1.2.2.1 public E[] edges(); 27 cananian 1.1.2.1 /** Returns an array of all the edges entering this 28 cananian 1.1.2.1 * <code>CFGraphable</code>. */ 29 cananian 1.2.2.1 public E[] pred(); 30 cananian 1.1.2.1 /** Returns an array of all the edges leaving this 31 cananian 1.1.2.1 * <code>CFGraphable</code>. */ 32 cananian 1.2.2.1 public E[] succ(); 33 cananian 1.1.2.1 34 cananian 1.1.2.1 // JDK 1.2 collections API: [CSA, 15-Jun-1999] 35 cananian 1.6 /** Returns a <code>List</code> of all the edges to and from 36 cananian 1.1.2.1 * this <code>HCodeElement</code>. */ 37 cananian 1.6 public List<E> edgeC(); 38 cananian 1.6 /** Returns a <code>List</code> of all the edges to 39 cananian 1.1.2.1 this <code>HCodeElement</code>. 40 duncan 1.1.2.2 Each <code>CFGEdge</code> returned is guaranteed to return 41 cananian 1.1.2.1 <code>this</code> in response to a call to <code>to()</code>; 42 cananian 1.1.2.1 the actual predecessor will be returned from 43 cananian 1.1.2.1 <code>from()</code>. 44 cananian 1.1.2.1 */ 45 cananian 1.6 public List<E> predC(); 46 cananian 1.6 /** Returns a <code>List</code> of all the edges from 47 cananian 1.1.2.1 this <code>HCodeElement</code>. 48 duncan 1.1.2.2 Each <code>CFGEdge</code> returned is guaranteed to return 49 cananian 1.1.2.1 <code>this</code> in response to a call to 50 cananian 1.1.2.1 <code>from()</code>; the actual successor to <code>this</code> 51 cananian 1.1.2.1 will be returned from <code>to()</code>. 52 cananian 1.1.2.1 */ 53 cananian 1.6 public List<E> succC(); 54 cananian 1.2 }