diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-04-04 13:56:19 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-04-04 13:56:19 +0000 |
| commit | e4b872abd26405a7c26ffbd14dff91c816750601 (patch) | |
| tree | 97832ec7afbbcf90280d1e68d67c3a057e5a11de /src/buffer.hh | |
| parent | 6cedff8fb26dfd3fe099e71c3d96f8c62f48c73a (diff) | |
remove ModificationListener and use a list of iterators to update instead
This permits to fix a bug in BufferIterator::upgrade, replaced by
BufferIterator::on_insert and BufferIterator::on_erase. ModificationListener
was only used to updating iterators anyway.
Diffstat (limited to 'src/buffer.hh')
| -rw-r--r-- | src/buffer.hh | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/buffer.hh b/src/buffer.hh index fb142aec..4f92edf1 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -41,7 +41,7 @@ public: typedef const value_type& reference; typedef std::bidirectional_iterator_tag iterator_category; - BufferIterator() : m_buffer(NULL) {} + BufferIterator() : m_buffer(nullptr) {} BufferIterator(const Buffer& buffer, BufferCoord coord); BufferIterator& operator=(const BufferIterator& iterator); @@ -68,7 +68,8 @@ public: bool is_end() const; bool is_valid() const; - void update(const Modification& modification); + void on_insert(const BufferCoord& begin, const BufferCoord& end); + void on_erase(const BufferCoord& begin, const BufferCoord& end); const Buffer& buffer() const; @@ -101,12 +102,6 @@ struct Modification const String& content); }; -class ModificationListener -{ -public: - virtual void on_modification(const Modification& modification) = 0; -}; - // A Buffer is a in-memory representation of a file // // The Buffer class permits to read and mutate this file @@ -160,8 +155,8 @@ public: Type type() const { return m_type; } void notify_saved(); - void register_modification_listener(ModificationListener* listener); - void unregister_modification_listener(ModificationListener* listener); + void add_iterator_to_update(BufferIterator& iterator); + void remove_iterator_from_update(BufferIterator& iterator); // returns an iterator pointing to the first character of the line // iterator is on @@ -212,7 +207,7 @@ private: size_t m_last_save_undo_index; - std::vector<ModificationListener*> m_modification_listeners; + std::vector<BufferIterator*> m_iterators_to_update; OptionManager m_option_manager; }; |
