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);
        }
        public static List <string> ReadStringOffsetTable(this WideOffsetTableReader offsetTableReader, StringCodec codec,
                                                          bool isScript, bool multiplyByTwo)
        {
            int offsetPointer = offsetTableReader.NextPointer();
            int dataPointer   = offsetTableReader.NextPointer();
            var stream        = offsetTableReader.Stream;

            if (offsetPointer != 0 && dataPointer != 0)
            {
                stream.Position = offsetPointer;
                return(stream.ReadStringOffsetTable(codec, isScript, multiplyByTwo, dataPointer));
            }
            else
            {
                return(null);
            }
        }
 public static StringTable ReadStringTable(this WideOffsetTableReader offsetTableReader, StringCodec codec)
 {
     offsetTableReader.Next();
     return(offsetTableReader.Stream.ReadStringTable(codec));
 }