package synthesijer.scheduler.opt; import java.util.Hashtable; import synthesijer.scheduler.Op; import synthesijer.scheduler.SchedulerBoard; import synthesijer.scheduler.SchedulerInfo; import synthesijer.scheduler.SchedulerItem; import synthesijer.scheduler.SchedulerSlot; public class RemoveUnreachableSlot implements SchedulerInfoOptimizer{ public SchedulerInfo opt(SchedulerInfo info){ SchedulerInfo result = info.getSameInfo(); for(SchedulerBoard b: info.getBoardsList()){ result.addBoard(conv(b)); } return result; } public String getKey(){ return "remove_unreachable_slot"; } Hashtable<Integer, Boolean> usedFlag; public SchedulerBoard conv(SchedulerBoard src){ usedFlag = new Hashtable<>(); for(SchedulerSlot slot: src.getSlots()){ for(int id: slot.getNextStep()){ usedFlag.put(id, true); } } SchedulerBoard ret = src.genSameEnvBoard(); for(SchedulerSlot slot: src.getSlots()){ if(usedFlag.containsKey(slot.getStepId())){ ret.addSlot(slot); } } return ret; } }