GapBuffer takes separate buffer_size and size parameters

This commit is contained in:
Josh Holtrop 2016-11-01 22:49:35 -04:00
parent 0cbc36c5ff
commit 1c62e41b26
3 changed files with 8 additions and 4 deletions

View File

@ -57,6 +57,7 @@ bool Buffer::load_from_file(const char * filename)
size_t loaded_size; size_t loaded_size;
text_loader.load_buffer(buffer, file_size, &loaded_size); text_loader.load_buffer(buffer, file_size, &loaded_size);
m_gap_buffer = std::make_shared<GapBuffer>(buffer, buffer_size, loaded_size);
m_eol_at_eof = text_loader.get_eol_at_eof(); m_eol_at_eof = text_loader.get_eol_at_eof();
return true; return true;

View File

@ -4,16 +4,18 @@
GapBuffer::GapBuffer() GapBuffer::GapBuffer()
{ {
m_buffer = (uint8_t *)System::alloc_pages(1u); m_buffer = (uint8_t *)System::alloc_pages(1u);
m_size = System::page_size; m_buffer_size = System::page_size;
m_size = 0u;
} }
GapBuffer::GapBuffer(uint8_t * buffer, size_t size) GapBuffer::GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size)
{ {
m_buffer = buffer; m_buffer = buffer;
m_buffer_size = buffer_size;
m_size = size; m_size = size;
} }
GapBuffer::~GapBuffer() GapBuffer::~GapBuffer()
{ {
System::free_pages(m_buffer, m_size >> System::page_size_log); System::free_pages(m_buffer, m_buffer_size >> System::page_size_log);
} }

View File

@ -8,11 +8,12 @@ class GapBuffer
{ {
public: public:
GapBuffer(); GapBuffer();
GapBuffer(uint8_t * buffer, size_t size); GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size);
~GapBuffer(); ~GapBuffer();
protected: protected:
uint8_t * m_buffer; uint8_t * m_buffer;
size_t m_buffer_size;
size_t m_size; size_t m_size;
}; };