From c51b2c9deb1189ec4ca583efbc9bc404aa10b325 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Wed, 14 Nov 2018 10:12:02 -0800 Subject: libbinder_ndk: align parcel_utils and parcel order The general order of binder_parcel.h is: Helper types, Binder, BarcelFileDescriptor, Status, String, Primitives And within each of these sections is first the bare type and then the array type. Since I will be adding more utility functions shortly, I am re-ordering binder_parcel_utils.h so that it matches the binder_parcel.h file. Bug: 111445392 Test: N/A Change-Id: Ie8072766dfe1169719739b8bb5c4fe7c78fb2723 --- .../ndk/include_ndk/android/binder_parcel_utils.h | 144 ++++++++++----------- 1 file changed, 72 insertions(+), 72 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 2ccbe5a306..59c06ae610 100644 --- a/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h +++ b/libs/binder/ndk/include_ndk/android/binder_parcel_utils.h @@ -84,6 +84,78 @@ static inline void AParcel_stdVectorSetter(void* vectorData, size_t index, T val (*vec)[index] = value; } +/** + * Allocates a std::string to length and returns the underlying buffer. For use with + * AParcel_readString. See use below in AParcel_readString(const AParcel*, std::string*). + */ +static inline char* AParcel_stdStringAllocator(void* stringData, size_t length) { + std::string* str = static_cast(stringData); + str->resize(length - 1); + return &(*str)[0]; +} + +/** + * Allocates a std::string inside of a std::vector at index index to size 'length'. + */ +static inline char* AParcel_stdVectorStringElementAllocator(void* vectorData, size_t index, + size_t length) { + std::vector* vec = static_cast*>(vectorData); + + std::string& element = vec->at(index); + element.resize(length - 1); + return &element[0]; +} + +/** + * This gets the length and buffer of a std::string inside of a std::vector at index + * index. + */ +static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, + size_t* outLength) { + const std::vector* vec = static_cast*>(vectorData); + + const std::string& element = vec->at(index); + + *outLength = element.size(); + return element.c_str(); +} + +/** + * Convenience API for writing a std::string. + */ +static inline binder_status_t AParcel_writeString(AParcel* parcel, const std::string& str) { + return AParcel_writeString(parcel, str.c_str(), str.size()); +} + +/** + * Convenience API for reading a std::string. + */ +static inline binder_status_t AParcel_readString(const AParcel* parcel, std::string* str) { + void* stringData = static_cast(str); + return AParcel_readString(parcel, stringData, AParcel_stdStringAllocator); +} + +/** + * Convenience API for writing a std::vector + */ +static inline binder_status_t AParcel_writeVector(AParcel* parcel, + const std::vector& vec) { + const void* vectorData = static_cast(&vec); + return AParcel_writeStringArray(parcel, vectorData, vec.size(), + AParcel_stdVectorStringElementGetter); +} + +/** + * Convenience API for reading a std::vector + */ +static inline binder_status_t AParcel_readVector(const AParcel* parcel, + std::vector* vec) { + void* vectorData = static_cast(vec); + return AParcel_readStringArray(parcel, vectorData, + AParcel_stdVectorExternalAllocator, + AParcel_stdVectorStringElementAllocator); +} + // @START /** * Writes a vector of int32_t to the next location in a non-null parcel. @@ -224,78 +296,6 @@ inline binder_status_t AParcel_readVector(const AParcel* parcel, std::vector(stringData); - str->resize(length - 1); - return &(*str)[0]; -} - -/** - * Allocates a std::string inside of a std::vector at index index to size 'length'. - */ -static inline char* AParcel_stdVectorStringElementAllocator(void* vectorData, size_t index, - size_t length) { - std::vector* vec = static_cast*>(vectorData); - - std::string& element = vec->at(index); - element.resize(length - 1); - return &element[0]; -} - -/** - * This gets the length and buffer of a std::string inside of a std::vector at index - * index. - */ -static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, - size_t* outLength) { - const std::vector* vec = static_cast*>(vectorData); - - const std::string& element = vec->at(index); - - *outLength = element.size(); - return element.c_str(); -} - -/** - * Convenience API for writing a std::string. - */ -static inline binder_status_t AParcel_writeString(AParcel* parcel, const std::string& str) { - return AParcel_writeString(parcel, str.c_str(), str.size()); -} - -/** - * Convenience API for reading a std::string. - */ -static inline binder_status_t AParcel_readString(const AParcel* parcel, std::string* str) { - void* stringData = static_cast(str); - return AParcel_readString(parcel, stringData, AParcel_stdStringAllocator); -} - -/** - * Convenience API for writing a std::vector - */ -static inline binder_status_t AParcel_writeVector(AParcel* parcel, - const std::vector& vec) { - const void* vectorData = static_cast(&vec); - return AParcel_writeStringArray(parcel, vectorData, vec.size(), - AParcel_stdVectorStringElementGetter); -} - -/** - * Convenience API for reading a std::vector - */ -static inline binder_status_t AParcel_readVector(const AParcel* parcel, - std::vector* vec) { - void* vectorData = static_cast(vec); - return AParcel_readStringArray(parcel, vectorData, - AParcel_stdVectorExternalAllocator, - AParcel_stdVectorStringElementAllocator); -} - /** * Convenience API for writing the size of a vector. */ -- cgit v1.2.3-59-g8ed1b