diff options
Diffstat (limited to 'platform/android/src/conversion/collection.cpp')
-rw-r--r-- | platform/android/src/conversion/collection.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/platform/android/src/conversion/collection.cpp b/platform/android/src/conversion/collection.cpp index 27b614e8cd..954a161baf 100644 --- a/platform/android/src/conversion/collection.cpp +++ b/platform/android/src/conversion/collection.cpp @@ -5,20 +5,28 @@ namespace mbgl { namespace android { namespace conversion { -std::vector<std::string> toVector(JNIEnv& env, jni::Array<jni::String> array) { +std::vector<std::string> toVector(JNIEnv& env, const jni::Array<jni::String>& array) { std::size_t len = array.Length(env); std::vector<std::string> vector; vector.reserve(len); for (std::size_t i = 0; i < len; i++) { - jni::String jstr = array.Get(env, i); - vector.push_back(*convert<std::string, jni::String>(env, jstr)); - jni::DeleteLocalRef(env, jstr); + vector.push_back(jni::Make<std::string>(env, array.Get(env, i))); } return vector; } +jni::Local<jni::Array<jni::String>> toArray(JNIEnv& env, const std::vector<std::string>& vector) { + auto result = jni::Array<jni::String>::New(env, vector.size()); + + for (std::size_t i = 0; i < vector.size(); i++) { + result.Set(env, i, jni::Make<jni::String>(env, vector.at(i))); + } + + return result; +} + } } } |