Пример #1
0
        public override void WriteHeader(BinaryWriter bw, DBEntry entry)
        {
            base.WriteHeader(bw, entry);

            Tuple <int, int> minmax = entry.MinMax();

            if (MaxId == 0) //Irrelevant if header doesn't use this
            {
                minmax = new Tuple <int, int>(0, 0);
            }

            bw.Write(TableHash);
            bw.Write(Build);
            bw.Write(TimeStamp);

            bw.Write(minmax.Item1);
            bw.Write(minmax.Item2);

            bw.Write(Locale);
            bw.Write(CopyTableSize);

            if (MaxId != 0 && Build > 12880)
            {
                List <int>   IndiciesTable     = new List <int>();
                List <short> StringLengthTable = new List <short>();

                Dictionary <int, short> stringlengths = entry.GetStringLengths();
                int x = 0;
                for (int i = minmax.Item1; i <= minmax.Item2; i++)
                {
                    if (stringlengths.ContainsKey(i))
                    {
                        StringLengthTable.Add(stringlengths[i]);
                        IndiciesTable.Add(++x);
                    }
                    else
                    {
                        IndiciesTable.Add(0);
                        StringLengthTable.Add(0);
                    }
                }

                //Write the data
                bw.WriteArray(IndiciesTable.ToArray());
                bw.WriteArray(StringLengthTable.ToArray());
            }
        }