#pragma once #include #include namespace mbgl { namespace android { namespace java { namespace util { class List : private mbgl::util::noncopyable { public: static constexpr auto Name() { return "java/util/List"; }; template static jni::Array> toArray(jni::JNIEnv& env, jni::Object list) { static auto toArray = List::javaClass.GetMethod> ()>(env, "toArray"); return (jni::Array>) list.Call(env, toArray); }; static jni::Class javaClass; }; class Arrays : private mbgl::util::noncopyable { public: static constexpr auto Name() { return "java/util/Arrays"; }; template static jni::Object asList(jni::JNIEnv& env, jni::Array> array) { static auto asList = Arrays::javaClass.GetStaticMethod(jni::Array>)>(env, "asList"); return javaClass.Call(env, asList, (jni::Array>) array); } static jni::Class javaClass; }; class Set : private mbgl::util::noncopyable { public: static constexpr auto Name() { return "java/util/Set"; }; template static jni::Array> toArray(jni::JNIEnv& env, jni::Object list) { static auto toArray = Set::javaClass.GetMethod> ()>(env, "toArray"); return (jni::Array>) list.Call(env, toArray); }; static jni::Class 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 static jni::Object getKey(jni::JNIEnv& env, jni::Object entry) { static auto method = Entry::javaClass.GetMethod ()>(env, "getKey"); return (jni::Object) entry.Call(env, method); } template static jni::Object getValue(jni::JNIEnv& env, jni::Object entry) { static auto method = Entry::javaClass.GetMethod ()>(env, "getValue"); return (jni::Object) entry.Call(env, method).Get(); } static jni::Class javaClass; }; static constexpr auto Name() { return "java/util/Map"; }; static jni::Class javaClass; }; void registerNative(jni::JNIEnv&); } // namespace util } // namespace java } // namespace android } // namespace mbgl