sota.gui.graph
Class CFGBuilder

java.lang.Object
  extended by sota.gui.graph.CFGBuilder

public class CFGBuilder
extends java.lang.Object

Kapselt die Funktionalität, Kontrollflussgraphen aus (Java-)Funktionen zu konstruieren, sowie auf diesen Graphen Operationen, wie z.B. Färben, Tooltip-Text erstellen, auszuführen.


Field Summary
private static org.eclipse.draw2d.graph.EdgeList edges
           
private static java.util.ArrayList<GraphNode> listOfJumpNodes
           
private static org.eclipse.draw2d.graph.NodeList nodes
           
private static ZoomManager zoomManager
           
 
Constructor Summary
CFGBuilder()
           
 
Method Summary
static org.eclipse.draw2d.graph.DirectedGraph buildCFG(ASTFunctionNode fn, GraphManager gcm)
          Liefert den DirectedGraph für eine Funktion.
private static GraphNode buildCFG(GraphNode father, ASTNode startNode, ASTNode endNode)
          Rekursive Funktion zum Erstellen des Kontrollflussgraphen
private static void buildFigureGraph(GraphNode rootGraphNode, int constraint)
          Konstruiert rekursive Nodes und Edges für den DirectedGraph aus der GraphNode-Struktur
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

edges

private static org.eclipse.draw2d.graph.EdgeList edges

listOfJumpNodes

private static java.util.ArrayList<GraphNode> listOfJumpNodes

nodes

private static org.eclipse.draw2d.graph.NodeList nodes

zoomManager

private static ZoomManager zoomManager
Constructor Detail

CFGBuilder

public CFGBuilder()
Method Detail

buildCFG

public static org.eclipse.draw2d.graph.DirectedGraph buildCFG(ASTFunctionNode fn,
                                                              GraphManager gcm)
Liefert den DirectedGraph für eine Funktion.

Parameters:
fn - Der ASTFunctionNode, dessen Funktion modelliert werden soll.
gcm - Der verwendete GraphManager, der die Verknüpfung GraphNode<->Node<->Widget und GraphEdge<->Edge<->Widget speichert.
Returns:
Der konstruierte DirectedGraph

buildCFG

private static GraphNode buildCFG(GraphNode father,
                                  ASTNode startNode,
                                  ASTNode endNode)
Rekursive Funktion zum Erstellen des Kontrollflussgraphen

Parameters:
father - Der GraphNode, an denen dieser Teilgraph angehängt wird.
startNode - Beginn des Quellcodeabschnittes, der den Subgraphen bildet.
endNode - Ende des Quellcodeabschnittes, der den Subgraphen bildet.
Returns:
Der letzte GraphNode, an welchem der Kontrollfluss beim Verlassen des Subgraphen weitergeht. Null, wenn der Subgraph mit einem Sprungknoten endet. Die Sprungkante wird später eingefügt.

buildFigureGraph

private static void buildFigureGraph(GraphNode rootGraphNode,
                                     int constraint)
Konstruiert rekursive Nodes und Edges für den DirectedGraph aus der GraphNode-Struktur

Parameters:
rootGraphNode - Der aktuelle GraphNode, zu welchem Nodes und Edges konstruiert werden sollen.
constraint - Offset zu Wichtung der geordneten Node-Platzierung.