From c298ecd563cbd31a1902a1796e7c0150be570e3c Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Thu, 25 Oct 2018 16:18:37 -0700 Subject: libbinder_ndk: templates -> overloading Bug: 111445392 Test: atest android.binder.cts Change-Id: Icc3b6126f5672210b16b6353131d40aa7437c5a0 --- .../ndk/include_ndk/android/binder_parcel_utils.h | 78 +++++----------------- libs/binder/ndk/scripts/gen_parcel_helper.py | 6 +- 2 files changed, 20 insertions(+), 64 deletions(-) (limited to 'libs') diff --git a/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h b/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h index faeb78fdfa..bf0c956b0d 100644 --- a/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h +++ b/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h @@ -76,34 +76,18 @@ static inline void AParcel_stdVectorSetter(void* vectorData, size_t index, T val (*vec)[index] = value; } -/** - * Writes a vector to the next location in a non-null parcel. - */ -template -static inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec); - -/** - * Reads a vector to the next location in a non-null parcel. - */ -template -static inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec); - // @START /** * Writes a vector of int32_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeInt32Array(parcel, vec.data(), vec.size()); } /** * Reads a vector of int32_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readInt32Array(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -112,18 +96,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, /** * Writes a vector of uint32_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeUint32Array(parcel, vec.data(), vec.size()); } /** * Reads a vector of uint32_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readUint32Array(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -132,18 +112,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, /** * Writes a vector of int64_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeInt64Array(parcel, vec.data(), vec.size()); } /** * Reads a vector of int64_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readInt64Array(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -152,18 +128,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, /** * Writes a vector of uint64_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeUint64Array(parcel, vec.data(), vec.size()); } /** * Reads a vector of uint64_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readUint64Array(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -172,16 +144,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, /** * Writes a vector of float to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeFloatArray(parcel, vec.data(), vec.size()); } /** * Reads a vector of float from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readFloatArray(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -190,17 +160,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vec /** * Writes a vector of double to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeDoubleArray(parcel, vec.data(), vec.size()); } /** * Reads a vector of double from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readDoubleArray(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -209,8 +176,7 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, std::ve /** * Writes a vector of bool to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeBoolArray(parcel, static_cast(&vec), AParcel_stdVectorGetter, vec.size()); } @@ -218,8 +184,7 @@ inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vec /** * Reads a vector of bool from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readBoolArray(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorSetter); @@ -228,18 +193,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vect /** * Writes a vector of char16_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeCharArray(parcel, vec.data(), vec.size()); } /** * Reads a vector of char16_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readCharArray(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); @@ -248,17 +209,14 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, /** * Writes a vector of int8_t to the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { +inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector& vec) { return AParcel_writeByteArray(parcel, vec.data(), vec.size()); } /** * Reads a vector of int8_t from the next location in a non-null parcel. */ -template <> -inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { +inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector* vec) { void* vectorData = static_cast(vec); return AParcel_readByteArray(parcel, &vectorData, &AParcel_stdVectorReallocator, AParcel_stdVectorGetter); diff --git a/libs/binder/ndk/scripts/gen_parcel_helper.py b/libs/binder/ndk/scripts/gen_parcel_helper.py index 45f8d06883..2cf10d3b7a 100755 --- a/libs/binder/ndk/scripts/gen_parcel_helper.py +++ b/libs/binder/ndk/scripts/gen_parcel_helper.py @@ -152,8 +152,7 @@ def main(): cpp_helper += "/**\n" cpp_helper += " * Writes a vector of " + cpp + " to the next location in a non-null parcel.\n" cpp_helper += " */\n" - cpp_helper += "template<>\n" - cpp_helper += "inline binder_status_t AParcel_writeVector<" + cpp + ">(AParcel* parcel, const std::vector<" + cpp + ">& vec) {\n" + cpp_helper += "inline binder_status_t AParcel_writeVector(AParcel* parcel, const std::vector<" + cpp + ">& vec) {\n" write_args = "vec.data()" if nca: write_args = "static_cast(&vec), AParcel_stdVectorGetter<" + cpp + ">" cpp_helper += " return AParcel_write" + pretty + "Array(parcel, " + write_args + ", vec.size());\n" @@ -162,8 +161,7 @@ def main(): cpp_helper += "/**\n" cpp_helper += " * Reads a vector of " + cpp + " from the next location in a non-null parcel.\n" cpp_helper += " */\n" - cpp_helper += "template<>\n" - cpp_helper += "inline binder_status_t AParcel_readVector<" + cpp + ">(const AParcel* parcel, std::vector<" + cpp + ">* vec) {\n" + cpp_helper += "inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector<" + cpp + ">* vec) {\n" cpp_helper += " void* vectorData = static_cast(vec);\n" read_args = [] read_args += ["parcel"] -- cgit v1.2.3-59-g8ed1b