Package net.loomchild.segment.srx.legacy
Class ReaderCharSequence
- java.lang.Object
-
- net.loomchild.segment.srx.legacy.ReaderCharSequence
-
- All Implemented Interfaces:
java.lang.CharSequence
public class ReaderCharSequence extends java.lang.Object implements java.lang.CharSequenceAdapter of reader class to CharSequence interface. Due to behavior differences CharSequence is not implemented perfectly.
-
-
Field Summary
Fields Modifier and Type Field Description private Bufferbufferstatic intDEFAULT_BUFFER_LENGTHstatic intDEFAULT_LOOKAHEADstatic intINFINITE_LENGTHValue to be used as length when it is unknown.private intlengthprivate intlookaheadprivate intpositionprivate java.io.Readerreader
-
Constructor Summary
Constructors Constructor Description ReaderCharSequence(java.io.Reader reader)ReaderCharSequence(java.io.Reader reader, int bufferLength)ReaderCharSequence(java.io.Reader reader, int bufferLength, int length)ReaderCharSequence(java.io.Reader reader, int bufferLength, int length, int lookahead)Create.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description charcharAt(int index)private voidfillBuffer(int index)private intgetMinIndex()private intgetRelativeIndex(int index)Calculate buffer relative index from sequence index.intlength()private voidreadCharacter()java.lang.CharSequencesubSequence(int start, int end)The length of returned subsequence can be smaller than (end - start) when the end of stream is reached.
-
-
-
Field Detail
-
DEFAULT_BUFFER_LENGTH
public static final int DEFAULT_BUFFER_LENGTH
- See Also:
- Constant Field Values
-
DEFAULT_LOOKAHEAD
public static final int DEFAULT_LOOKAHEAD
- See Also:
- Constant Field Values
-
INFINITE_LENGTH
public static final int INFINITE_LENGTH
Value to be used as length when it is unknown. It must be less thanInteger.MAX_VALUEbecause some code may add something to length.- See Also:
- Constant Field Values
-
reader
private java.io.Reader reader
-
lookahead
private int lookahead
-
buffer
private Buffer buffer
-
position
private int position
-
length
private int length
-
-
Constructor Detail
-
ReaderCharSequence
public ReaderCharSequence(java.io.Reader reader, int bufferLength, int length, int lookahead)Create.- Parameters:
reader- reader from which char sequence will be readbufferLength- size of the character bufferlength- length of the input; when it cannot be determined it can be set toINFINITE_LENGTH(max value); cannot be set toInteger.MAX_VALUEbecause it may cause overflow.lookahead- number of characters to read after current position
-
ReaderCharSequence
public ReaderCharSequence(java.io.Reader reader, int bufferLength, int length)
-
ReaderCharSequence
public ReaderCharSequence(java.io.Reader reader, int bufferLength)
-
ReaderCharSequence
public ReaderCharSequence(java.io.Reader reader)
-
-
Method Detail
-
length
public int length()
- Specified by:
lengthin interfacejava.lang.CharSequence
-
charAt
public char charAt(int index)
- Specified by:
charAtin interfacejava.lang.CharSequence
-
subSequence
public java.lang.CharSequence subSequence(int start, int end)The length of returned subsequence can be smaller than (end - start) when the end of stream is reached.- Specified by:
subSequencein interfacejava.lang.CharSequence
-
getRelativeIndex
private int getRelativeIndex(int index)
Calculate buffer relative index from sequence index.
The equation is this: relative index = index - (position - buffer length) Example: position = 10 buffer length = 5 index = 7 | | position - buffer | | index length V V stream |-|-|-|-|-|-|-|-|-|-| 0 1 2 3 4 5 6 7 8 9 10 <--- position | | relative index V buffer |-|-|-|-|-| 0 1 2 3 4 relative index = 2- Parameters:
index- sequence index- Returns:
- buffer relative index
-
getMinIndex
private int getMinIndex()
-
fillBuffer
private void fillBuffer(int index)
-
readCharacter
private void readCharacter()
-
-