public void Load(ITableReader reader) { Assert(reader != null); byte[] sign = Signature; byte[] bytes = reader.ReadBytes(sign.Length); for (int i = 0; i < sign.Length; ++i) { if (sign[i] != bytes[i]) { throw new CorruptedStreamException(); } } uint ver = reader.ReadUInt(); uint tag = reader.ReadUInt(); int nTotal = reader.ReadInt(); int ndxDeleted = reader.ReadInt(); int sz = reader.ReadInt(); if (nTotal <= ndxDeleted || sz <= 0) { throw new CorruptedStreamException(); } CreationTime = reader.ReadTime(); LastWriteTime = reader.ReadTime(); Version = ver; Tag = tag; FrameCount = nTotal; FirstDeletedFrameIndex = ndxDeleted; FrameSize = sz; DataOffset = reader.Position; IsDirty = false; }
void Init(ITableReader reader) { int ndx = m_header.FirstDeletedFrameIndex; Assert(m_recycledData.Count == 0); while (ndx != NULL_INDEX) { m_recycledData.Add(ndx); reader.Position = GetFramePosition(ndx); ndx = reader.ReadInt(); } m_recycledData.Sort(); }