public class Cfg extends Object implements Graph<CfgNode<?>,CfgEdge,CfgTransformer>
Constructor and Description |
---|
Cfg() |
Modifier and Type | Method and Description |
---|---|
void |
addGraphInEdge(CfgEdge edge)
Add graph incoming edge.
|
void |
addGraphOutEdge(CfgEdge edge)
Add graph outgoing edge.
|
void |
addIn(CfgNode<?> node,
CfgEdge edge)
Add incoming edge to the node.
|
<N extends CfgNode<?>> |
addNode(N node)
Add new node to the graph.
|
void |
addOut(CfgNode<?> node,
CfgEdge edge)
Add outgoing edge from the node.
|
Object |
getEdgeData(CfgEdge edge) |
CfgNode<?> |
getEnd(CfgEdge e)
Returns edge end node.
|
ArrayList<CfgEdge> |
getGraphInEdges()
Returns graph incoming edges.
|
ArrayList<CfgEdge> |
getGraphOutEdges()
Returns graph outgoing edges.
|
List<CfgEdge> |
getInEdges(CfgNode<?> cfgNode)
Returns edges coming into node.
|
ArrayList<CfgNode<?>> |
getNodes()
Returns all nodes in the graph.
|
List<CfgEdge> |
getOutEdges(CfgNode<?> cfgNode)
Returns edges originating from the node.
|
CfgNode<?> |
getStart(CfgEdge e)
Returns edge start node.
|
String |
print()
Returns string representation of the graph.
|
<A extends Assumption<A>> |
printWithAssumptions(Map<CfgEdge,A> map)
Returns string representation of the graph with all assumptions along its
edges.
|
void |
setEdgeData(CfgEdge edge,
Object data) |
String |
toString() |
boolean |
transform(CfgNode<?> node,
CfgTransformer actualizer)
Transforms the node with transformer.
|
public void addGraphInEdge(CfgEdge edge)
public void addGraphOutEdge(CfgEdge edge)
public <N extends CfgNode<?>> N addNode(N node)
public Object getEdgeData(CfgEdge edge)
getEdgeData
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public CfgNode<?> getEnd(CfgEdge e)
getEnd
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public ArrayList<CfgEdge> getGraphInEdges()
getGraphInEdges
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public ArrayList<CfgEdge> getGraphOutEdges()
getGraphOutEdges
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public List<CfgEdge> getInEdges(CfgNode<?> cfgNode)
getInEdges
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public ArrayList<CfgNode<?>> getNodes()
getNodes
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public List<CfgEdge> getOutEdges(CfgNode<?> cfgNode)
getOutEdges
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public CfgNode<?> getStart(CfgEdge e)
getStart
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public String print()
print
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public <A extends Assumption<A>> String printWithAssumptions(Map<CfgEdge,A> map)
printWithAssumptions
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public void setEdgeData(CfgEdge edge, Object data)
setEdgeData
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
public boolean transform(CfgNode<?> node, CfgTransformer actualizer)
transform
in interface Graph<CfgNode<?>,CfgEdge,CfgTransformer>
true
if there were changes made by transformer. While
transformation should be always sound, it might be impossible to apply
it in current context due to complexities of underlying structures. E.g.
it is impossible to delete if statement test expression, while it is not
evaluated if statement is not reachable. In this case transformer can
return false
and do no changes.Copyright © 2018. All rights reserved.