01: package org.apache.lucene.store;
02:
03: /**
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: */
19:
20: import java.io.IOException;
21: import gnu.gcj.RawData;
22:
23: /** Native file-based {@link IndexInput} implementation, using GCJ.
24: *
25: * @author Doug Cutting
26: */
27: public class GCJIndexInput extends IndexInput {
28:
29: private String file;
30: private int fd;
31: private long fileLength;
32: public RawData data;
33: public RawData pointer;
34: private boolean isClone;
35:
36: public GCJIndexInput(String file) throws IOException {
37: this .file = file;
38: open();
39: }
40:
41: private native void open() throws IOException;
42:
43: public native byte readByte() throws IOException;
44:
45: public native void readBytes(byte[] b, int offset, int len)
46: throws IOException;
47:
48: public native int readVInt() throws IOException;
49:
50: public native long getFilePointer();
51:
52: public native void seek(long pos) throws IOException;
53:
54: public long length() {
55: return fileLength;
56: }
57:
58: public Object clone() {
59: GCJIndexInput clone = (GCJIndexInput) super .clone();
60: clone.isClone = true;
61: return clone;
62: }
63:
64: public void close() throws IOException {
65: if (!isClone)
66: doClose();
67: }
68:
69: private native void doClose() throws IOException;
70:
71: }
|