From 1b033795a1780639c1c289524d2ef9ac3e36659d Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 15 Feb 2015 23:23:17 +0100 Subject: Added OsmlParserTest --- src/formats/osml/OsmlParser.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/formats/osml/OsmlParser.cpp') 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; -- cgit v1.2.3