From b30b6eb202a143679c27783645b6208a79d04b4f Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 17 Jul 2016 23:05:02 -0400 Subject: [PATCH] Start on PieceTable --- src/core/PieceTable.cc | 7 +++++++ src/core/PieceTable.h | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/core/PieceTable.cc create mode 100644 src/core/PieceTable.h 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