Пример #1
0
        public virtual void WriteCopyTable(BinaryWriter bw, DBEntry entry)
        {
            if (HasOffsetTable || CopyTableSize == 0)
            {
                return;
            }

            int index    = entry.Data.Columns.IndexOf(entry.Key);
            var copyRows = entry.GetCopyRows();

            if (copyRows.Count() > 0)
            {
                int size = 0;
                foreach (var copies in copyRows)
                {
                    int keyindex = copies.First();
                    foreach (var c in copies.Skip(1))
                    {
                        bw.Write(c);
                        bw.Write(keyindex);
                        size += sizeof(int) + sizeof(int);
                    }
                }

                //Set CopyTableSize
                long pos = bw.BaseStream.Position;
                bw.Scrub(0x28);
                bw.Write(size);
                bw.Scrub(pos);
            }
        }
Пример #2
0
        public void WriteCopyTable(BinaryWriter bw, DBEntry entry)
        {
            if (CopyTableSize == 0)
            {
                return;                     //Only if the original file had one
            }
            var copyRows = entry.GetCopyRows();

            if (copyRows.Count() > 0)
            {
                int size = 0;
                foreach (var copies in copyRows)
                {
                    int keyIndex = ((DataRow)copies.Key).Field <int>(IdIndex);
                    foreach (var copyid in copies.Copies)
                    {
                        bw.Write((int)copyid);
                        bw.Write(keyIndex);
                        size += sizeof(int) + sizeof(int);
                    }
                }

                //Set CopyTableSize
                bw.Scrub(0x28);
                bw.Write(size);
            }
        }
Пример #3
0
        public virtual void WriteCopyTable(BinaryWriter bw, DBEntry entry)
        {
            if (HasOffsetTable || CommonDataTableSize > 0)
            {
                return;
            }

            int index    = entry.Data.Columns.IndexOf(entry.Key);
            var copyRows = entry.GetCopyRows();

            if (copyRows.Count() > 0)
            {
                int size = 0;
                foreach (var copies in copyRows)
                {
                    int keyIndex = ((DataRow)copies.Key).Field <int>(index);
                    foreach (var copyid in copies.Copies)
                    {
                        bw.Write((int)copyid);
                        bw.Write(keyIndex);
                        size += sizeof(int) + sizeof(int);
                    }
                }

                //Set CopyTableSize
                long pos = bw.BaseStream.Position;
                bw.Scrub(0x28);
                bw.Write(size);
                bw.Scrub(pos);
            }
        }
Пример #4
0
        public virtual void WriteCopyTable <T>(BinaryWriter bw, DBEntry <T> entry) where T : class
        {
            if (HasOffsetTable || CopyTableSize == 0)
            {
                return;
            }

            var copyRows = entry.GetCopyRows();

            if (copyRows.Count() > 0)
            {
                int size = 0;
                foreach (var copies in copyRows)
                {
                    int keyIndex = (int)entry.PrimaryKey.GetValue((T)copies.Key);
                    foreach (int copyid in copies.Value)
                    {
                        bw.Write((int)copyid);
                        bw.Write(keyIndex);
                        size += sizeof(int) + sizeof(int);
                    }
                }

                //Set CopyTableSize
                long pos = bw.BaseStream.Position;
                bw.Scrub(0x28);
                bw.Write(size);
                bw.Scrub(pos);
            }
        }