Javolution 6.0.0 java
CharSequenceReader.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.io;
10 
11 import java.io.IOException;
12 import java.io.Reader;
13 import javolution.lang.MathLib;
15 import javolution.text.Text;
17 
25 public final class CharSequenceReader extends Reader {
26 
30  private CharSequence _input;
31 
35  private int _index;
36 
43  public CharSequenceReader() {}
44 
53  public CharSequenceReader setInput(CharSequence charSequence) {
54  if (_input != null)
55  throw new IllegalStateException("Reader not closed or reset");
56  _input = charSequence;
57  return this;
58  }
59 
67  public boolean ready() throws IOException {
68  if (_input == null)
69  throw new IOException("Reader closed");
70  return true;
71  }
72 
76  public void close() {
77  if (_input != null) {
78  reset();
79  }
80  }
81 
91  public int read() throws IOException {
92  if (_input == null)
93  throw new IOException("Reader closed");
94  return (_index < _input.length()) ? _input.charAt(_index++) : -1;
95  }
96 
108  public int read(char cbuf[], int off, int len) throws IOException {
109  if (_input == null)
110  throw new IOException("Reader closed");
111  final int inputLength = _input.length();
112  if (_index >= inputLength)
113  return -1;
114  final int count = MathLib.min(inputLength - _index, len);
115  final Object csq = _input;
116  if (csq instanceof String) {
117  String str = (String) csq;
118  str.getChars(_index, _index + count, cbuf, off);
119  } else if (csq instanceof Text) {
120  Text txt = (Text) csq;
121  txt.getChars(_index, _index + count, cbuf, off);
122  } else if (csq instanceof TextBuilder) {
123  TextBuilder tb = (TextBuilder) csq;
124  tb.getChars(_index, _index + count, cbuf, off);
125  } else if (csq instanceof CharArray) {
126  CharArray ca = (CharArray) csq;
127  System.arraycopy(ca.array(), _index + ca.offset(), cbuf, off, count);
128  } else { // Generic CharSequence.
129  for (int i = off, n = off + count, j = _index; i < n;) {
130  cbuf[i++] = _input.charAt(j++);
131  }
132  }
133  _index += count;
134  return count;
135  }
136 
144  public void read(Appendable dest) throws IOException {
145  if (_input == null)
146  throw new IOException("Reader closed");
147  dest.append(_input);
148  }
149 
150  @Override
151  public void reset() {
152  _index = 0;
153  _input = null;
154  }
155 
156 }
javolution.text.CharArray
Definition: CharArray.java:36
javolution.io.CharSequenceReader.reset
void reset()
Definition: CharSequenceReader.java:151
javolution
javolution.io.CharSequenceReader.setInput
CharSequenceReader setInput(CharSequence charSequence)
Definition: CharSequenceReader.java:53
javolution.io.CharSequenceReader.read
int read()
Definition: CharSequenceReader.java:91
javolution.lang.MathLib
Definition: MathLib.java:20
javolution.text.Text
Definition: Text.java:62
javolution.text.TextBuilder
Definition: TextBuilder.java:29
javolution.io.CharSequenceReader._index
int _index
Definition: CharSequenceReader.java:35
javolution.text.CharArray.offset
int offset()
Definition: CharArray.java:104
javolution.io.CharSequenceReader.read
int read(char cbuf[], int off, int len)
Definition: CharSequenceReader.java:108
javolution.io.CharSequenceReader.ready
boolean ready()
Definition: CharSequenceReader.java:67
javolution.io.CharSequenceReader._input
CharSequence _input
Definition: CharSequenceReader.java:30
javolution.lang
Definition: Configurable.java:9
javolution.text
Definition: CharArray.java:9
javolution.io.CharSequenceReader
Definition: CharSequenceReader.java:25
javolution.io.CharSequenceReader.close
void close()
Definition: CharSequenceReader.java:76
javolution.text.TextBuilder.getChars
final void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Definition: TextBuilder.java:121
javolution.text.Text.getChars
void getChars(int start, int end, char dest[], int destPos)
Definition: Text.java:1022
javolution.text.CharArray.array
char[] array()
Definition: CharArray.java:86
javolution.io.CharSequenceReader.CharSequenceReader
CharSequenceReader()
Definition: CharSequenceReader.java:43
javolution.io.CharSequenceReader.read
void read(Appendable dest)
Definition: CharSequenceReader.java:144
javolution.lang.MathLib.min
static int min(int x, int y)
Definition: MathLib.java:1010