Rework expression conversion (#11490)

* [android] - rework expression conversion
This commit is contained in:
Tobrun
2018-04-10 11:09:42 +02:00
committed by GitHub
parent 351ac83c75
commit 44ce5ab087
26 changed files with 318 additions and 157 deletions

View File

@@ -9,6 +9,23 @@ namespace android {
namespace gson {
jni::Object<JsonObject> JsonObject::New(jni::JNIEnv& env, const std::unordered_map<std::string, mapbox::geometry::value>& values) {
static auto constructor = JsonObject::javaClass.GetConstructor(env);
static auto addMethod = JsonObject::javaClass.GetMethod<void (jni::String, jni::Object<JsonElement>)>(env, "add");
jni::Object<JsonObject> jsonObject = JsonObject::javaClass.New(env, constructor);
for (auto &item : values) {
jni::Object<JsonElement> jsonElement = JsonElement::New(env, item.second);
jni::String key = jni::Make<jni::String>(env, item.first);
jsonObject.Call(env, addMethod, key, jsonElement);
jni::DeleteLocalRef(env, jsonElement);
jni::DeleteLocalRef(env, key);
}
return jsonObject;
}
template <typename F> // void (jni::String, jni::Object<gson::JsonElement>)
static void iterateEntrySet(jni::JNIEnv& env, jni::Object<JsonObject> jsonObject, F callback) {
// Get Set<Map.Entry<String, JsonElement>>