Ejemplo n.º 1
0
        public void Write(BinaryWriter bw)
        {
            if (Is64)
            {
                bw.Write((long)FieldCountUnfixed);
            }
            else
            {
                bw.Write(FieldCountUnfixed);
            }
            int offsetSize = (int)bw.BaseStream.Position;

            bw.Write(SizeFields);
            bw.Write(SizeLookup);
            bw.Write(Unknown);
            int offsetStart = (int)bw.BaseStream.Position;

            for (int i = 0; i < FieldCount; i++)
            {
                Fields[i].Write(bw);
            }
            if (SizePadding < 0)
            {
                return;
            }
            if (SizePadding > 0)
            {
                bw.Write(Padding);
            }

            SizeFields  = (int)bw.BaseStream.Position - offsetStart;
            Lookup.Size = SizeLookup;
            Lookup.Write(bw);
            SizeLookup = (int)bw.BaseStream.Position - offsetStart - SizeFields;

            bw.BaseStream.Seek(offsetSize, SeekOrigin.Begin);
            bw.Write(SizeFields);
            bw.Write(SizeLookup);
            bw.BaseStream.Seek(1 + SizeFields + SizeLookup, SeekOrigin.Current);
        }