Chromium Code Reviews| 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 |