aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-14 19:21:19 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-14 19:21:19 +0100
commitf63cf74a89027988aed16e2069c1ca8486c749b5 (patch)
treef14a3fc9fb5ebee253fafce3a564e2cba27442d9 /src/parser.cpp
parent6195aeba1899f50384b704b23ae2eea9c60c79a2 (diff)
downloadsciteco-f63cf74a89027988aed16e2069c1ca8486c749b5.tar.gz
hide some implementation details in MicroStateMachines
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 6fefe80..6e32d87 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -274,10 +274,7 @@ StringBuildingMachine::input(gchar chr) throw (State::Error)
return NULL;
}
- if (state)
- goto *state;
-
- /* NULL state */
+MICROSTATE_START;
switch (chr) {
case CTL_KEY('Q'):
case CTL_KEY('R'): set(&&StateEscaped); break;
@@ -291,7 +288,7 @@ StringBuildingMachine::input(gchar chr) throw (State::Error)
return NULL;
StateLower:
- set(NULL);
+ set(StateStart);
if (chr != CTL_KEY('V'))
return g_strdup(CHR2STR(g_ascii_tolower(chr)));
@@ -300,7 +297,7 @@ StateLower:
return NULL;
StateUpper:
- set(NULL);
+ set(StateStart);
if (chr != CTL_KEY('W'))
return g_strdup(CHR2STR(g_ascii_toupper(chr)));
@@ -319,7 +316,7 @@ StateCtlE:
set(&&StateCtlEU);
break;
default:
- set(NULL);
+ set(StateStart);
return g_strdup((gchar []){CTL_KEY('E'), chr, '\0'});
}
@@ -331,7 +328,7 @@ StateCtlEU:
return NULL;
undo.push_obj(qregspec_machine) = NULL;
- set(NULL);
+ set(StateStart);
return g_strdup(CHR2STR(reg->get_integer()));
StateCtlEQ:
@@ -340,11 +337,11 @@ StateCtlEQ:
return NULL;
undo.push_obj(qregspec_machine) = NULL;
- set(NULL);
+ set(StateStart);
return reg->get_string();
StateEscaped:
- set(NULL);
+ set(StateStart);
return g_strdup(CHR2STR(chr));
}