Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / algorithm / EdgeTransitionSelectable.java
yoichiro on 6 Apr 2020 1 KB バグ修正
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);
		}
	}
}