version info reader implemented
[idea/community.git] / tools / launcher-generator / src / com / pme / exe / res / vi / StringTable.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.exe.res.vi;
19
20 import com.pme.exe.Bin;
21 import com.pme.util.OffsetTrackingInputStream;
22
23 import java.io.DataInput;
24 import java.io.IOException;
25
26 public class StringTable extends Bin.Structure {
27
28   public StringTable(String name) {
29     super(name);
30     addMember(new Word("wLength"));
31     addMember(new Word("wValueLength"));
32     addMember(new Word("wType"));
33     addMember(new WChar("szKey"));
34     addMember(new Padding(4));
35   }
36
37   public void read(DataInput stream) throws IOException {
38     OffsetTrackingInputStream inputStream = (OffsetTrackingInputStream) stream;
39     long startOffset = inputStream.getOffset();
40     super.read(stream);
41     long length = getValue("wLength");
42     int i = 0;
43     while(inputStream.getOffset() < startOffset + length) {
44       StringTableEntry stringTableEntry = new StringTableEntry();
45       stringTableEntry.read(inputStream);
46       addMember(stringTableEntry);
47     }
48   }
49 }