version info reader implemented
[idea/community.git] / tools / launcher-generator / src / com / pme / util / OffsetTrackingInputStream.java
1 /*
2  * Copyright 2006 ProductiveMe Inc.
3  * Copyright 2013 JetBrains s.r.o.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * 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 com.pme.util;
19
20 import java.io.DataInput;
21 import java.io.DataInputStream;
22 import java.io.IOException;
23
24 /**
25  * @author yole
26  */
27 public class OffsetTrackingInputStream implements DataInput {
28   private final DataInputStream myBaseStream;
29   private long myOffset = 0;
30
31   public OffsetTrackingInputStream(DataInputStream baseStream) {
32     myBaseStream = baseStream;
33   }
34
35   public long getOffset() {
36     return myOffset;
37   }
38
39   @Override
40   public void readFully(byte[] b) throws IOException {
41     myBaseStream.readFully(b);
42     myOffset += b.length;
43   }
44
45   @Override
46   public void readFully(byte[] b, int off, int len) throws IOException {
47     myBaseStream.readFully(b, off, len);
48     myOffset += len;
49   }
50
51   @Override
52   public int skipBytes(int n) throws IOException {
53     int skipped = myBaseStream.skipBytes(n);
54     myOffset += skipped;
55     return skipped;
56   }
57
58   @Override
59   public boolean readBoolean() throws IOException {
60     myOffset++;
61     return myBaseStream.readBoolean();
62   }
63
64   @Override
65   public byte readByte() throws IOException {
66     myOffset++;
67     return myBaseStream.readByte();
68   }
69
70   @Override
71   public int readUnsignedByte() throws IOException {
72     myOffset++;
73     return myBaseStream.readUnsignedByte();
74   }
75
76   @Override
77   public short readShort() throws IOException {
78     myOffset += 2;
79     return myBaseStream.readShort();
80   }
81
82   @Override
83   public int readUnsignedShort() throws IOException {
84     myOffset += 2;
85     return myBaseStream.readUnsignedShort();
86   }
87
88   @Override
89   public char readChar() throws IOException {
90     myOffset += 2;
91     return myBaseStream.readChar();
92   }
93
94   @Override
95   public int readInt() throws IOException {
96     myOffset += 4;
97     return myBaseStream.readInt();
98   }
99
100   @Override
101   public long readLong() throws IOException {
102     myOffset += 8;
103     return myBaseStream.readLong();
104   }
105
106   @Override
107   public float readFloat() throws IOException {
108     myOffset += 4;
109     return myBaseStream.readFloat();
110   }
111
112   @Override
113   public double readDouble() throws IOException {
114     myOffset += 8;
115     return myBaseStream.readDouble();
116   }
117
118   @Override
119   public String readLine() throws IOException {
120     throw new UnsupportedOperationException();
121   }
122
123   @Override
124   public String readUTF() throws IOException {
125     throw new UnsupportedOperationException();
126   }
127 }