summaryrefslogtreecommitdiff
path: root/src/buffer.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-12-07 14:26:40 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-12-07 14:26:40 +0000
commitc40eb2b03a20c90073eed5103e99d9e37b142040 (patch)
tree4cbb280357d00946f3fbff712e0d032a807b55d8 /src/buffer.hh
parent2edddfe009478651be4931ae8cc44856c22e579a (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.hh28
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"