pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / src / java / org / apache / lucene / analysis / CharFilter.java
1 /**
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
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 package org.apache.lucene.analysis;
19
20 import java.io.IOException;
21
22 /**
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.
27  */
28 public abstract class CharFilter extends CharStream {
29
30   protected CharStream input;
31
32   protected CharFilter(CharStream in) {
33     input = in;
34   }
35
36   /**
37    * Subclass may want to override to correct the current offset.
38    *
39    * @param currentOff current offset
40    * @return corrected offset
41    */
42   protected int correct(int currentOff) {
43     return currentOff;
44   }
45
46   /**
47    * Chains the corrected offset through the input
48    * CharFilter.
49    */
50   @Override
51   public final int correctOffset(int currentOff) {
52     return input.correctOffset(correct(currentOff));
53   }
54
55   @Override
56   public void close() throws IOException {
57     input.close();
58   }
59
60   @Override
61   public int read(char[] cbuf, int off, int len) throws IOException {
62     return input.read(cbuf, off, len);
63   }
64
65   @Override
66   public boolean markSupported(){
67     return input.markSupported();
68   }
69
70   @Override
71   public void mark( int readAheadLimit ) throws IOException {
72     input.mark(readAheadLimit);
73   }
74
75   @Override
76   public void reset() throws IOException {
77     input.reset();
78   }
79 }