move read/writeEmbeddedFrom/ToParcel from hidl_string, hidl_vec, MQDescriptor
Test: mma
Test: hidl_test
Bug: 32756130
Change-Id: I7e9bc359bbffca10474fca883ddd49d3b5e1f716
diff --git a/include/hidl/HidlSupport.h b/include/hidl/HidlSupport.h
index f203ccc..1c468ed 100644
--- a/include/hidl/HidlSupport.h
+++ b/include/hidl/HidlSupport.h
@@ -73,12 +73,6 @@
// for the lifetime of this hidl_string.
void setToExternal(const char *data, size_t size);
- status_t readEmbeddedFromParcel(
- const Parcel &parcel, size_t parentHandle, size_t parentOffset);
-
- status_t writeEmbeddedToParcel(
- Parcel *parcel, size_t parentHandle, size_t parentOffset) const;
-
// offsetof(hidl_string, mBuffer) exposed since mBuffer is private.
static const size_t kOffsetOfBuffer;
@@ -94,6 +88,12 @@
void moveFrom(hidl_string &&);
};
+status_t readEmbeddedFromParcel(hidl_string *string,
+ const Parcel &parcel, size_t parentHandle, size_t parentOffset);
+
+status_t writeEmbeddedToParcel(const hidl_string &string,
+ Parcel *parcel, size_t parentHandle, size_t parentOffset);
+
inline bool operator==(const hidl_string &hs, const char *s) {
return strcmp(hs.c_str(), s) == 0;
}
@@ -236,23 +236,12 @@
mOwnsBuffer = true;
}
- status_t readEmbeddedFromParcel(
- const Parcel &parcel,
- size_t parentHandle,
- size_t parentOffset,
- size_t *handle);
-
- status_t writeEmbeddedToParcel(
- Parcel *parcel,
- size_t parentHandle,
- size_t parentOffset,
- size_t *handle) const;
-
status_t findInParcel(const Parcel &parcel, size_t *handle) const {
return parcel.quickFindBuffer(mBuffer, handle);
}
-
+ // offsetof(hidl_string, mBuffer) exposed since mBuffer is private.
+ static const size_t kOffsetOfBuffer;
private:
T *mBuffer;
size_t mSize;
@@ -274,6 +263,39 @@
}
};
+template <typename T>
+const size_t hidl_vec<T>::kOffsetOfBuffer = offsetof(hidl_vec<T>, mBuffer);
+
+template<typename T>
+status_t readEmbeddedFromParcel(
+ hidl_vec<T> * /*vec*/,
+ const Parcel &parcel,
+ size_t parentHandle,
+ size_t parentOffset,
+ size_t *handle) {
+ const void *ptr = parcel.readEmbeddedBuffer(
+ handle,
+ parentHandle,
+ parentOffset + hidl_vec<T>::kOffsetOfBuffer);
+
+ return ptr != NULL ? OK : UNKNOWN_ERROR;
+}
+
+template<typename T>
+status_t writeEmbeddedToParcel(
+ const hidl_vec<T> &vec,
+ Parcel *parcel,
+ size_t parentHandle,
+ size_t parentOffset,
+ size_t *handle) {
+ return parcel->writeEmbeddedBuffer(
+ vec.data(),
+ sizeof(T) * vec.size(),
+ handle,
+ parentHandle,
+ parentOffset + hidl_vec<T>::kOffsetOfBuffer);
+}
+
////////////////////////////////////////////////////////////////////////////////
namespace details {
@@ -398,36 +420,6 @@
T mBuffer[SIZE1];
};
-////////////////////////////////////////////////////////////////////////////////
-
-template<typename T>
-status_t hidl_vec<T>::readEmbeddedFromParcel(
- const Parcel &parcel,
- size_t parentHandle,
- size_t parentOffset,
- size_t *handle) {
- const void *ptr = parcel.readEmbeddedBuffer(
- handle,
- parentHandle,
- parentOffset + offsetof(hidl_vec<T>, mBuffer));
-
- return ptr != NULL ? OK : UNKNOWN_ERROR;
-}
-
-template<typename T>
-status_t hidl_vec<T>::writeEmbeddedToParcel(
- Parcel *parcel,
- size_t parentHandle,
- size_t parentOffset,
- size_t *handle) const {
- return parcel->writeEmbeddedBuffer(
- mBuffer,
- sizeof(T) * mSize,
- handle,
- parentHandle,
- parentOffset + offsetof(hidl_vec<T>, mBuffer));
-}
-
///////////////////////////// pointers for HIDL
template <typename T>