Class ReaderCharSequence

java.lang.Object
net.loomchild.segment.srx.legacy.ReaderCharSequence
All Implemented Interfaces:
CharSequence

public class ReaderCharSequence extends Object implements CharSequence
Adapter of reader class to CharSequence interface. Due to behavior differences CharSequence is not implemented perfectly.
  • Field Details

    • DEFAULT_BUFFER_LENGTH

      public static final int DEFAULT_BUFFER_LENGTH
      See Also:
    • DEFAULT_LOOKAHEAD

      public static final int DEFAULT_LOOKAHEAD
      See Also:
    • INFINITE_LENGTH

      public static final int INFINITE_LENGTH
      Value to be used as length when it is unknown. It must be less than Integer.MAX_VALUE because some code may add something to length.
      See Also:
    • reader

      private Reader reader
    • lookahead

      private int lookahead
    • buffer

      private Buffer buffer
    • position

      private int position
    • length

      private int length
  • Constructor Details

    • ReaderCharSequence

      public ReaderCharSequence(Reader reader, int bufferLength, int length, int lookahead)
      Create.
      Parameters:
      reader - reader from which char sequence will be read
      bufferLength - size of the character buffer
      length - length of the input; when it cannot be determined it can be set to INFINITE_LENGTH (max value); cannot be set to Integer.MAX_VALUE because it may cause overflow.
      lookahead - number of characters to read after current position
    • ReaderCharSequence

      public ReaderCharSequence(Reader reader, int bufferLength, int length)
    • ReaderCharSequence

      public ReaderCharSequence(Reader reader, int bufferLength)
    • ReaderCharSequence

      public ReaderCharSequence(Reader reader)
  • Method Details

    • length

      public int length()
      Specified by:
      length in interface CharSequence
    • charAt

      public char charAt(int index)
      Specified by:
      charAt in interface CharSequence
    • subSequence

      public 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 interface 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()