[android] jni high level binding refactor

This commit is contained in:
Ivo van Dongen
2017-02-16 16:16:47 +02:00
committed by Ivo van Dongen
parent 7d9018093a
commit 465c949153
62 changed files with 3710 additions and 2847 deletions

View File

@@ -0,0 +1,18 @@
#include "util.hpp"
namespace mbgl {
namespace android {
namespace java {
namespace util {
jni::Class<List> List::javaClass;
void registerNative(jni::JNIEnv& env) {
List::javaClass = *jni::Class<List>::Find(env).NewGlobalRef(env).release();
}
} // namespace util
} // namespace java
} // namespace android
} // namespace mbgl

View File

@@ -0,0 +1,33 @@
#pragma once
#include <mbgl/util/noncopyable.hpp>
#include <jni/jni.hpp>
namespace mbgl {
namespace android {
namespace java {
namespace util {
class List : private mbgl::util::noncopyable {
public:
static constexpr auto Name() { return "java/util/List"; };
template<class T>
static jni::Array<jni::Object<T>> toArray(jni::JNIEnv& env, jni::Object<List> list) {
static auto toArray = List::javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray");
return (jni::Array<jni::Object<T>>) list.Call(env, toArray);
};
static jni::Class<List> javaClass;
};
void registerNative(jni::JNIEnv&);
} // namespace util
} // namespace java
} // namespace android
} // namespace mbgl