[android] geojson conversion optimisation

This commit is contained in:
Ivo van Dongen
2017-03-22 15:05:03 +02:00
committed by Ivo van Dongen
parent f70f604e5b
commit fa7489fb7e
47 changed files with 1266 additions and 134 deletions

View File

@@ -22,7 +22,7 @@ namespace android {
// Instance
Value::Value(jni::JNIEnv& env, jni::jobject* _value) : jenv(env), value(_value, ObjectDeleter(env)) {}
Value::Value(jni::JNIEnv& _env, jni::jobject* _value) : env(_env), value(_value, ObjectDeleter(env)) {}
Value::~Value() = default;
@@ -31,59 +31,59 @@ namespace android {
}
bool Value::isArray() const {
return jni::IsInstanceOf(jenv, value.get(), *java::ObjectArray::jclass);
return jni::IsInstanceOf(env, value.get(), *java::ObjectArray::jclass);
}
bool Value::isObject() const {
return jni::IsInstanceOf(jenv, value.get(), *java::Map::jclass);;
return jni::IsInstanceOf(env, value.get(), *java::Map::jclass);;
}
bool Value::isString() const {
return jni::IsInstanceOf(jenv, value.get(), *java::String::jclass);
return jni::IsInstanceOf(env, value.get(), *java::String::jclass);
}
bool Value::isBool() const {
return jni::IsInstanceOf(jenv, value.get(), *java::Boolean::jclass);
return jni::IsInstanceOf(env, value.get(), *java::Boolean::jclass);
}
bool Value::isNumber() const {
return jni::IsInstanceOf(jenv, value.get(), *java::Number::jclass);
return jni::IsInstanceOf(env, value.get(), *java::Number::jclass);
}
std::string Value::toString() const {
jni::jstring* string = reinterpret_cast<jni::jstring*>(value.get());
return jni::Make<std::string>(jenv, jni::String(string));
return jni::Make<std::string>(env, jni::String(string));
}
float Value::toFloat() const {
return jni::CallMethod<jni::jfloat>(jenv, value.get(), *java::Number::floatValueMethodId);
return jni::CallMethod<jni::jfloat>(env, value.get(), *java::Number::floatValueMethodId);
}
double Value::toDouble() const {
return jni::CallMethod<jni::jdouble>(jenv, value.get(), *java::Number::doubleValueMethodId);
return jni::CallMethod<jni::jdouble>(env, value.get(), *java::Number::doubleValueMethodId);
}
long Value::toLong() const {
return jni::CallMethod<jni::jlong>(jenv, value.get(), *java::Number::longValueMethodId);
return jni::CallMethod<jni::jlong>(env, value.get(), *java::Number::longValueMethodId);
}
bool Value::toBool() const {
return jni::CallMethod<jni::jboolean>(jenv, value.get(), *java::Boolean::booleanValueMethodId);
return jni::CallMethod<jni::jboolean>(env, value.get(), *java::Boolean::booleanValueMethodId);
}
Value Value::get(const char* key) const {
jni::jobject* member = jni::CallMethod<jni::jobject*>(jenv, value.get(), *java::Map::getMethodId, jni::Make<jni::String>(jenv, std::string(key)).Get());
return Value(jenv, member);
jni::jobject* member = jni::CallMethod<jni::jobject*>(env, value.get(), *java::Map::getMethodId, jni::Make<jni::String>(env, std::string(key)).Get());
return Value(env, member);
}
int Value::getLength() const {
auto array = (jni::jarray<jni::jobject>*) value.get();
return jni::GetArrayLength(jenv, *array);
return jni::GetArrayLength(env, *array);
}
Value Value::get(const int index ) const {
Value Value::get(const int index) const {
auto array = (jni::jarray<jni::jobject>*) value.get();
return Value(jenv, jni::GetObjectArrayElement(jenv, *array, index));
return Value(env, jni::GetObjectArrayElement(env, *array, index));
}
}
}