summaryrefslogtreecommitdiff
path: root/src/core/parser
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-02 14:59:44 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-02 14:59:44 +0100
commit35554e6d32a5e66819f8a7bf869f1853e0d6fede (patch)
treea76ec73e76b644a1d20a31960947bd776044b19d /src/core/parser
parent0c26390e71193947a67bdd0536915523da38f00f (diff)
continued working on the xml parser class
Diffstat (limited to 'src/core/parser')
-rw-r--r--src/core/parser/ParserStack.cpp3
-rw-r--r--src/core/parser/ParserStack.hpp3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/core/parser/ParserStack.cpp b/src/core/parser/ParserStack.cpp
index 01fce3f..7bc7af3 100644
--- a/src/core/parser/ParserStack.cpp
+++ b/src/core/parser/ParserStack.cpp
@@ -100,7 +100,8 @@ void ParserStack::start(std::string name, char **attrs)
const HandlerDescriptor *descr = nullptr;
auto range = handlers.equal_range(name);
for (auto it = range.first; it != range.second; it++) {
- if (it->second.parentStates.count(curState)) {
+ const std::set<State> &parentStates = it->second.parentStates;
+ if (parentStates.count(curState) || parentStates.count(STATE_ALL)) {
descr = &(it->second);
break;
}
diff --git a/src/core/parser/ParserStack.hpp b/src/core/parser/ParserStack.hpp
index a777b1e..18fc8d9 100644
--- a/src/core/parser/ParserStack.hpp
+++ b/src/core/parser/ParserStack.hpp
@@ -45,7 +45,7 @@ namespace parser {
/**
* The State type alias is used to
*/
-using State = int8_t;
+using State = int16_t;
static const State STATE_ALL = -2;
static const State STATE_NONE = -1;
@@ -140,6 +140,7 @@ public:
* Handler instance.
*
* TODO: Replace with std::string?
+ * TODO: Per default: Allow no data except for whitespace characters!
*
* @param data is a pointer at the character data that is available for the
* Handler instance.