summaryrefslogtreecommitdiff
path: root/src/buffer.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-04-04 13:56:19 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-04-04 13:56:19 +0000
commite4b872abd26405a7c26ffbd14dff91c816750601 (patch)
tree97832ec7afbbcf90280d1e68d67c3a057e5a11de /src/buffer.hh
parent6cedff8fb26dfd3fe099e71c3d96f8c62f48c73a (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.hh17
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;
};