LLEnumeration.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr.collections.impl;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/collections/impl/LLEnumeration.java#1 $
  7.  */
  8. import antlr.collections.List;
  9. import antlr.collections.Stack;
  10. import java.util.Enumeration;
  11. import java.util.NoSuchElementException;
  12. import antlr.collections.impl.LLCell;
  13. /**An enumeration of a LList.  Maintains a cursor through the list.
  14.  * bad things would happen if the list changed via another thread
  15.  * while we were walking this list.
  16.  */
  17. final class LLEnumeration implements Enumeration {
  18. LLCell cursor;
  19. LList list;
  20. /**Create an enumeration attached to a LList*/
  21. public LLEnumeration(LList l) {list = l; cursor=list.head;}
  22. /** Return true/false depending on whether there are more
  23.  * elements to enumerate.
  24.  */
  25. public boolean hasMoreElements() {
  26. if ( cursor!=null ) return true;
  27. else return false;
  28. }
  29. /**Get the next element in the enumeration.  Destructive in that
  30.  * the returned element is removed from the enumeration.  This
  31.  * does not affect the list itself.
  32.  * @return the next object in the enumeration.
  33.  */
  34. public Object nextElement() {
  35. if ( !hasMoreElements() ) throw new NoSuchElementException();
  36. LLCell p = cursor;
  37. cursor = cursor.next;
  38. return p.data;
  39. }
  40. }