aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qregisters.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-18 23:17:18 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-22 01:18:05 +0100
commit753dacacbcc2d45d35a044bfe2512fc4cd564b5c (patch)
tree0836f965a306b33449d60c4c7b579eab06f6bc2b /src/qregisters.h
parente0a47e8fcd592585030384faf6d42a2bf74f43ad (diff)
clean up QRegister vs. Buffer redundancies using TECODocument class
* also encapsulates data properly (previously there were many public attributes to avoid permission issues) * new class also cares about saving/and restoring scroll state. now, buffer/q-reg edits and temporary accesses do not reset the scroll state anymore.
Diffstat (limited to 'src/qregisters.h')
-rw-r--r--src/qregisters.h41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/qregisters.h b/src/qregisters.h
index 15acd86..7e126fd 100644
--- a/src/qregisters.h
+++ b/src/qregisters.h
@@ -30,39 +30,24 @@
#include "undo.h"
#include "rbtree.h"
#include "parser.h"
+#include "document.h"
/*
* Classes
*/
class QRegisterData {
+protected:
gint64 integer;
+ TECODocument string;
public:
- typedef void document;
- document *string;
- gint dot;
-
/*
* whether to generate UndoTokens (unnecessary in macro invocations)
*/
bool must_undo;
- QRegisterData() : integer(0), string(NULL), dot(0), must_undo(true) {}
- virtual
- ~QRegisterData()
- {
- if (string)
- interface.ssm(SCI_RELEASEDOCUMENT, 0, (sptr_t)string);
- }
-
- inline document *
- get_document(void)
- {
- if (!string)
- string = (document *)interface.ssm(SCI_CREATEDOCUMENT);
- return string;
- }
+ QRegisterData() : integer(0), must_undo(true) {}
virtual gint64
set_integer(gint64 i)
@@ -81,6 +66,12 @@ public:
return integer;
}
+ inline void
+ update_string(void)
+ {
+ string.update();
+ }
+
virtual void set_string(const gchar *str);
virtual void undo_set_string(void);
virtual void append_string(const gchar *str);
@@ -93,6 +84,8 @@ public:
virtual void edit(void);
virtual void undo_edit(void);
+
+ friend class QRegisterStack;
};
class QRegister : public RBTree::RBEntry, public QRegisterData {
@@ -128,10 +121,7 @@ public:
class QRegisterBufferInfo : public QRegister {
public:
- QRegisterBufferInfo() : QRegister("*")
- {
- get_document();
- }
+ QRegisterBufferInfo() : QRegister("*") {}
gint64
set_integer(gint64 v)
@@ -191,10 +181,7 @@ public:
inline void
initialize(const gchar *name)
{
- QRegister *reg = new QRegister(name);
- insert(reg);
- /* make sure document is initialized */
- reg->get_document();
+ insert(new QRegister(name));
}
inline void
initialize(gchar name)