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); } }
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); } }
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); } }
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); } }