Class ByteSequenceIterator

java.lang.Object
morfologik.fsa.ByteSequenceIterator
All Implemented Interfaces:
Iterator<ByteBuffer>

public final class ByteSequenceIterator extends Object implements Iterator<ByteBuffer>
An iterator that traverses the right language of a given node (all sequences reachable from a given node).
  • Field Details

    • EXPECTED_MAX_STATES

      private static final int EXPECTED_MAX_STATES
      Default expected depth of the recursion stack (estimated longest sequence in the automaton). Buffers expand by the same value if exceeded.
      See Also:
    • fsa

      private final FSA fsa
      The FSA to which this iterator belongs.
    • nextElement

      private ByteBuffer nextElement
      An internal cache for the next element in the FSA
    • buffer

      private byte[] buffer
      A buffer for the current sequence of bytes from the current node to the root.
    • bufferWrapper

      private ByteBuffer bufferWrapper
      Reusable byte buffer wrapper around buffer.
    • arcs

      private int[] arcs
      An arc stack for DFS when processing the automaton.
    • position

      private int position
      Current processing depth in arcs.
  • Constructor Details

    • ByteSequenceIterator

      public ByteSequenceIterator(FSA fsa)
      Create an instance of the iterator iterating over all automaton sequences.
      Parameters:
      fsa - The automaton to iterate over.
    • ByteSequenceIterator

      public ByteSequenceIterator(FSA fsa, int node)
      Create an instance of the iterator for a given node.
      Parameters:
      fsa - The automaton to iterate over.
      node - The starting node's identifier (can be the FSA.getRootNode()).
  • Method Details

    • restartFrom

      public ByteSequenceIterator restartFrom(int node)
      Restart walking from node. Allows iterator reuse.
      Parameters:
      node - Restart the iterator from node.
      Returns:
      Returns this for call chaining.
    • hasNext

      public boolean hasNext()
      Returns true if there are still elements in this iterator.
      Specified by:
      hasNext in interface Iterator<ByteBuffer>
    • next

      public ByteBuffer next()
      Specified by:
      next in interface Iterator<ByteBuffer>
      Returns:
      Returns a ByteBuffer with the sequence corresponding to the next final state in the automaton.
    • advance

      private final ByteBuffer advance()
      Advances to the next available final state.
    • remove

      public void remove()
      Not implemented in this iterator.
      Specified by:
      remove in interface Iterator<ByteBuffer>
    • pushNode

      private void pushNode(int node)
      Descends to a given node, adds its arcs to the stack to be traversed.