pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / src / java / org / apache / lucene / store / ByteArrayDataOutput.java
1 package org.apache.lucene.store;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * 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 org.apache.lucene.util.BytesRef;
21
22 /**
23  * @lucene.experimental
24  */
25 public class ByteArrayDataOutput extends DataOutput {
26   private byte[] bytes;
27
28   private int pos;
29   private int limit;
30
31   public ByteArrayDataOutput(byte[] bytes) {
32     reset(bytes);
33   }
34
35   public ByteArrayDataOutput(byte[] bytes, int offset, int len) {
36     reset(bytes, offset, len);
37   }
38
39   public ByteArrayDataOutput() {
40     reset(BytesRef.EMPTY_BYTES);
41   }
42
43   public void reset(byte[] bytes) {
44     reset(bytes, 0, bytes.length);
45   }
46   
47   public void reset(byte[] bytes, int offset, int len) {
48     this.bytes = bytes;
49     pos = offset;
50     limit = offset + len;
51   }
52   
53   public int getPosition() {
54     return pos;
55   }
56
57   @Override
58   public void writeByte(byte b) {
59     assert pos < limit;
60     bytes[pos++] = b;
61   }
62
63   @Override
64   public void writeBytes(byte[] b, int offset, int length) {
65     assert pos + length <= limit;
66     System.arraycopy(b, offset, bytes, pos, length);
67     pos += length;
68   }
69 }