From 2ff1ac309727a5f34cfa9472dc5802d5b5c3113c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 17 Aug 2018 16:25:12 -0700 Subject: [android] Move conversion code to .cpp files --- platform/android/src/conversion/constant.hpp | 75 +++++----------------------- 1 file changed, 12 insertions(+), 63 deletions(-) (limited to 'platform/android/src/conversion/constant.hpp') diff --git a/platform/android/src/conversion/constant.hpp b/platform/android/src/conversion/constant.hpp index f1c72eb5dd..52395cb9ee 100644 --- a/platform/android/src/conversion/constant.hpp +++ b/platform/android/src/conversion/constant.hpp @@ -2,14 +2,12 @@ #include "conversion.hpp" -#include #include #include #include #include #include -#include namespace mbgl { namespace android { @@ -17,51 +15,33 @@ namespace conversion { template <> struct Converter { - Result operator()(jni::JNIEnv& env, const bool& value) const { - static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "java/lang/Boolean")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "", "(Z)V"); - return {&jni::NewObject(env, *javaClass, *constructor, (jboolean) value)}; - } + Result operator()(jni::JNIEnv& env, const bool& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv&, const bool& value) const { - return {(jni::jboolean) value}; - } + Result operator()(jni::JNIEnv&, const bool& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv& env, const float& value) const { - static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "java/lang/Float")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "", "(F)V"); - return {&jni::NewObject(env, *javaClass, *constructor, (jfloat) value)}; - } + Result operator()(jni::JNIEnv& env, const float& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv&, const float& value) const { - return {(jni::jfloat) value}; - } + Result operator()(jni::JNIEnv&, const float& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv& env, const double& value) const { - static jni::jclass* javaClass = jni::NewGlobalRef(env, &jni::FindClass(env, "java/lang/Double")).release(); - static jni::jmethodID* constructor = &jni::GetMethodID(env, *javaClass, "", "(D)V"); - return {&jni::NewObject(env, *javaClass, *constructor, (jfloat) value)}; - } + Result operator()(jni::JNIEnv& env, const double& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv&, const double& value) const { - return {(jni::jdouble) value}; - } + Result operator()(jni::JNIEnv&, const double& value) const; }; /** @@ -81,26 +61,17 @@ struct Converter:: template <> struct Converter { - Result operator()(jni::JNIEnv& env, const std::string& value) const { - return {jni::Make(env, value).Get()}; - } + Result operator()(jni::JNIEnv& env, const std::string& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv& env, const std::string& value) const { - return {jni::Make(env, value).Get()}; - } + Result operator()(jni::JNIEnv& env, const std::string& value) const; }; template <> struct Converter { - Result operator()(jni::JNIEnv& env, const Color& value) const { - std::stringstream sstream; - sstream << "rgba(" << value.r << ", " << value.g << ", " << value.b << ", " << value.a << ")"; - std::string result = sstream.str(); - return convert(env, result); - } + Result operator()(jni::JNIEnv& env, const Color& value) const; }; template @@ -116,41 +87,19 @@ struct Converter> { template <> struct Converter> { - Result operator()(jni::JNIEnv& env, const std::vector& value) const { - static jni::jclass* stringCass = jni::NewGlobalRef(env, &jni::FindClass(env, "java/lang/String")).release(); - jni::jarray& jarray = jni::NewObjectArray(env, value.size(), *stringCass); - - for(size_t i = 0; i < value.size(); i = i + 1) { - Result converted = convert(env, value.at(i)); - jni::SetObjectArrayElement(env, jarray, i, *converted); - } - - return &jarray; - } + Result operator()(jni::JNIEnv& env, const std::vector& value) const; }; template <> struct Converter> { - Result operator()(jni::JNIEnv& env, const std::vector& value) const { - static jni::jclass* floatClass = jni::NewGlobalRef(env, &jni::FindClass(env, "java/lang/Float")).release(); - jni::jarray& jarray = jni::NewObjectArray(env, value.size(), *floatClass); - - for(size_t i = 0; i < value.size(); i = i + 1) { - Result converted = convert(env, value.at(i)); - jni::SetObjectArrayElement(env, jarray, i, *converted); - } - - return &jarray; - } + Result operator()(jni::JNIEnv& env, const std::vector& value) const; }; // Java -> C++ template <> struct Converter { - Result operator()(jni::JNIEnv& env, const jni::String& value) const { - return { jni::Make(env, value) }; - } + Result operator()(jni::JNIEnv& env, const jni::String& value) const; }; } // namespace conversion -- cgit v1.2.1