package code.type;

import java.util.Iterator;
import java.util.Vector;
import code.type.TableHolder;

/**
 * This class collects all the type expressions in a Holder class
 * type expression cache into a convenient structure for iterating.
 * QUESTION: Can type expressions be altered using this iterator???
 *
 * @author David Shapiro
 * @since September 28, 2005
 */

class HolderIterator implements Iterator<TypeExpression>
{

  private Vector<TypeExpression> typeExprs = null;    // list of type expressions in cache

  private Iterator<TypeExpression> iterator = null;   // iterates through above list



  HolderIterator() {}


  HolderIterator(TableHolder cache)
  {
    typeExprs = new Vector<TypeExpression>();

    for (Holder h : cache.levelMap.values())   // create type expression list
      h.iterate(typeExprs);

    iterator = typeExprs.iterator();              // initialize iterator
  }


  public boolean hasNext()
  {
    return iterator.hasNext();
  }


  public TypeExpression next()
  {
    return iterator.next();
  }


  public void remove() {}

}

