diff options
| author | Kenny Root <kroot@google.com> | 2013-05-20 15:52:47 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-05-20 15:52:47 +0000 |
| commit | cf5ac0ec696fce7fac6b324ec7d4d6da217e501c (patch) | |
| tree | 746d5e02fccef765f2c1a4344fc07ee5659e8305 | |
| parent | 89544997f88c808a03865ac7b3eac217f6cf036f (diff) | |
| parent | 389e088269eb7d3c8ee0bff7e37f79088ce62361 (diff) | |
| download | platform_libnativehelper-cf5ac0ec696fce7fac6b324ec7d4d6da217e501c.tar.gz platform_libnativehelper-cf5ac0ec696fce7fac6b324ec7d4d6da217e501c.tar.bz2 platform_libnativehelper-cf5ac0ec696fce7fac6b324ec7d4d6da217e501c.zip | |
Merge "Scoped primitive arrays: allow them to be null"
| -rw-r--r-- | include/nativehelper/ScopedPrimitiveArray.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/nativehelper/ScopedPrimitiveArray.h b/include/nativehelper/ScopedPrimitiveArray.h index f6626b2..d797b9d 100644 --- a/include/nativehelper/ScopedPrimitiveArray.h +++ b/include/nativehelper/ScopedPrimitiveArray.h @@ -26,6 +26,8 @@ #define INSTANTIATE_SCOPED_PRIMITIVE_ARRAY_RO(PRIMITIVE_TYPE, NAME) \ class Scoped ## NAME ## ArrayRO { \ public: \ + explicit Scoped ## NAME ## ArrayRO(JNIEnv* env) \ + : mEnv(env), mJavaArray(NULL), mRawArray(NULL) {} \ Scoped ## NAME ## ArrayRO(JNIEnv* env, PRIMITIVE_TYPE ## Array javaArray) \ : mEnv(env), mJavaArray(javaArray), mRawArray(NULL) { \ if (mJavaArray == NULL) { \ @@ -39,6 +41,10 @@ mEnv->Release ## NAME ## ArrayElements(mJavaArray, mRawArray, JNI_ABORT); \ } \ } \ + void reset(PRIMITIVE_TYPE ## Array javaArray) { \ + mJavaArray = javaArray; \ + mRawArray = mEnv->Get ## NAME ## ArrayElements(mJavaArray, NULL); \ + } \ const PRIMITIVE_TYPE* get() const { return mRawArray; } \ PRIMITIVE_TYPE ## Array getJavaArray() const { return mJavaArray; } \ const PRIMITIVE_TYPE& operator[](size_t n) const { return mRawArray[n]; } \ @@ -69,6 +75,8 @@ INSTANTIATE_SCOPED_PRIMITIVE_ARRAY_RO(jshort, Short); #define INSTANTIATE_SCOPED_PRIMITIVE_ARRAY_RW(PRIMITIVE_TYPE, NAME) \ class Scoped ## NAME ## ArrayRW { \ public: \ + explicit Scoped ## NAME ## ArrayRW(JNIEnv* env) \ + : mEnv(env), mJavaArray(NULL), mRawArray(NULL) {} \ Scoped ## NAME ## ArrayRW(JNIEnv* env, PRIMITIVE_TYPE ## Array javaArray) \ : mEnv(env), mJavaArray(javaArray), mRawArray(NULL) { \ if (mJavaArray == NULL) { \ @@ -82,6 +90,10 @@ INSTANTIATE_SCOPED_PRIMITIVE_ARRAY_RO(jshort, Short); mEnv->Release ## NAME ## ArrayElements(mJavaArray, mRawArray, 0); \ } \ } \ + void reset(PRIMITIVE_TYPE ## Array javaArray) { \ + mJavaArray = javaArray; \ + mRawArray = mEnv->Get ## NAME ## ArrayElements(mJavaArray, NULL); \ + } \ const PRIMITIVE_TYPE* get() const { return mRawArray; } \ PRIMITIVE_TYPE ## Array getJavaArray() const { return mJavaArray; } \ const PRIMITIVE_TYPE& operator[](size_t n) const { return mRawArray[n]; } \ |
