| | package algorithm; |
---|
| | |
---|
| | import models.*; |
---|
| | import models.dataFlowModel.*; |
---|
| | |
---|
| | public class EdgeTransitionSelectable { |
---|
| | static public void run(ResourceDependencyGraph graph) { |
---|
| | PushPullAttribute ppat = new PushPullAttribute(); |
---|
| | ppat.addOption(PushPullValue.PUSHorPULL); |
---|
| | ppat.addOption(PushPullValue.PUSH); |
---|
| | ppat.addOption(PushPullValue.PULL); |
---|
| | for (Node n : graph.getNodes()) { |
---|
| | if (((StoreAttribute) ((ResourceNode) n).getAttribute()).isNeeded()) { |
---|
| | trackEdges(n); |
---|
| | } |
---|
| | } |
---|
| | for (Edge e : graph.getEdges()) { |
---|
| | if (((ResourceDependency) e).getAttribute() == null) { |
---|
| | ((ResourceDependency) e).setAttribute(ppat); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | static private void trackEdges(Node n) { |
---|
| | PushPullAttribute ppat = new PushPullAttribute(); |
---|
| | ppat.addOption(PushPullValue.PUSH); |
---|
| | for (Node pre : n.getPredecessors()) { |
---|
| | for (Edge in : n.getInEdges()) { |
---|
| | ((ResourceDependency) in).setAttribute(ppat); |
---|
| | } |
---|
| | trackEdges(pre); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |