diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-15 23:23:17 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-15 23:23:17 +0100 |
commit | 1b033795a1780639c1c289524d2ef9ac3e36659d (patch) | |
tree | 469782de83d418d39e0bcce8c604739e67b7c6e8 /src/formats | |
parent | 40f33ed35691c5052beaa98ca89c0f22ceb12666 (diff) |
Added OsmlParserTest
Diffstat (limited to 'src/formats')
-rw-r--r-- | src/formats/osml/OsmlParser.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/formats/osml/OsmlParser.cpp b/src/formats/osml/OsmlParser.cpp index 87f4c00..519a2d8 100644 --- a/src/formats/osml/OsmlParser.cpp +++ b/src/formats/osml/OsmlParser.cpp @@ -64,13 +64,27 @@ public: */ void parse() { + // Flag set to true if a "document" element needs to be created + bool needsDocument = true; while (true) { OsmlStreamParser::State state = parser.parse(); switch (state) { - case OsmlStreamParser::State::COMMAND: + case OsmlStreamParser::State::COMMAND: { + // Implicitly create a "document" element if the first + // command is not any other top-level command + if (needsDocument) { + const std::string &cmd = + parser.getCommandName().asString(); + if (cmd != "typesystem" && cmd != "document" && + cmd != "domain") { + stack.command("document", Variant::mapType{}); + } + needsDocument = false; + } stack.command(parser.getCommandName(), parser.getCommandArguments().asMap()); break; + } case OsmlStreamParser::State::DATA: stack.data(parser.getData()); break; |