Render from the piece table!
This commit is contained in:
1 parent
e52710b47c
commit
20a2786755
4 files changed
+16
-38
No files matched your search
+3
-7
@@ -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
@@ -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();
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user