KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > bcel > util > ByteSequence


1 /*
2  * Copyright 2000-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */

17 package org.apache.bcel.util;
18
19 import java.io.ByteArrayInputStream JavaDoc;
20 import java.io.DataInputStream JavaDoc;
21
22 /**
23  * Utility class that implements a sequence of bytes which can be read
24  * via the `readByte()' method. This is used to implement a wrapper for the
25  * Java byte code stream to gain some more readability.
26  *
27  * @version $Id: ByteSequence.java 386056 2006-03-15 11:31:56Z tcurdt $
28  * @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
29  */

30 public final class ByteSequence extends DataInputStream JavaDoc {
31
32     private ByteArrayStream byte_stream;
33
34
35     public ByteSequence(byte[] bytes) {
36         super(new ByteArrayStream(bytes));
37         byte_stream = (ByteArrayStream) in;
38     }
39
40
41     public final int getIndex() {
42         return byte_stream.getPosition();
43     }
44
45
46     final void unreadByte() {
47         byte_stream.unreadByte();
48     }
49
50     private static final class ByteArrayStream extends ByteArrayInputStream JavaDoc {
51
52         ByteArrayStream(byte[] bytes) {
53             super(bytes);
54         }
55
56
57         final int getPosition() {
58             return pos;
59         } // is protected in ByteArrayInputStream
60

61
62         final void unreadByte() {
63             if (pos > 0) {
64                 pos--;
65             }
66         }
67     }
68 }
69
Popular Tags