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.CharSequence
Adapter of reader class to CharSequence interface. Due to behavior differences CharSequence is not implemented perfectly.
-
-
Field Summary
Fields Modifier and Type Field Description private Buffer
buffer
static int
DEFAULT_BUFFER_LENGTH
static int
DEFAULT_LOOKAHEAD
static int
INFINITE_LENGTH
Value to be used as length when it is unknown.private int
length
private int
lookahead
private int
position
private java.io.Reader
reader
-
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 char
charAt(int index)
private void
fillBuffer(int index)
private int
getMinIndex()
private int
getRelativeIndex(int index)
Calculate buffer relative index from sequence index.int
length()
private void
readCharacter()
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.
-
-
-
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_VALUE
because 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_VALUE
because 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:
length
in interfacejava.lang.CharSequence
-
charAt
public char charAt(int index)
- Specified by:
charAt
in 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:
subSequence
in 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()
-
-