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); }*/ for(Edge e:((ResourceNode) n).getInEdges()) { ((ResourceDependency) e).setAttribute(ppat); } } }