diff options
author | Tobrun <tobrun@mapbox.com> | 2018-03-08 16:27:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-08 16:27:02 +0100 |
commit | 6179110b6bfe8ee0880a055a31c12a88f9bd9b20 (patch) | |
tree | 0614f3075eab65c36c9a668117a2d51d612657f3 /platform/android/src/style | |
parent | dfdfbc09902cdb592d217d3e264f736ce5217926 (diff) | |
download | qtlocation-mapboxgl-6179110b6bfe8ee0880a055a31c12a88f9bd9b20.tar.gz |
[android] - add expression conversion, add getters (#11352)
Diffstat (limited to 'platform/android/src/style')
13 files changed, 132 insertions, 405 deletions
diff --git a/platform/android/src/style/conversion/function.hpp b/platform/android/src/style/conversion/function.hpp index ad01a7afc2..510efd3c94 100644 --- a/platform/android/src/style/conversion/function.hpp +++ b/platform/android/src/style/conversion/function.hpp @@ -5,14 +5,9 @@ #include "../../conversion/constant.hpp" #include "types.hpp" #include "../../java/lang.hpp" -#include "../functions/stop.hpp" -#include "../functions/categorical_stops.hpp" -#include "../functions/exponential_stops.hpp" -#include "../functions/identity_stops.hpp" -#include "../functions/interval_stops.hpp" #include <jni/jni.hpp> - +#include "gson.hpp" #include <tuple> #include <map> @@ -20,160 +15,16 @@ namespace mbgl { namespace android { namespace conversion { -/** - * Conversion from core composite value to java type - */ -class CategoricalValueEvaluator { -public: - - CategoricalValueEvaluator(jni::JNIEnv& _env) : env(_env) {} - - template <class T> - jni::jobject* operator()(const T &value) const { - return *convert<jni::jobject*, T>(env, value); - } - -private: - jni::JNIEnv& env; -}; - -/** - * Conversion from core composite value to java type - */ -template <> -struct Converter<jni::jobject*, mbgl::style::CategoricalValue> { - - Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::CategoricalValue& value) const { - CategoricalValueEvaluator evaluator(env); - return apply_visitor(evaluator, value); - } -}; - -template <class I, class O> -jni::Array<jni::Object<Stop>> toFunctionStopJavaArray(jni::JNIEnv& env, std::map<I, O> value) { - - auto jarray = jni::Array<jni::Object<Stop>>::New(env, value.size(), Stop::javaClass); - - size_t i = 0; - for (auto const& stop : value) { - jni::jobject* in = *convert<jni::jobject*, I>(env, stop.first); - jni::jobject* out = *convert<jni::jobject*, O>(env, stop.second); - - auto jstop = Stop::New(env, jni::Object<>(in), jni::Object<>(out)); - jarray.Set(env, i, jstop); - - jni::DeleteLocalRef(env, in); - jni::DeleteLocalRef(env, out); - jni::DeleteLocalRef(env, jstop); - - i++; - } - - return jarray; -} - -template <class I, class O> -jni::Array<jni::Object<Stop>> toFunctionStopJavaArray(jni::JNIEnv& env, std::map<float, std::map<I, O>> value) { - - auto jarray = jni::Array<jni::Object<Stop>>::New(env, value.size(), Stop::javaClass); - - for (auto const& zoomLevelMap : value) { - size_t i = 0; - for (auto const& stop: zoomLevelMap.second) { - auto zoom = jni::Object<java::lang::Number>(*convert<jni::jobject*>(env, zoomLevelMap.first)); - auto in = jni::Object<>(*convert<jni::jobject*, I>(env, stop.first)); - auto out = jni::Object<>(*convert<jni::jobject*, O>(env, stop.second)); - auto compositeValue = Stop::CompositeValue::New(env, zoom, in); - - auto jstop = Stop::New(env, compositeValue, out); - jarray.Set(env, i, jstop); - - jni::DeleteLocalRef(env, zoom); - jni::DeleteLocalRef(env, in); - jni::DeleteLocalRef(env, out); - jni::DeleteLocalRef(env, compositeValue); - jni::DeleteLocalRef(env, jstop); - - i++; - } - } - - return jarray; -} - -template <class I, typename O> -inline jni::jobject* convertCompositeStopsArray(jni::JNIEnv& env, std::map<float, std::map<I, O>> value) { - static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/mapbox/mapboxsdk/style/functions/stops/Stop")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - - jni::jarray<jni::jobject>& jarray = jni::NewObjectArray(env, value.size(), *javaClass); - - size_t i = 0; - for (auto const& stop : value) { - jni::jobject* in = *convert<jni::jobject*, I>(env, stop.first); - jni::jobject* out = *convert<jni::jobject*, O>(env, stop.second); - jni::SetObjectArrayElement(env, jarray, i, &jni::NewObject(env, *javaClass, *constructor, in, out)); - i++; - jni::DeleteLocalRef(env, in); - jni::DeleteLocalRef(env, out); - } - - return &jarray; -} - -/** - * Conversion from core function stops to Stops java subclasses - */ -template <class T> -class StopsEvaluator { -public: - - StopsEvaluator(jni::JNIEnv& _env) : env(_env) {} - - jni::jobject* operator()(const mbgl::style::CategoricalStops<T> &value) const { - return CategoricalStops::New(env, toFunctionStopJavaArray(env, value.stops)).Get(); - } - - jni::jobject* operator()(const mbgl::style::CompositeCategoricalStops<T> &value) const { - return CategoricalStops::New(env, toFunctionStopJavaArray(env, value.stops)).Get(); - } - - jni::jobject* operator()(const mbgl::style::ExponentialStops<T> &value) const { - return ExponentialStops::New(env, jni::Object<java::lang::Float>(*convert<jni::jobject*>(env, value.base)), toFunctionStopJavaArray(env, value.stops)).Get(); - } - - jni::jobject* operator()(const mbgl::style::CompositeExponentialStops<T> &value) const { - return ExponentialStops::New(env, jni::Object<java::lang::Float>(*convert<jni::jobject*>(env, value.base)), toFunctionStopJavaArray(env, value.stops)).Get(); - } - - jni::jobject* operator()(const mbgl::style::IdentityStops<T> &) const { - return IdentityStops::New(env).Get(); - } - - jni::jobject* operator()(const mbgl::style::IntervalStops<T> &value) const { - return IntervalStops::New(env, toFunctionStopJavaArray(env, value.stops)).Get(); - } - - jni::jobject* operator()(const mbgl::style::CompositeIntervalStops<T> &value) const { - return IntervalStops::New(env, toFunctionStopJavaArray(env, value.stops)).Get(); - } - -private: - jni::JNIEnv& env; -}; - template <class T> struct Converter<jni::jobject*, mbgl::style::CameraFunction<T>> { Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::CameraFunction<T>& value) const { - static jni::jclass* clazz = jni::NewGlobalRef(env, &jni::FindClass(env, "com/mapbox/mapboxsdk/style/functions/CameraFunction")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *clazz, "<init>", "(Lcom/mapbox/mapboxsdk/style/functions/stops/Stops;)V"); - - StopsEvaluator<T> evaluator(env); - jni::jobject* stops = apply_visitor(evaluator, value.stops); - jni::jobject* converted = &jni::NewObject(env, *clazz, *constructor, stops); + // Convert expressions + mbgl::Value expressionValue = value.getExpression().serialize(); + JsonEvaluator jsonEvaluator{env}; + jni::jobject* converted = apply_visitor(jsonEvaluator, expressionValue); - return { converted }; + return converted; } }; @@ -181,21 +32,12 @@ template <class T> struct Converter<jni::jobject*, mbgl::style::SourceFunction<T>> { Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::SourceFunction<T>& value) const { - static jni::jclass* clazz = jni::NewGlobalRef(env, &jni::FindClass(env, "com/mapbox/mapboxsdk/style/functions/SourceFunction")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *clazz, "<init>", - "(Ljava/lang/Object;Ljava/lang/String;Lcom/mapbox/mapboxsdk/style/functions/stops/Stops;)V"); - - // Convert stops - StopsEvaluator<T> evaluator(env); - jni::jobject* stops = apply_visitor(evaluator, value.stops); - - // Convert default value - jni::jobject* defaultValue = nullptr; - if (value.defaultValue) { - defaultValue = *convert<jni::jobject*>(env, *value.defaultValue); - } + // Convert expressions + mbgl::Value expressionValue = value.getExpression().serialize(); + JsonEvaluator jsonEvaluator{env}; + jni::jobject* converted = apply_visitor(jsonEvaluator, expressionValue); - return { &jni::NewObject(env, *clazz, *constructor, defaultValue, jni::Make<jni::String>(env, value.property).Get(), stops) }; + return converted; } }; @@ -203,22 +45,12 @@ template <class T> struct Converter<jni::jobject*, mbgl::style::CompositeFunction<T>> { Result<jni::jobject*> operator()(jni::JNIEnv& env, const mbgl::style::CompositeFunction<T>& value) const { - static jni::jclass* clazz = jni::NewGlobalRef(env, &jni::FindClass(env, "com/mapbox/mapboxsdk/style/functions/CompositeFunction")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *clazz, "<init>", - "(Ljava/lang/Object;Ljava/lang/String;Lcom/mapbox/mapboxsdk/style/functions/stops/Stops;)V"); - - // Convert stops - StopsEvaluator<T> evaluator(env); - jni::jobject* stops = apply_visitor(evaluator, value.stops); - - - // Convert default value - jni::jobject* defaultValue = nullptr; - if (value.defaultValue) { - defaultValue = *convert<jni::jobject*>(env, *value.defaultValue); - } + // Convert expressions + mbgl::Value expressionValue = value.getExpression().serialize(); + JsonEvaluator jsonEvaluator{env}; + jni::jobject* converted = apply_visitor(jsonEvaluator, expressionValue); - return { &jni::NewObject(env, *clazz, *constructor, defaultValue, jni::Make<jni::String>(env, value.property).Get(), stops) }; + return converted; } }; diff --git a/platform/android/src/style/conversion/gson.hpp b/platform/android/src/style/conversion/gson.hpp new file mode 100644 index 0000000000..02c3fdd30d --- /dev/null +++ b/platform/android/src/style/conversion/gson.hpp @@ -0,0 +1,114 @@ +#pragma once + +#include "../../conversion/constant.hpp" +#include "../../conversion/collection.hpp" + +#include <mapbox/geometry.hpp> +#include <jni/jni.hpp> +#include "../../jni/local_object.hpp" +#include "mapbox/geometry/feature.hpp" + +namespace mbgl { +namespace android { +namespace conversion { + +/** + * Turn mapbox::geometry::value type into Java Json + */ +class JsonEvaluator { +public: + + jni::JNIEnv& env; + + jni::jobject* operator()(const mapbox::geometry::null_value_t) const { + return (jni::jobject*) nullptr;; + } + + jni::jobject* operator()(const bool& value) const { + static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/google/gson/JsonPrimitive")).release(); + static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "(Ljava/lang/Boolean;)V"); + + // Create JsonPrimitive + jni::LocalObject<jni::jobject> converted = jni::NewLocalObject(env, *convert<jni::jobject*, bool>(env, value)); + jni::jobject* object = &jni::NewObject(env, *javaClass, *constructor, *converted); + + return object; + } + + template <class Number> + jni::jobject* operator()(const Number& value) const { + static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/google/gson/JsonPrimitive")).release(); + static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "(Ljava/lang/Number;)V"); + + // Create JsonPrimitive + jni::LocalObject<jni::jobject> converted = jni::NewLocalObject(env, *convert<jni::jobject*, Number>(env, value)); + jni::jobject* object = &jni::NewObject(env, *javaClass, *constructor, converted.get()); + + return object; + } + + jni::jobject* operator()(const std::string value) const { + static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/google/gson/JsonPrimitive")).release(); + static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "(Ljava/lang/String;)V"); + + // Create JsonPrimitive + jni::LocalObject<jni::jobject> converted = jni::NewLocalObject(env, *convert<jni::jobject*, std::string>(env, value)); + jni::jobject* object = &jni::NewObject(env, *javaClass, *constructor, converted.get()); + + return object; + } + + jni::jobject* operator()(const std::vector<mapbox::geometry::value> values) const { + static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/google/gson/JsonArray")).release(); + static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "()V");; + static jni::jmethodID* add = &jni::GetMethodID(env, *javaClass, "add", "(Lcom/google/gson/JsonElement;)V"); + + // Create json array + jni::jobject* jarray = &jni::NewObject(env, *javaClass, *constructor); + + // Add values + for (const auto &v : values) { + jni::LocalObject<jni::jobject> converted = jni::NewLocalObject(env, mapbox::geometry::value::visit(v, *this)); + jni::CallMethod<void>(env, jarray, *add, converted.get()); + } + + return jarray; + } + + jni::jobject* operator()(const std::unordered_map<std::string, mapbox::geometry::value> value) const { + static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "com/google/gson/JsonObject")).release(); + static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "<init>", "()V");; + static jni::jmethodID* add = &jni::GetMethodID(env, *javaClass, "add", "(Ljava/lang/String;Lcom/google/gson/JsonElement;)V"); + + // Create json object + jni::jobject* jsonObject = &jni::NewObject(env, *javaClass, *constructor); + + // Add items + for (auto &item : value) { + jni::LocalObject<jni::jobject> converted = jni::NewLocalObject(env, mbgl::Value::visit(item.second, *this)); + jni::LocalObject<jni::jobject> key = jni::NewLocalObject(env, *convert<jni::jobject*, std::string>(env, item.first)); + jni::CallMethod<void>(env, jsonObject, *add, key.get(), converted.get()); + } + + return jsonObject; + } + +private: + +}; + +/** + * mapbox::geometry::value -> Java Json + */ +template <> +struct Converter<jni::jobject*, mapbox::geometry::value> { + Result<jni::jobject*> operator()(jni::JNIEnv& env, const mapbox::geometry::value& value) const { + JsonEvaluator evaluator { env } ; + jni::jobject* converted = mapbox::geometry::value::visit(value, evaluator); + return { converted }; + } +}; + +} +} +} diff --git a/platform/android/src/style/conversion/property_value.hpp b/platform/android/src/style/conversion/property_value.hpp index 53f210ac33..4ed25eac25 100644 --- a/platform/android/src/style/conversion/property_value.hpp +++ b/platform/android/src/style/conversion/property_value.hpp @@ -7,6 +7,7 @@ #include "../../conversion/constant.hpp" #include "types.hpp" #include "function.hpp" +#include "gson.hpp" namespace mbgl { namespace android { @@ -39,7 +40,7 @@ public: } jni::jobject* operator()(const mbgl::style::CompositeFunction<T> &value) const { - return *convert<jni::jobject*, mbgl::style::CompositeFunction<T>>(env, value); + return *convert<jni::jobject*, mbgl::style::CompositeFunction<T>>(env, value); } private: diff --git a/platform/android/src/style/functions/categorical_stops.cpp b/platform/android/src/style/functions/categorical_stops.cpp deleted file mode 100644 index 2aff9730a7..0000000000 --- a/platform/android/src/style/functions/categorical_stops.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "categorical_stops.hpp" - -namespace mbgl { -namespace android { - -jni::Object<CategoricalStops> CategoricalStops::New(jni::JNIEnv& env, jni::Array<jni::Object<Stop>> stops) { - static auto constructor = CategoricalStops::javaClass.GetConstructor<jni::Array<jni::Object<Stop>>>(env); - return CategoricalStops::javaClass.New(env, constructor, stops); -} - -jni::Class<CategoricalStops> CategoricalStops::javaClass; - -void CategoricalStops::registerNative(jni::JNIEnv& env) { - CategoricalStops::javaClass = *jni::Class<CategoricalStops>::Find(env).NewGlobalRef(env).release(); -} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/categorical_stops.hpp b/platform/android/src/style/functions/categorical_stops.hpp deleted file mode 100644 index a198c8d5c9..0000000000 --- a/platform/android/src/style/functions/categorical_stops.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> -#include <jni/jni.hpp> - -#include "stop.hpp" - -namespace mbgl { -namespace android { - -class CategoricalStops : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/CategoricalStops"; }; - - static jni::Object<CategoricalStops> New(jni::JNIEnv&, jni::Array<jni::Object<Stop>>); - - static jni::Class<CategoricalStops> javaClass; - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/exponential_stops.cpp b/platform/android/src/style/functions/exponential_stops.cpp deleted file mode 100644 index 6390a0ec35..0000000000 --- a/platform/android/src/style/functions/exponential_stops.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "exponential_stops.hpp" - -namespace mbgl { -namespace android { - -jni::Object<ExponentialStops> ExponentialStops::New(jni::JNIEnv& env, jni::Object<java::lang::Float> base, jni::Array<jni::Object<Stop>> stops) { - static auto constructor = ExponentialStops::javaClass.GetConstructor<jni::Object<java::lang::Float>, jni::Array<jni::Object<Stop>>>(env); - return ExponentialStops::javaClass.New(env, constructor, base, stops); -} - -jni::Class<ExponentialStops> ExponentialStops::javaClass; - -void ExponentialStops::registerNative(jni::JNIEnv& env) { - ExponentialStops::javaClass = *jni::Class<ExponentialStops>::Find(env).NewGlobalRef(env).release(); -} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/exponential_stops.hpp b/platform/android/src/style/functions/exponential_stops.hpp deleted file mode 100644 index 391d723cef..0000000000 --- a/platform/android/src/style/functions/exponential_stops.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> -#include <jni/jni.hpp> - -#include "../../java/lang.hpp" -#include "stop.hpp" - -namespace mbgl { -namespace android { - -class ExponentialStops : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/ExponentialStops"; }; - - static jni::Object<ExponentialStops> New(jni::JNIEnv&, jni::Object<java::lang::Float>, jni::Array<jni::Object<Stop>>); - - static jni::Class<ExponentialStops> javaClass; - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/identity_stops.cpp b/platform/android/src/style/functions/identity_stops.cpp deleted file mode 100644 index 239b0ddb88..0000000000 --- a/platform/android/src/style/functions/identity_stops.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "identity_stops.hpp" - -namespace mbgl { -namespace android { - -jni::Object<IdentityStops> IdentityStops::New(jni::JNIEnv& env) { - static auto constructor = IdentityStops::javaClass.GetConstructor<>(env); - return IdentityStops::javaClass.New(env, constructor); -} - -jni::Class<IdentityStops> IdentityStops::javaClass; - -void IdentityStops::registerNative(jni::JNIEnv& env) { - IdentityStops::javaClass = *jni::Class<IdentityStops>::Find(env).NewGlobalRef(env).release(); -} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/identity_stops.hpp b/platform/android/src/style/functions/identity_stops.hpp deleted file mode 100644 index 150b2135f0..0000000000 --- a/platform/android/src/style/functions/identity_stops.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> -#include <jni/jni.hpp> - -namespace mbgl { -namespace android { - -class IdentityStops : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/IdentityStops"; }; - - static jni::Object<IdentityStops> New(jni::JNIEnv&); - - static jni::Class<IdentityStops> javaClass; - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/interval_stops.cpp b/platform/android/src/style/functions/interval_stops.cpp deleted file mode 100644 index c3d9b6513f..0000000000 --- a/platform/android/src/style/functions/interval_stops.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "interval_stops.hpp" - -namespace mbgl { -namespace android { - -jni::Object<IntervalStops> IntervalStops::New(jni::JNIEnv& env, jni::Array<jni::Object<Stop>> stops) { - static auto constructor = IntervalStops::javaClass.GetConstructor<jni::Array<jni::Object<Stop>>>(env); - return IntervalStops::javaClass.New(env, constructor, stops); -} - -jni::Class<IntervalStops> IntervalStops::javaClass; - -void IntervalStops::registerNative(jni::JNIEnv& env) { - IntervalStops::javaClass = *jni::Class<IntervalStops>::Find(env).NewGlobalRef(env).release(); -} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/interval_stops.hpp b/platform/android/src/style/functions/interval_stops.hpp deleted file mode 100644 index e3f75159cf..0000000000 --- a/platform/android/src/style/functions/interval_stops.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> -#include <jni/jni.hpp> - -#include "stop.hpp" - -namespace mbgl { -namespace android { - -class IntervalStops : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/IntervalStops"; }; - - static jni::Object<IntervalStops> New(jni::JNIEnv&, jni::Array<jni::Object<Stop>>); - - static jni::Class<IntervalStops> javaClass; - - static void registerNative(jni::JNIEnv&); -}; - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/stop.cpp b/platform/android/src/style/functions/stop.cpp deleted file mode 100644 index f9ed4b7368..0000000000 --- a/platform/android/src/style/functions/stop.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "interval_stops.hpp" - -namespace mbgl { -namespace android { - -jni::Object<Stop::CompositeValue> Stop::CompositeValue::New(jni::JNIEnv& env, jni::Object<java::lang::Number> zoom, jni::Object<> value) { - static auto constructor = Stop::CompositeValue::javaClass.GetConstructor<jni::Object<java::lang::Number>, jni::Object<>>(env); - return Stop::CompositeValue::javaClass.New(env, constructor, zoom, value); -} - -jni::Class<Stop> Stop::javaClass; - -jni::Class<Stop::CompositeValue> Stop::CompositeValue::javaClass; - -void Stop::registerNative(jni::JNIEnv& env) { - Stop::javaClass = *jni::Class<Stop>::Find(env).NewGlobalRef(env).release(); - Stop::CompositeValue::javaClass = *jni::Class<Stop::CompositeValue>::Find(env).NewGlobalRef(env).release(); -} - -} // namespace android -} // namespace mbgl diff --git a/platform/android/src/style/functions/stop.hpp b/platform/android/src/style/functions/stop.hpp deleted file mode 100644 index 7c697db65d..0000000000 --- a/platform/android/src/style/functions/stop.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <mbgl/util/noncopyable.hpp> -#include <jni/jni.hpp> - -#include "../../java/lang.hpp" - -namespace mbgl { -namespace android { - -class Stop : private mbgl::util::noncopyable { -public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/Stop"; }; - - template<class I, class O> - static jni::Object<Stop> New(jni::JNIEnv& env, jni::Object<I> in, jni::Object<O> out) { - static auto constructor = Stop::javaClass.GetConstructor<jni::Object<>, jni::Object<>>(env); - return Stop::javaClass.New(env, constructor, (jni::Object<>) in, (jni::Object<>) out); - } - - static jni::Class<Stop> javaClass; - - static void registerNative(jni::JNIEnv&); - - class CompositeValue : private mbgl::util::noncopyable { - public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/functions/stops/Stop$CompositeValue"; }; - - static jni::Object<Stop::CompositeValue> New(jni::JNIEnv&, jni::Object<java::lang::Number>, jni::Object<>); - - static jni::Class<Stop::CompositeValue> javaClass; - }; -}; - -} // namespace android -} // namespace mbgl |