diff options
Diffstat (limited to 'platform/android/src/java/util.hpp')
| -rw-r--r-- | platform/android/src/java/util.hpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/platform/android/src/java/util.hpp b/platform/android/src/java/util.hpp index 1a552c7124..dedb8ac348 100644 --- a/platform/android/src/java/util.hpp +++ b/platform/android/src/java/util.hpp @@ -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&); |
