version info reader implemented
[idea/community.git] / tools / launcher-generator / src / com / pme / exe / res / vi / StringFileInfo.java
index 2133db8c9b34836b8df3290bce83084e0fe4ce70..81269b5bb58cb82a9092c2d8fc2bf363a3a81dc1 100644 (file)
 package com.pme.exe.res.vi;
 
 import com.pme.exe.Bin;
+import com.pme.util.OffsetTrackingInputStream;
 
 import java.io.DataInput;
 import java.io.IOException;
 
-/**
- * Date: May 10, 2006
- * Time: 8:01:15 PM
- */
 public class StringFileInfo extends Bin.Structure {
   public StringFileInfo() {
     super("StringFileInfo");
-    addMember( new Word( "wLength" ) );
-    addMember( new Word( "wValueLength" ) );
-    addMember( new Word( "wType" ) );
-    addMember( new Bytes( "Bytes", 30 ) );
+    addMember(new Word("wLength"));
+    addMember(new Word("wValueLength"));
+    addMember(new Word("wType"));
+    addMember(new WChar("szKey"));
+    addMember(new Padding(4));
   }
-  public void readWithPadding( DataInput stream, long offset ) throws IOException {
-    read( stream );
-    StringTableReader stringTableReader = new StringTableReader();
-    stringTableReader.readWithPadding( stream, offset + sizeInBytes() );
-    addMember( stringTableReader );
+
+  @Override
+  public void read(DataInput stream) throws IOException {
+    OffsetTrackingInputStream inputStream = (OffsetTrackingInputStream) stream;
+    long startOffset = inputStream.getOffset();
+    super.read(stream);
+    long length = getValue("wLength");
+    int i = 0;
+    while(inputStream.getOffset() < startOffset + length) {
+      StringTable stringTableReader = new StringTable("StringTable" + (i++));
+      stringTableReader.read(inputStream);
+      addMember(stringTableReader);
+    }
   }
 }