aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 20:43:33 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 20:43:33 +0100
commitad939b95eb95c7511a371ef7d806ad9bb26453ae (patch)
tree372ff7ea4bbd4b8d06c3054bf3a4da5aea1b1560
parent581e39ac203056633a627ad09167adf05753e091 (diff)
downloadsciteco-ad939b95eb95c7511a371ef7d806ad9bb26453ae.tar.gz
add helper function to initialize transition table
-rw-r--r--parser.cpp7
-rw-r--r--parser.h12
2 files changed, 14 insertions, 5 deletions
diff --git a/parser.cpp b/parser.cpp
index 1ce6e2c..7c10445 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -80,11 +80,8 @@ State::get_next_state(gchar chr)
StateStart::StateStart() : State()
{
- transitions['\0'] = this;
- transitions[' '] = this;
- transitions['\r'] = this;
- transitions['\n'] = this;
- transitions['\v'] = this;
+ transitions['\0'] = this;
+ init(" \r\n\v");
}
void
diff --git a/parser.h b/parser.h
index dba304d..3c4f543 100644
--- a/parser.h
+++ b/parser.h
@@ -11,6 +11,18 @@ protected:
/* static transitions */
State *transitions[MAX_TRANSITIONS];
+ inline void
+ init(const gchar *chars, State *state)
+ {
+ while (*chars)
+ transitions[(int)*chars++] = state;
+ }
+ inline void
+ init(const gchar *chars)
+ {
+ init(chars, this);
+ }
+
public:
State();