aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qregisters.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-14 03:54:55 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-14 05:21:25 +0100
commit0f5c2c89f20dc07c1e0f8e8a619850629825c9c3 (patch)
treec23c40a555e2b355d75bef54d44485d0a4d3495e /src/qregisters.h
parent9fec9e70a2e3f50ca88e75e0e40977571ec79d88 (diff)
option for q-reg spec state machine to allocate (insert) new q-registers
* enabled for all modifying Q-Reg commands
Diffstat (limited to 'src/qregisters.h')
-rw-r--r--src/qregisters.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/qregisters.h b/src/qregisters.h
index 2e1772a..c5740f6 100644
--- a/src/qregisters.h
+++ b/src/qregisters.h
@@ -256,14 +256,17 @@ public:
class QRegSpecMachine : public MicroStateMachine<QRegister *> {
StringBuildingMachine string_machine;
+ bool initialize;
bool is_local;
gint nesting;
gchar *name;
public:
- QRegSpecMachine() : MicroStateMachine(),
- is_local(false), nesting(0), name(NULL) {}
+ QRegSpecMachine(bool _init = false)
+ : MicroStateMachine(),
+ initialize(_init),
+ is_local(false), nesting(0), name(NULL) {}
~QRegSpecMachine()
{
@@ -286,7 +289,7 @@ class StateExpectQReg : public State {
QRegSpecMachine machine;
public:
- StateExpectQReg();
+ StateExpectQReg(bool initialize = false);
private:
State *custom(gchar chr) throw (Error, ReplaceCmdline);
@@ -302,11 +305,17 @@ private:
};
class StatePopQReg : public StateExpectQReg {
+public:
+ StatePopQReg() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};
class StateEQCommand : public StateExpectQReg {
+public:
+ StateEQCommand() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};
@@ -317,6 +326,9 @@ private:
};
class StateCtlUCommand : public StateExpectQReg {
+public:
+ StateCtlUCommand() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};
@@ -324,6 +336,7 @@ private:
class StateSetQRegString : public StateExpectString {
public:
StateSetQRegString() : StateExpectString(false) {}
+
private:
State *done(const gchar *str) throw (Error);
};
@@ -339,11 +352,17 @@ private:
};
class StateSetQRegInteger : public StateExpectQReg {
+public:
+ StateSetQRegInteger() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};
class StateIncreaseQReg : public StateExpectQReg {
+public:
+ StateIncreaseQReg() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};
@@ -354,6 +373,9 @@ private:
};
class StateCopyToQReg : public StateExpectQReg {
+public:
+ StateCopyToQReg() : StateExpectQReg(true) {}
+
private:
State *got_register(QRegister &reg) throw (Error);
};