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/MQDescriptor.h b/include/hidl/MQDescriptor.h
index 6e43749..f323834 100644
--- a/include/hidl/MQDescriptor.h
+++ b/include/hidl/MQDescriptor.h
@@ -69,20 +69,29 @@
 
     int32_t getFlags() const;
 
-    ::android::status_t readEmbeddedFromParcel(
-            const ::android::hardware::Parcel &parcel,
-            size_t parentHandle,
-            size_t parentOffset);
-
-    ::android::status_t writeEmbeddedToParcel(
-            ::android::hardware::Parcel *parcel,
-            size_t parentHandle,
-            size_t parentOffset) const;
-
     bool isHandleValid() const { return mHandle != nullptr; }
     size_t countGrantors() const { return mGrantors.size(); }
     std::vector<GrantorDescriptor> getGrantors() const;
     const sp<NativeHandle> getNativeHandle() const;
+
+    inline const ::android::hardware::hidl_vec<GrantorDescriptor> &grantors() const {
+        return mGrantors;
+    }
+
+    inline ::android::hardware::hidl_vec<GrantorDescriptor> &grantors() {
+        return mGrantors;
+    }
+
+    inline const ::native_handle_t *handle() const {
+        return mHandle;
+    }
+
+    inline ::native_handle_t *handle() {
+        return mHandle;
+    }
+
+    static const size_t kOffsetOfGrantors;
+    static const size_t kOffsetOfHandle;
     /*
      * There should atleast be GrantorDescriptors for the read counter, write
      * counter and data buffer.
@@ -96,6 +105,12 @@
     uint32_t mFlags;
 };
 
+template<MQFlavor flavor>
+const size_t MQDescriptor<flavor>::kOffsetOfGrantors = offsetof(MQDescriptor<flavor>, mGrantors);
+
+template<MQFlavor flavor>
+const size_t MQDescriptor<flavor>::kOffsetOfHandle = offsetof(MQDescriptor<flavor>, mHandle);
+
 /*
  * MQDescriptorSync will describe the wait-free synchronized
  * flavor of FMQ.
@@ -179,26 +194,27 @@
 }
 
 template<MQFlavor flavor>
-::android::status_t MQDescriptor<flavor>::readEmbeddedFromParcel(
-    const Parcel &parcel,
-    size_t parentHandle,
-    size_t parentOffset) {
+::android::status_t readEmbeddedFromParcel(
+        MQDescriptor<flavor> *obj,
+        const ::android::hardware::Parcel &parcel,
+        size_t parentHandle,
+        size_t parentOffset) {
     ::android::status_t _hidl_err = ::android::OK;
 
     size_t _hidl_grantors_child;
 
-    _hidl_err = const_cast<hidl_vec<GrantorDescriptor> *>(
-            &mGrantors)->readEmbeddedFromParcel(
+    _hidl_err = ::android::hardware::readEmbeddedFromParcel(
+                &obj->grantors(),
                 parcel,
                 parentHandle,
-                parentOffset + offsetof(MQDescriptor, mGrantors),
+                parentOffset + MQDescriptor<flavor>::kOffsetOfGrantors,
                 &_hidl_grantors_child);
 
     if (_hidl_err != ::android::OK) { return _hidl_err; }
 
     const native_handle_t *_hidl_mq_handle_ptr = parcel.readEmbeddedNativeHandle(
             parentHandle,
-            parentOffset + offsetof(MQDescriptor, mHandle));
+            parentOffset + MQDescriptor<flavor>::kOffsetOfHandle);
 
     if (_hidl_mq_handle_ptr == nullptr) {
         _hidl_err = ::android::UNKNOWN_ERROR;
@@ -209,26 +225,28 @@
 }
 
 template<MQFlavor flavor>
-::android::status_t MQDescriptor<flavor>::writeEmbeddedToParcel(
-    Parcel *parcel,
-    size_t parentHandle,
-    size_t parentOffset) const {
+::android::status_t writeEmbeddedToParcel(
+        const MQDescriptor<flavor> &obj,
+        ::android::hardware::Parcel *parcel,
+        size_t parentHandle,
+        size_t parentOffset) {
     ::android::status_t _hidl_err = ::android::OK;
 
     size_t _hidl_grantors_child;
 
-    _hidl_err = mGrantors.writeEmbeddedToParcel(
+    _hidl_err = ::android::hardware::writeEmbeddedToParcel(
+            obj.grantors(),
             parcel,
             parentHandle,
-            parentOffset + offsetof(MQDescriptor, mGrantors),
+            parentOffset + MQDescriptor<flavor>::kOffsetOfGrantors,
             &_hidl_grantors_child);
 
     if (_hidl_err != ::android::OK) { return _hidl_err; }
 
     _hidl_err = parcel->writeEmbeddedNativeHandle(
-            mHandle,
+            obj.handle(),
             parentHandle,
-            parentOffset + offsetof(MQDescriptor, mHandle));
+            parentOffset + MQDescriptor<flavor>::kOffsetOfHandle);
 
     if (_hidl_err != ::android::OK) { return _hidl_err; }