From 3260eed68bbfcbee160dc1aabe8b35ecd3d88c11 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Mon, 16 Feb 2015 00:19:15 +0100 Subject: Updating logger default position for better error messages if an exception is thrown or no explicit location was given in a logger call --- src/formats/osml/OsmlParser.cpp | 11 ++++++++++- 1 file changed, 10 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 519a2d8..c77da09 100644 --- a/src/formats/osml/OsmlParser.cpp +++ b/src/formats/osml/OsmlParser.cpp @@ -16,6 +16,7 @@ along with this program. If not, see . */ +#include #include #include #include @@ -33,6 +34,11 @@ using namespace parser_stack; */ class OsmlParserImplementation { private: + /** + * Reference at the logger. + */ + Logger &logger; + /** * OsmlStreamParser instance responsible for converting the input stream * into a series of osml events that are relayed to the Stack class. @@ -55,7 +61,9 @@ public: * used. */ OsmlParserImplementation(CharReader &reader, ParserContext &ctx) - : parser(reader, ctx.getLogger()), stack(ctx, GenericParserStates) + : logger(ctx.getLogger()), + parser(reader, logger), + stack(ctx, GenericParserStates) { } @@ -68,6 +76,7 @@ public: bool needsDocument = true; while (true) { OsmlStreamParser::State state = parser.parse(); + logger.setDefaultLocation(parser.getLocation()); switch (state) { case OsmlStreamParser::State::COMMAND: { // Implicitly create a "document" element if the first -- cgit v1.2.3