diff --git a/src/core/PieceTable.cc b/src/core/PieceTable.cc new file mode 100644 index 0000000..e471700 --- /dev/null +++ b/src/core/PieceTable.cc @@ -0,0 +1,7 @@ +#include "PieceTable.h" + +PieceTable::PieceTable(const uint8_t * file_buffer, unsigned long file_buffer_size) +{ + m_file_buffer = file_buffer; + m_file_buffer_size = file_buffer_size; +} diff --git a/src/core/PieceTable.h b/src/core/PieceTable.h new file mode 100644 index 0000000..f0203fe --- /dev/null +++ b/src/core/PieceTable.h @@ -0,0 +1,38 @@ +#ifndef PIECETABLE_H +#define PIECETABLE_H + +#include +#include "PagedBuffer.h" + +class PieceTable +{ +public: + struct PieceDescriptor + { + uint32_t prev; + uint32_t next; + uint32_t start; + uint32_t length; + uint32_t n_chars; + uint32_t eol; + }; + + struct ChangeDescriptor + { + uint32_t piece_descriptor_index; + uint32_t from_val; + uint32_t to_val; + uint8_t attr_idx; + }; + + PieceTable(const uint8_t * file_buffer, unsigned long file_buffer_size); + +protected: + const uint8_t * m_file_buffer; + unsigned long m_file_buffer_size; + PagedBuffer m_append_buffer; + PagedBuffer m_piece_descriptors; + PagedBuffer m_change_descriptors; +}; + +#endif