## net.sf.saxon.om
Class Navigator.BaseEnumeration

    java.lang.Object
      net.sf.saxon.om.AxisIteratorImpl
          net.sf.saxon.om.Navigator.BaseEnumeration

All Implemented Interfaces:
  AxisIterator, SequenceIterator, UnfailingIterator

Direct Known Subclasses:
  Navigator.AncestorEnumeration, Navigator.DescendantEnumeration, Navigator.FollowingEnumeration, Navigator.PrecedingEnumeration

Enclosing class:
  Navigator

    public abstract static class Navigator.BaseEnumeration

extends AxisIteratorImpl

BaseEnumeration is an abstract implementation of an AxisIterator, it simplifies the implementation of the underlying AxisIterator by requiring it to provide only two methods: advance(), and getAnother().

NOTA BENE: BaseEnumeration does not maintain the value of the position variable. It must therefore either (a) be wrapped in an AxisFilter, which does maintain position, or (b) be subclassed by a class that maintains position itself.

Field Summary

Fields inherited from class net.sf.saxon.om.AxisIteratorImpl
`current, position`

Fields inherited from interface net.sf.saxon.om.SequenceIterator
`GROUNDED, LAST_POSITION_FINDER, LOOKAHEAD`

Constructor Summary
`Navigator.BaseEnumeration()`

Method Summary
`abstract void` `advance()` The advance() method must be provided in each concrete implementation.
`abstract SequenceIterator` `getAnother()` Get another SequenceIterator that iterates over the same items as the original, but which is repositioned at the start of the sequence.
`Item` `next()` Get the next item in the sequence.

Methods inherited from class net.sf.saxon.om.AxisIteratorImpl
`atomize, close, current, getProperties, getStringValue, iterateAxis, moveNext, position`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Navigator.BaseEnumeration

    public Navigator.BaseEnumeration()

Method Detail

### next

    public final Item next()

  Description copied from interface: `SequenceIterator`
  Get the next item in the sequence. This method changes the state of the iterator, in particular it affects the result of subsequent calls of position() and current().

  Returns:
    the next item, or null if there are no more items. Once a call on next() has returned null, no further calls should be made. The preferred action for an iterator if subsequent calls on next() are made is to return null again, and all implementations within Saxon follow this rule.

### advance

    public abstract void advance()

  The advance() method must be provided in each concrete implementation. It must leave the variable current set to the next node to be returned in the iteration, or to null if there are no more nodes to be returned.

### getAnother

    public abstract SequenceIterator getAnother()

  Description copied from interface: `SequenceIterator`
  Get another SequenceIterator that iterates over the same items as the original, but which is repositioned at the start of the sequence.

  This method allows access to all the items in the sequence without disturbing the current position of the iterator. Internally, its main use is in evaluating the last() function.

  This method does not change the state of the iterator.

  Returns:
    a SequenceIterator that iterates over the same items, positioned before the first item

Copyright (c) Saxonica Limited. All rights reserved.