Extracted from following patch of gpsbabel: https://github.com/gpsbabel/gpsbabel/commit/604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3 From 604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3 Mon Sep 17 00:00:00 2001 From: Harel Mazor Date: Tue, 24 Jan 2017 00:35:04 +0200 Subject: [PATCH] Added geojson read capablity, moved magic strings to constants, fixed windows compilation issues. --- a/tef_xml.cc +++ b/tef_xml.cc @@ -72,11 +72,11 @@ tef_start(xg_string args, const QXmlStreamAttributes* attrv) bool valid = false; foreach(QXmlStreamAttribute attr, *attrv) { - if (attr.name().compare("Comment", Qt::CaseInsensitive) == 0) { - if (attr.value().compare("TourExchangeFormat", Qt::CaseInsensitive) == 0) { + if (attr.name().compare(QString("Comment"), Qt::CaseInsensitive) == 0) { + if (attr.value().compare(QString("TourExchangeFormat"), Qt::CaseInsensitive) == 0) { valid = true; } - } else if (attr.name().compare("Version", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("Version"), Qt::CaseInsensitive) == 0) { version = attr.value().toString().toDouble(); } } @@ -95,9 +95,9 @@ tef_header(xg_string args, const QXmlStreamAttributes* attrv) { route = route_head_alloc(); foreach(QXmlStreamAttribute attr, *attrv) { - if (attr.name().compare("Name", Qt::CaseInsensitive) == 0) { + if (attr.name().compare(QString("Name"), Qt::CaseInsensitive) == 0) { route->rte_name = attr.value().toString().trimmed(); - } else if (attr.name().compare("Software", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("Software"), Qt::CaseInsensitive) == 0) { route->rte_desc = attr.value().toString().trimmed(); } } @@ -248,20 +248,20 @@ tef_item_start(xg_string args, const QXmlStreamAttributes* attrv) QString attrstr = attr.value().toString(); QByteArray attrtext = attrstr.toUtf8(); - if (attr.name().compare("SegDescription", Qt::CaseInsensitive) == 0) { + if (attr.name().compare(QString("SegDescription"), Qt::CaseInsensitive) == 0) { wpt_tmp->shortname = attrstr.trimmed(); - } else if (attr.name().compare("PointDescription", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("PointDescription"), Qt::CaseInsensitive) == 0) { wpt_tmp->description = attrstr.trimmed(); - } else if (attr.name().compare("ViaStation", Qt::CaseInsensitive) == 0 && - attr.value().compare("true", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("ViaStation"), Qt::CaseInsensitive) == 0 && + attr.value().compare(QString("true"), Qt::CaseInsensitive) == 0) { wpt_tmp->wpt_flags.fmt_use = 1; /* only a flag */ /* new in TEF V2 */ - } else if (attr.name().compare("Instruction", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("Instruction"), Qt::CaseInsensitive) == 0) { wpt_tmp->description = attrstr.trimmed(); - } else if (attr.name().compare("Altitude", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("Altitude"), Qt::CaseInsensitive) == 0) { wpt_tmp->altitude = attrstr.toDouble(); - } else if (attr.name().compare("TimeStamp", Qt::CaseInsensitive) == 0) { + } else if (attr.name().compare(QString("TimeStamp"), Qt::CaseInsensitive) == 0) { /* nothing for the moment */ } } -- 2.16.1 oadFile(path.c_str()); if (document.Error()) { - const char* errorStr1 = document.GetErrorStr1(); - const char* errorStr2 = document.GetErrorStr2(); + const char* errorStr = document.ErrorStr(); std::string errorString("Error was "); - if (errorStr1) - { - errorString += errorStr1; - } - if (errorStr2) - { - errorString += errorStr2; - } - if (!errorStr1 && !errorStr2) - { + if (errorStr) + errorString += errorStr; + else errorString += "not specified."; - } GMX_THROW(TestException("Reference data not parsed successfully: " + path + "\n." + errorString + "\n")); } @@ -371,7 +362,7 @@ void writeReferenceDataFile(const std::string& path, const ReferenceDataEntry& r XMLElementPtr rootElement = createRootElement(&document); createChildElements(rootElement, rootEntry); - if (document.SaveFile(path.c_str()) != tinyxml2::XML_NO_ERROR) + if (document.SaveFile(path.c_str()) != tinyxml2::XML_SUCCESS) { GMX_THROW(TestException("Reference data saving failed in " + path)); }