1 30 31 package de.susebox.jtopas; 32 33 34 38 55 public class CharArraySource implements CharSequenceTokenizerSource { 56 57 61 68 public CharArraySource(char[] data) { 69 this(data, 0, (data != null) ? data.length : -1); 70 } 71 72 80 public CharArraySource(char[] data, int offset, int length) { 81 _offset = offset; 82 if (data == null || length < 0) { 83 _data = null; 84 _length = -1; 85 } else { 86 _data = data; 87 _length = length; 88 } 89 } 90 91 92 96 106 public int read(char[] cbuf, final int offset, final int maxChars) throws Exception { 107 int left = Math.min(_length - _readOffset, maxChars); 108 109 if (left > 0) { 110 System.arraycopy(_data, _offset + _readOffset, cbuf, offset, left); 111 _readOffset += left; 112 return left; 113 } else { 114 return -1; 115 } 116 } 117 118 122 130 public char charAt(int index) { 131 return _data[_offset + index]; 132 } 133 134 139 public int length() { 140 return _length; 141 } 142 143 152 public CharSequence subSequence(int start, int end) { 153 return new CharArraySource(_data, _offset + start, end - start); 154 } 155 156 162 public String toString() { 163 return new String (_data, _offset, _length); 164 } 165 166 167 private char[] _data = null; 171 private int _offset = 0; 172 private int _length = -1; 173 private int _readOffset = 0; 174 } 175 | Popular Tags |