summaryrefslogtreecommitdiff
path: root/platform/android/src/style/conversion/url_or_tileset.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2018-08-17 16:25:12 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2018-08-21 09:26:44 -0700
commit2ff1ac309727a5f34cfa9472dc5802d5b5c3113c (patch)
tree14cafb88bc86c6f1d7a257129c2878f2c702bce8 /platform/android/src/style/conversion/url_or_tileset.cpp
parent7ce6af3f55d94e5e271aeafff44a11508b79dead (diff)
downloadqtlocation-mapboxgl-2ff1ac309727a5f34cfa9472dc5802d5b5c3113c.tar.gz
[android] Move conversion code to .cpp files
Diffstat (limited to 'platform/android/src/style/conversion/url_or_tileset.cpp')
-rw-r--r--platform/android/src/style/conversion/url_or_tileset.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/platform/android/src/style/conversion/url_or_tileset.cpp b/platform/android/src/style/conversion/url_or_tileset.cpp
new file mode 100644
index 0000000000..2ec5856751
--- /dev/null
+++ b/platform/android/src/style/conversion/url_or_tileset.cpp
@@ -0,0 +1,30 @@
+#include "url_or_tileset.hpp"
+#include "../android_conversion.hpp"
+
+#include <mbgl/style/conversion.hpp>
+#include <mbgl/style/conversion/tileset.hpp>
+
+namespace mbgl {
+namespace android {
+
+// This conversion is expected not to fail because it's used only in contexts where
+// the value was originally a String or TileSet object on the Java side. If it fails
+// to convert, it's a bug in our serialization or Java-side static typing.
+variant<std::string, Tileset> convertURLOrTileset(mbgl::android::Value&& value) {
+ using namespace mbgl::style::conversion;
+
+ const Convertible convertible(std::move(value));
+ if (isObject(convertible)) {
+ Error error;
+ optional<Tileset> tileset = convert<Tileset>(convertible, error);
+ if (!tileset) {
+ throw std::logic_error(error.message);
+ }
+ return { *tileset };
+ } else {
+ return { *toString(convertible) };
+ }
+}
+
+}
+}