diff options
| author | Igor Tarasov <igor.tarasov@mapbox.com> | 2020-04-02 18:36:55 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-02 18:36:55 +0300 |
| commit | 338cfd1b33dfe26b9402d79cc64609b944a9f1d1 (patch) | |
| tree | 2db5f73682b226ad64489742596acee9337c0538 /platform/android/src/gson/json_element.cpp | |
| parent | b7728d222cbcdb3e522fc3e482e69101b0b95481 (diff) | |
| download | qtlocation-mapboxgl-338cfd1b33dfe26b9402d79cc64609b944a9f1d1.tar.gz | |
[android] [build] [ci] Move Android JNI bindings code to mapbox-gl-native-android repo. (#16356)
Diffstat (limited to 'platform/android/src/gson/json_element.cpp')
| -rw-r--r-- | platform/android/src/gson/json_element.cpp | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/platform/android/src/gson/json_element.cpp b/platform/android/src/gson/json_element.cpp deleted file mode 100644 index ba22304d07..0000000000 --- a/platform/android/src/gson/json_element.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "json_element.hpp" -#include "json_array.hpp" -#include "json_object.hpp" -#include "json_primitive.hpp" - -namespace mbgl { -namespace android { -namespace gson { - -jni::Local<jni::Object<JsonElement>> JsonElement::New(jni::JNIEnv& env, const mbgl::Value& value) { - static auto& primitive = jni::Class<JsonPrimitive>::Singleton(env); - static auto stringConstructor = primitive.GetConstructor<jni::String>(env); - static auto numberConstructor = primitive.GetConstructor<jni::Number>(env); - static auto booleanConstructor = primitive.GetConstructor<jni::Boolean>(env); - - return value.match( - [&] (const mbgl::NullValue&) { - return jni::Local<jni::Object<JsonElement>>(); - }, - [&] (const std::string& value) { - return primitive.New(env, stringConstructor, jni::Make<jni::String>(env, value)); - }, - [&] (const double value) { - return primitive.New(env, numberConstructor, jni::Box(env, value)); - }, - [&] (const int64_t value) { - return primitive.New(env, numberConstructor, jni::Box(env, value)); - }, - [&] (const uint64_t value) { - return primitive.New(env, numberConstructor, jni::Box(env, int64_t(value))); // TODO: should use BigInteger - }, - [&] (const bool value) { - return primitive.New(env, booleanConstructor, jni::Box(env, value ? jni::jni_true : jni::jni_false)); - }, - [&] (const std::vector<mbgl::Value>& values) { - return JsonArray::New(env, values); - }, - [&] (const mbgl::PropertyMap& values) { - return JsonObject::New(env, values); - } - ); -} - -mbgl::Value JsonElement::convert(jni::JNIEnv &env, const jni::Object<JsonElement>& jsonElement) { - if (!jsonElement) { - return mbgl::NullValue(); - } - - static auto& elementClass = jni::Class<JsonElement>::Singleton(env); - static auto isJsonObject = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonObject"); - static auto isJsonArray = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonArray"); - static auto isJsonPrimitive = elementClass.GetMethod<jni::jboolean ()>(env, "isJsonPrimitive"); - - static auto& primitiveClass = jni::Class<JsonPrimitive>::Singleton(env); - static auto isBoolean = primitiveClass.GetMethod<jni::jboolean ()>(env, "isBoolean"); - static auto isString = primitiveClass.GetMethod<jni::jboolean ()>(env, "isString"); - static auto isNumber = primitiveClass.GetMethod<jni::jboolean ()>(env, "isNumber"); - static auto getAsBoolean = primitiveClass.GetMethod<jni::jboolean ()>(env, "getAsBoolean"); - static auto getAsString = primitiveClass.GetMethod<jni::String ()>(env, "getAsString"); - static auto getAsDouble = primitiveClass.GetMethod<jni::jdouble ()>(env, "getAsDouble"); - - if (jsonElement.Call(env, isJsonPrimitive)) { - auto primitive = jni::Cast(env, primitiveClass, jsonElement); - if (primitive.Call(env, isBoolean)) { - return bool(primitive.Call(env, getAsBoolean)); - } else if (primitive.Call(env, isNumber)) { - return primitive.Call(env, getAsDouble); - } else if (primitive.Call(env, isString)) { - return jni::Make<std::string>(env, primitive.Call(env, getAsString)); - } else { - return mbgl::NullValue(); - } - } else if (jsonElement.Call(env, isJsonObject)) { - return JsonObject::convert(env, jni::Cast(env, jni::Class<JsonObject>::Singleton(env), jsonElement)); - } else if (jsonElement.Call(env, isJsonArray)) { - return JsonArray::convert(env, jni::Cast(env, jni::Class<JsonArray>::Singleton(env), jsonElement)); - } else { - return mbgl::NullValue(); - } -} - -void JsonElement::registerNative(jni::JNIEnv &env) { - jni::Class<JsonElement>::Singleton(env); -} - -} // namespace gson -} // namespace android -} // namespace mbgl
\ No newline at end of file |
