From baaae99a03202641ae5b8024e57b691fe61a6688 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 5 May 2017 16:31:03 -0700 Subject: [core, android] Factor JSON string conversions This adds a `convertJSON` template, to be used like: Error error optional foo = convertJSON(string, error); Internally, it parses the string with RapidJSON and then calls `convert(parsed, error)`. While here, rationalize GeoJSON converters and fix error handling for Tileset conversion in OfflineDownload. --- platform/qt/src/qt_geojson.hpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'platform/qt/src/qt_geojson.hpp') diff --git a/platform/qt/src/qt_geojson.hpp b/platform/qt/src/qt_geojson.hpp index 7d12660aec..a6958b7edc 100644 --- a/platform/qt/src/qt_geojson.hpp +++ b/platform/qt/src/qt_geojson.hpp @@ -178,25 +178,20 @@ namespace style { namespace conversion { template <> -optional convertGeoJSON(const QMapbox::Feature& feature, Error&) { - return GeoJSON { asMapboxGLFeature(feature) }; -} - -template <> -optional convertGeoJSON(const QVariant& value, Error& error) { +optional Converter::operator()(const QVariant& value, Error& error) const { #if QT_VERSION >= 0x050000 if (value.typeName() == QStringLiteral("QMapbox::Feature")) { #else if (value.typeName() == QString("QMapbox::Feature")) { #endif - return convertGeoJSON(value.value(), error); + return GeoJSON { asMapboxGLFeature(value.value()) }; } else if (value.type() != QVariant::ByteArray) { error = { "JSON data must be in QByteArray" }; return {}; } QByteArray data = value.toByteArray(); - return convertGeoJSON(std::string(data.constData(), data.size()), error); + return convert(std::string(data.constData(), data.size()), error); } } // namespace conversion -- cgit v1.2.1