diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2011-12-07 14:26:40 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2011-12-07 14:26:40 +0000 |
| commit | c40eb2b03a20c90073eed5103e99d9e37b142040 (patch) | |
| tree | 4cbb280357d00946f3fbff712e0d032a807b55d8 /src/buffer.hh | |
| parent | 2edddfe009478651be4931ae8cc44856c22e579a (diff) | |
Buffer: replace insert and erase methods with modify
modify directly takes a Modification as parameter
Diffstat (limited to 'src/buffer.hh')
| -rw-r--r-- | src/buffer.hh | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/buffer.hh b/src/buffer.hh index 4ac11627..eb4c5c67 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -86,10 +86,14 @@ struct Modification BufferString content; Modification(Type type, BufferIterator position, - BufferString content) + const BufferString& content) : type(type), position(position), content(content) {} Modification inverse() const; + + static Modification make_erase(BufferIterator begin, BufferIterator end); + static Modification make_insert(BufferIterator position, + const BufferString& content); }; class ModificationListener @@ -117,15 +121,11 @@ public: void begin_undo_group(); void end_undo_group(); + void modify(Modification&& modification); + bool undo(); bool redo(); - void erase(const BufferIterator& begin, - const BufferIterator& end); - - void insert(const BufferIterator& position, - const BufferString& string); - BufferString string(const BufferIterator& begin, const BufferIterator& end) const; @@ -200,8 +200,6 @@ private: void apply_modification(const Modification& modification); void revert_modification(const Modification& modification); - void append_modification(Modification&& modification); - std::list<std::unique_ptr<Window>> m_windows; size_t m_last_save_undo_index; @@ -211,6 +209,18 @@ private: idvaluemap<std::string, FilterFunc> m_filters; }; +inline Modification Modification::make_erase(BufferIterator begin, + BufferIterator end) +{ + return Modification(Erase, begin, begin.buffer().string(begin, end)); +} + +inline Modification Modification::make_insert(BufferIterator position, + const BufferString& content) +{ + return Modification(Insert, position, content); +} + } #include "buffer_iterator.inl.hh" |
