protected override int DoReplace(int ndxItem, T item) { if (ndxItem == m_positions.Count - 1) { Writer.Position = m_positions[ndxItem]; var dh = new DatumHolder(item); dh.Write(Writer); m_newItemPos = Writer.Position; } else { Writer.Position = m_positions[ndxItem]; Writer.Write(DELETED_DATUM_TAG); m_positions.RemoveAt(ndxItem); Writer.Position = m_newItemPos; var dh = new DatumHolder(item); dh.Write(Writer); m_positions.Add(m_newItemPos); m_newItemPos = Writer.Position; ++m_header.DataCount; } return(m_positions.Count - 1); }
protected override int DoInsert(T item) { Writer.Position = m_newItemPos; var dh = new DatumHolder(item); dh.Write(Writer); m_positions.Add(m_newItemPos); m_newItemPos = Writer.Position; ++m_header.DataCount; return(m_positions.Count - 1); }
protected override void Init() { Reader.Position = m_header.DataPosition; var dh = new DatumHolder(CreateEmptyDatum()); for (int i = 0; i < m_header.DataCount; ++i) { long pos = Reader.Position; dh.Read(Reader); if (dh.Tag != DELETED_DATUM_TAG) { m_positions.Add(pos); } } m_newItemPos = Reader.Position; }