Render from the piece table!

This commit is contained in:
josh committed 2016-07-19 22:34:11 -04:00
1 parent e52710b47c
commit 20a2786755
4 files changed
+16 -38

No files matched your search

+3 -7
View File
@@ -8,7 +8,7 @@ Buffer::Buffer()
{
m_file_buffer = nullptr;
m_file_buffer_size = 0u;
m_piece_table = std::make_shared<PieceTable>(nullptr, 0u);
piece_table = std::make_shared<PieceTable>(nullptr, 0u);
}
Buffer::~Buffer()
@@ -48,16 +48,12 @@ bool Buffer::load_from_file(const char * filename)
TextLoader text_loader;
text_loader.load_buffer(m_file_buffer, file_size);
for (auto it = text_loader.begin(); it != text_loader.end(); it++)
{
m_lines.push_back(std::make_shared<Text>(it->first, it->second));
}
m_piece_table = std::make_shared<PieceTable>(m_file_buffer, m_file_buffer_size);
piece_table = std::make_shared<PieceTable>(m_file_buffer, m_file_buffer_size);
for (auto it = text_loader.begin(); it != text_loader.end(); it++)
{
/* TODO: correctly calculate n_chars based on current file encoding. */
m_piece_table->append_initial_line_piece(it->first, it->second, it->second);
piece_table->append_initial_line_piece(it->first, it->second, it->second);
}
return true;
+2 -17
View File
@@ -3,35 +3,20 @@
#include <list>
#include <memory>
#include "Text.h"
#include "PieceTable.h"
class Buffer
{
public:
std::shared_ptr<PieceTable> piece_table;
Buffer();
~Buffer();
bool load_from_file(const char * filename);
typedef std::shared_ptr<Text> LineType;
typedef std::list<LineType> LinesType;
auto begin() { return m_lines.begin(); }
auto end() { return m_lines.end(); }
auto cbegin() const { return m_lines.cbegin(); }
auto cend() const { return m_lines.cend(); }
auto rbegin() { return m_lines.rbegin(); }
auto rend() { return m_lines.rend(); }
auto crbegin() const { return m_lines.crbegin(); }
auto crend() const { return m_lines.crend(); }
int get_num_lines() { return m_lines.size(); }
protected:
LinesType m_lines;
uint8_t * m_file_buffer;
unsigned long m_file_buffer_size;
std::shared_ptr<PieceTable> m_piece_table;
void free_file_buffer();
};