Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }