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;  }
}

