diff --git a/src/core/PieceTable.cc b/src/core/PieceTable.cc index e471700..89b56f4 100644 --- a/src/core/PieceTable.cc +++ b/src/core/PieceTable.cc @@ -4,4 +4,7 @@ PieceTable::PieceTable(const uint8_t * file_buffer, unsigned long file_buffer_si { m_file_buffer = file_buffer; m_file_buffer_size = file_buffer_size; + m_piece_descriptors[PIECE_DESCRIPTOR_INDEX_START].next = PIECE_DESCRIPTOR_INDEX_END; + m_piece_descriptors[PIECE_DESCRIPTOR_INDEX_END].prev = PIECE_DESCRIPTOR_INDEX_START; + m_piece_descriptor_index = 2u; } diff --git a/src/core/PieceTable.h b/src/core/PieceTable.h index f0203fe..e7dfbaf 100644 --- a/src/core/PieceTable.h +++ b/src/core/PieceTable.h @@ -4,6 +4,9 @@ #include #include "PagedBuffer.h" +#define PIECE_DESCRIPTOR_INDEX_START 0u +#define PIECE_DESCRIPTOR_INDEX_END 1u + class PieceTable { public: @@ -27,9 +30,18 @@ public: PieceTable(const uint8_t * file_buffer, unsigned long file_buffer_size); + PieceDescriptor & add_piece_descriptor() + { + return m_piece_descriptors[m_piece_descriptor_index++]; + } + protected: const uint8_t * m_file_buffer; unsigned long m_file_buffer_size; + + /** Next available piece descriptor index. */ + uint32_t m_piece_descriptor_index; + PagedBuffer m_append_buffer; PagedBuffer m_piece_descriptors; PagedBuffer m_change_descriptors;