package tarau.jinni; import java.util.Vector; import java.util.Enumeration; /** Merges a List of Sources into a new Source which (fairly) iterates over them breadth first. */ class SourceMerger extends JavaSource { SourceMerger(Const Xs,Prog p) { super(p); this.Q=new Queue(Copier.ConsToVector(Xs)); } private Queue Q; public Term getElement() { if(null==Q) return null; while(!Q.isEmpty()) { Source current=(Source)Q.deq(); if(null==current) continue; Term T=current.getElement(); if(null==T) continue; Q.enq(current); return T; } return null; } }