Android: Generate JNI code for stats
This CL also unifies the functions for converting from C++ to Java, and generates the boiler plate for converting C++ vectors to Java arrays. Bug: webrtc:8278 Change-Id: I262e9162beae8a64ba0e8b6a27e1081207b03961 Reviewed-on: https://webrtc-review.googlesource.com/26020 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20918}
This commit is contained in:
committed by
Commit Bot
parent
3fb614bc93
commit
aede67a199
@ -98,9 +98,6 @@ bool GetBooleanField(JNIEnv* jni, jobject object, jfieldID id);
|
||||
// Returns true if |obj| == null in Java.
|
||||
bool IsNull(JNIEnv* jni, jobject obj);
|
||||
|
||||
// Given a UTF-8 encoded |native| string return a new (UTF-16) jstring.
|
||||
jstring JavaStringFromStdString(JNIEnv* jni, const std::string& native);
|
||||
|
||||
// Given a (UTF-16) jstring return a new UTF-8 native string.
|
||||
std::string JavaToStdString(JNIEnv* jni, const jstring& j_string);
|
||||
|
||||
@ -108,12 +105,16 @@ std::string JavaToStdString(JNIEnv* jni, const jstring& j_string);
|
||||
// return a new vector of UTF-8 native strings.
|
||||
std::vector<std::string> JavaToStdVectorStrings(JNIEnv* jni, jobject list);
|
||||
|
||||
rtc::Optional<int32_t> JavaIntegerToOptionalInt(JNIEnv* jni, jobject integer);
|
||||
rtc::Optional<int32_t> JavaToNativeOptionalInt(JNIEnv* jni, jobject integer);
|
||||
|
||||
jobject JavaIntegerFromOptionalInt(JNIEnv* jni,
|
||||
const rtc::Optional<int32_t>& optional_int);
|
||||
|
||||
jobject JavaIntegerFromInt(JNIEnv* jni, int32_t i);
|
||||
jobject NativeToJavaBoolean(JNIEnv* env, bool b);
|
||||
jobject NativeToJavaInteger(JNIEnv* jni, int32_t i);
|
||||
jobject NativeToJavaLong(JNIEnv* env, int64_t u);
|
||||
jobject NativeToJavaDouble(JNIEnv* env, double d);
|
||||
// Given a UTF-8 encoded |native| string return a new (UTF-16) jstring.
|
||||
jstring NativeToJavaString(JNIEnv* jni, const std::string& native);
|
||||
jobject NativeToJavaInteger(JNIEnv* jni,
|
||||
const rtc::Optional<int32_t>& optional_int);
|
||||
|
||||
// Return the (singleton) Java Enum object corresponding to |index|;
|
||||
jobject JavaEnumFromIndex(JNIEnv* jni, jclass state_class,
|
||||
@ -228,6 +229,37 @@ class Iterable {
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(Iterable);
|
||||
};
|
||||
|
||||
// Helper function for converting std::vector<T> into a Java array.
|
||||
template <typename T, typename Convert>
|
||||
jobjectArray NativeToJavaObjectArray(JNIEnv* env,
|
||||
const std::vector<T>& container,
|
||||
jclass clazz,
|
||||
Convert convert) {
|
||||
jobjectArray j_container =
|
||||
env->NewObjectArray(container.size(), clazz, nullptr);
|
||||
int i = 0;
|
||||
for (const T& element : container) {
|
||||
jobject j_element = convert(env, element);
|
||||
env->SetObjectArrayElement(j_container, i, j_element);
|
||||
// Delete local ref immediately since we might create a lot of local
|
||||
// references in this loop.
|
||||
env->DeleteLocalRef(j_element);
|
||||
++i;
|
||||
}
|
||||
return j_container;
|
||||
}
|
||||
|
||||
jobjectArray NativeToJavaIntegerArray(JNIEnv* env,
|
||||
const std::vector<int32_t>& container);
|
||||
jobjectArray NativeToJavaBooleanArray(JNIEnv* env,
|
||||
const std::vector<bool>& container);
|
||||
jobjectArray NativeToJavaLongArray(JNIEnv* env,
|
||||
const std::vector<int64_t>& container);
|
||||
jobjectArray NativeToJavaDoubleArray(JNIEnv* env,
|
||||
const std::vector<double>& container);
|
||||
jobjectArray NativeToJavaStringArray(JNIEnv* env,
|
||||
const std::vector<std::string>& container);
|
||||
|
||||
} // namespace jni
|
||||
} // namespace webrtc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user