[android] geojson conversion optimisation
This commit is contained in:
committed by
Ivo van Dongen
parent
f70f604e5b
commit
fa7489fb7e
@@ -6,9 +6,15 @@ namespace java {
|
||||
namespace util {
|
||||
|
||||
jni::Class<List> List::javaClass;
|
||||
jni::Class<Set> Set::javaClass;
|
||||
jni::Class<Map> Map::javaClass;
|
||||
jni::Class<Map::Entry> Map::Entry::javaClass;
|
||||
|
||||
void registerNative(jni::JNIEnv& env) {
|
||||
List::javaClass = *jni::Class<List>::Find(env).NewGlobalRef(env).release();
|
||||
Set::javaClass = *jni::Class<Set>::Find(env).NewGlobalRef(env).release();
|
||||
Map::javaClass = *jni::Class<Map>::Find(env).NewGlobalRef(env).release();
|
||||
Map::Entry::javaClass = *jni::Class<Map::Entry>::Find(env).NewGlobalRef(env).release();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,48 @@ public:
|
||||
|
||||
};
|
||||
|
||||
class Set : private mbgl::util::noncopyable {
|
||||
public:
|
||||
|
||||
static constexpr auto Name() { return "java/util/Set"; };
|
||||
|
||||
template<class T>
|
||||
static jni::Array<jni::Object<T>> toArray(jni::JNIEnv& env, jni::Object<Set> list) {
|
||||
static auto toArray = Set::javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray");
|
||||
return (jni::Array<jni::Object<T>>) list.Call(env, toArray);
|
||||
};
|
||||
|
||||
static jni::Class<Set> javaClass;
|
||||
|
||||
};
|
||||
|
||||
class Map : private mbgl::util::noncopyable {
|
||||
public:
|
||||
|
||||
class Entry : private mbgl::util::noncopyable {
|
||||
public:
|
||||
static constexpr auto Name() { return "java/util/Map$Entry"; };
|
||||
|
||||
template <class T>
|
||||
static jni::Object<T> getKey(jni::JNIEnv& env, jni::Object<Entry> entry) {
|
||||
static auto method = Entry::javaClass.GetMethod<jni::Object<> ()>(env, "getKey");
|
||||
return (jni::Object<T>) entry.Call(env, method);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static jni::Object<T> getValue(jni::JNIEnv& env, jni::Object<Entry> entry) {
|
||||
static auto method = Entry::javaClass.GetMethod<jni::Object<> ()>(env, "getValue");
|
||||
return (jni::Object<T>) entry.Call(env, method).Get();
|
||||
}
|
||||
|
||||
static jni::Class<Entry> javaClass;
|
||||
};
|
||||
|
||||
static constexpr auto Name() { return "java/util/Map"; };
|
||||
|
||||
static jni::Class<Map> javaClass;
|
||||
};
|
||||
|
||||
void registerNative(jni::JNIEnv&);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user