Index: base/android/jni_array.cc |
diff --git a/base/android/jni_array.cc b/base/android/jni_array.cc |
index bc922f883c2f8c296fbbfdd4a2590afc2fb11bc9..431eea0151d7e345c76e8f5d6c9fc2106974d50c 100644 |
--- a/base/android/jni_array.cc |
+++ b/base/android/jni_array.cc |
@@ -235,5 +235,28 @@ void JavaArrayOfByteArrayToStringVector( |
} |
} |
+void JavaArrayOfIntArrayToIntVector( |
+ JNIEnv* env, |
+ jobjectArray array, |
+ std::vector<std::vector<int>>* out) { |
+ DCHECK(out); |
+ size_t len = SafeGetArrayLength(env, array); |
+ out->resize(len); |
+ for (size_t i = 0; i < len; ++i) { |
+ ScopedJavaLocalRef<jintArray> int_array( |
+ env, static_cast<jintArray>(env->GetObjectArrayElement(array, i))); |
+ jsize array_len = env->GetArrayLength(int_array.obj()); |
+ jint* ints = env->GetIntArrayElements(int_array.obj(), nullptr); |
+ std::vector<int> vector_ints = out->at(i); |
+ vector_ints.resize(array_len); |
rmcilroy
2015/10/28 11:22:11
Is there a reason you can't use assign here, i.e:
Theresa
2015/10/28 22:20:58
I get a reinterpret cast error:
../../base/android
|
+ for (jsize j = 0; j < array_len; ++j) { |
+ vector_ints[j] = static_cast<int>(ints[j]); |
+ } |
+ |
+ (*out)[i] = vector_ints; |
+ env->ReleaseIntArrayElements(int_array.obj(), ints, JNI_ABORT); |
+ } |
+} |
+ |
} // namespace android |
} // namespace base |