Class FiniteStringsIterator

java.lang.Object
org.apache.lucene.util.automaton.FiniteStringsIterator
Direct Known Subclasses:
LimitedFiniteStringsIterator

public class FiniteStringsIterator extends Object
Iterates all accepted strings.

If the Automaton has cycles then this iterator may throw an IllegalArgumentException, but this is not guaranteed!

Be aware that the iteration order is implementation dependent and may change across releases.

If the automaton is not determinized then it's possible this iterator will return duplicates.

  • Field Details

    • EMPTY

      private static final IntsRef EMPTY
      Empty string.
    • a

      private final Automaton a
      Automaton to create finite string from.
    • endState

      private final int endState
      The state where each path should stop or -1 if only accepted states should be final.
    • pathStates

      private final BitSet pathStates
      Tracks which states are in the current path, for cycle detection.
    • string

      private final IntsRefBuilder string
      Builder for current finite string.
    • nodes

      Stack to hold our current state in the recursion/iteration.
    • emitEmptyString

      private boolean emitEmptyString
      Emit empty string?.
  • Constructor Details

    • FiniteStringsIterator

      public FiniteStringsIterator(Automaton a)
      Constructor.
      Parameters:
      a - Automaton to create finite string from.
    • FiniteStringsIterator

      public FiniteStringsIterator(Automaton a, int startState, int endState)
      Constructor.
      Parameters:
      a - Automaton to create finite string from.
      startState - The starting state for each path.
      endState - The state where each path should stop or -1 if only accepted states should be final.
  • Method Details

    • next

      public IntsRef next()
      Generate next finite string. The return value is just valid until the next call of this method!
      Returns:
      Finite string or null, if no more finite strings are available.
    • growStack

      private void growStack(int depth)
      Grow path stack, if required.