Package morfologik.fsa
Class ByteSequenceIterator
- java.lang.Object
-
- morfologik.fsa.ByteSequenceIterator
-
- All Implemented Interfaces:
java.util.Iterator<java.nio.ByteBuffer>
public final class ByteSequenceIterator extends java.lang.Object implements java.util.Iterator<java.nio.ByteBuffer>An iterator that traverses the right language of a given node (all sequences reachable from a given node).
-
-
Field Summary
Fields Modifier and Type Field Description private int[]arcsAn arc stack for DFS when processing the automaton.private byte[]bufferA buffer for the current sequence of bytes from the current node to the root.private java.nio.ByteBufferbufferWrapperReusable byte buffer wrapper aroundbuffer.private static intEXPECTED_MAX_STATESDefault expected depth of the recursion stack (estimated longest sequence in the automaton).private FSAfsaThe FSA to which this iterator belongs.private java.nio.ByteBuffernextElementAn internal cache for the next element in the FSAprivate intpositionCurrent processing depth inarcs.
-
Constructor Summary
Constructors Constructor Description ByteSequenceIterator(FSA fsa)Create an instance of the iterator iterating over all automaton sequences.ByteSequenceIterator(FSA fsa, int node)Create an instance of the iterator for a given node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.nio.ByteBufferadvance()Advances to the next available final state.booleanhasNext()Returnstrueif there are still elements in this iterator.java.nio.ByteBuffernext()private voidpushNode(int node)Descends to a given node, adds its arcs to the stack to be traversed.voidremove()Not implemented in this iterator.ByteSequenceIteratorrestartFrom(int node)Restart walking fromnode.
-
-
-
Field Detail
-
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:
- Constant Field Values
-
fsa
private final FSA fsa
The FSA to which this iterator belongs.
-
nextElement
private java.nio.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 java.nio.ByteBuffer bufferWrapper
Reusable byte buffer wrapper aroundbuffer.
-
arcs
private int[] arcs
An arc stack for DFS when processing the automaton.
-
position
private int position
Current processing depth inarcs.
-
-
Constructor Detail
-
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 theFSA.getRootNode()).
-
-
Method Detail
-
restartFrom
public ByteSequenceIterator restartFrom(int node)
Restart walking fromnode. Allows iterator reuse.- Parameters:
node- Restart the iterator fromnode.- Returns:
- Returns
thisfor call chaining.
-
hasNext
public boolean hasNext()
Returnstrueif there are still elements in this iterator.- Specified by:
hasNextin interfacejava.util.Iterator<java.nio.ByteBuffer>
-
next
public java.nio.ByteBuffer next()
- Specified by:
nextin interfacejava.util.Iterator<java.nio.ByteBuffer>- Returns:
- Returns a
ByteBufferwith the sequence corresponding to the next final state in the automaton.
-
advance
private final java.nio.ByteBuffer advance()
Advances to the next available final state.
-
remove
public void remove()
Not implemented in this iterator.- Specified by:
removein interfacejava.util.Iterator<java.nio.ByteBuffer>
-
pushNode
private void pushNode(int node)
Descends to a given node, adds its arcs to the stack to be traversed.
-
-