2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.apache.lucene.analysis;
20 import java.io.IOException;
23 * Subclasses of CharFilter can be chained to filter CharStream.
24 * They can be used as {@link java.io.Reader} with additional offset
25 * correction. {@link Tokenizer}s will automatically use {@link #correctOffset}
26 * if a CharFilter/CharStream subclass is used.
28 public abstract class CharFilter extends CharStream {
30 protected CharStream input;
32 protected CharFilter(CharStream in) {
37 * Subclass may want to override to correct the current offset.
39 * @param currentOff current offset
40 * @return corrected offset
42 protected int correct(int currentOff) {
47 * Chains the corrected offset through the input
51 public final int correctOffset(int currentOff) {
52 return input.correctOffset(correct(currentOff));
56 public void close() throws IOException {
61 public int read(char[] cbuf, int off, int len) throws IOException {
62 return input.read(cbuf, off, len);
66 public boolean markSupported(){
67 return input.markSupported();
71 public void mark( int readAheadLimit ) throws IOException {
72 input.mark(readAheadLimit);
76 public void reset() throws IOException {