public static StringTable ReadStringTable(this BinaryStream stream, StringCodec codec) { ushort maxLength = stream.ReadUShort(); int count = stream.ReadUShort(); var table = new StringTable { MaxLength = maxLength }; for (int i = 0; i < count; i++) { table.Add(codec.ReadCodedString(stream, maxLength)); } return(table); }
public static List <string> ReadStringOffsetTable(this BinaryStream stream, StringCodec codec, bool isScript, bool multiplyByTwo, int dataPointer) { var strings = new List <string>(); var offsetReader = new ShortOffsetTableReader(stream, dataPointer, multiplyByTwo); while (!offsetReader.EndOfTable) { if (offsetReader.Next()) { strings.Add(isScript ? codec.ReadScriptString(stream) : codec.ReadCodedString(stream)); } else { strings.Add(null); } } return(strings); }