/* * Created on Mar 6, 2006 */ package org.seqcode.gsebricks.verbs; import java.util.Iterator; /** * @author tdanford */ public class CombinerIterator<A,B,C> implements Iterator<C> { private Iterator<A> aitr; private Iterator<B> bitr; private Combiner<A,B,C> combiner; public CombinerIterator(Combiner<A,B,C> comb, Iterator<A> a, Iterator<B> b) { combiner = comb; aitr = a; bitr = b; } /* (non-Javadoc) * @see java.util.Iterator#hasNext() */ public boolean hasNext() { return aitr.hasNext() || bitr.hasNext(); } /* (non-Javadoc) * @see java.util.Iterator#next() */ public C next() { A first = null; B second = null; if(aitr.hasNext()) { first = aitr.next(); } if(bitr.hasNext()) { second = bitr.next(); } return combiner.execute(first, second); } /* (non-Javadoc) * @see java.util.Iterator#remove() */ public void remove() { throw new UnsupportedOperationException(); } }