add an EOF iterator to track the end of the file and number of lines

This commit is contained in:
Josh Holtrop 2016-12-28 13:03:38 -05:00
parent 301fbf09f1
commit 929bda355f
2 changed files with 9 additions and 3 deletions

View File

@ -8,31 +8,36 @@
Buffer::Buffer() Buffer::Buffer()
{ {
common_initialization();
load_empty_buffer(); load_empty_buffer();
common_initialization();
} }
Buffer::Buffer(const char * filename) Buffer::Buffer(const char * filename)
{ {
common_initialization();
if (!load_from_file(filename)) if (!load_from_file(filename))
{ {
load_empty_buffer(); load_empty_buffer();
} }
common_initialization();
} }
Buffer::Buffer(const uint8_t * data, size_t data_length) Buffer::Buffer(const uint8_t * data, size_t data_length)
{ {
common_initialization();
if (!load_from_memory(data, data_length)) if (!load_from_memory(data, data_length))
{ {
load_empty_buffer(); load_empty_buffer();
} }
common_initialization();
} }
void Buffer::common_initialization() void Buffer::common_initialization()
{ {
m_tabstop = 4u; m_tabstop = 4u;
m_eof_iterator = add_iterator();
while (m_eof_iterator->valid())
{
m_eof_iterator->go_forward();
}
} }
void Buffer::load_empty_buffer() void Buffer::load_empty_buffer()

View File

@ -119,6 +119,7 @@ protected:
bool m_insert_mode; bool m_insert_mode;
size_t m_insert_position; size_t m_insert_position;
std::list<std::shared_ptr<Iterator>> m_iterators; std::list<std::shared_ptr<Iterator>> m_iterators;
std::shared_ptr<Iterator> m_eof_iterator;
std::string m_filename; std::string m_filename;
void common_initialization(); void common_initialization();