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. --- include/mbgl/style/conversion/geojson.hpp | 14 +++++++++++--- include/mbgl/style/conversion/source.hpp | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'include/mbgl/style') diff --git a/include/mbgl/style/conversion/geojson.hpp b/include/mbgl/style/conversion/geojson.hpp index 6e6e97dbc0..0b594f066c 100644 --- a/include/mbgl/style/conversion/geojson.hpp +++ b/include/mbgl/style/conversion/geojson.hpp @@ -1,14 +1,22 @@ #pragma once #include -#include +#include namespace mbgl { namespace style { namespace conversion { -template -optional convertGeoJSON(const V& value, Error& error); +template <> +struct Converter { +public: + optional operator()(const std::string&, Error&) const; + + // This is explicitly specialized in the .cpp file for JSValue. It may also be explicitly + // specialized for SDK-specific types (e.g. mbgl::android::Value). + template + optional operator()(const V&, Error&) const; +}; } // namespace conversion } // namespace style diff --git a/include/mbgl/style/conversion/source.hpp b/include/mbgl/style/conversion/source.hpp index 2371183b1c..dc7cdc0d42 100644 --- a/include/mbgl/style/conversion/source.hpp +++ b/include/mbgl/style/conversion/source.hpp @@ -122,7 +122,7 @@ private: auto result = std::make_unique(id, *options); if (isObject(*dataValue)) { - optional geoJSON = convertGeoJSON(*dataValue, error); + optional geoJSON = convert(*dataValue, error); if (!geoJSON) { return {}; } -- cgit v1.2.1