Add templatization to MQDescriptor

Test: FMQ unit tests
Bug: 33948735

Merged-In: I50a97e4c1278fc9bdcb1bf4d524d33fd9761dec2
Change-Id: I50a97e4c1278fc9bdcb1bf4d524d33fd9761dec2
diff --git a/base/include/hidl/MQDescriptor.h b/base/include/hidl/MQDescriptor.h
index 8043761..ed9279a 100644
--- a/base/include/hidl/MQDescriptor.h
+++ b/base/include/hidl/MQDescriptor.h
@@ -49,7 +49,7 @@
   kUnsynchronizedWrite = 0x02
 };
 
-template <MQFlavor flavor>
+template <typename T, MQFlavor flavor>
 struct MQDescriptor {
     MQDescriptor(
             const std::vector<GrantorDescriptor>& grantors,
@@ -114,26 +114,28 @@
     uint32_t mFlags;
 };
 
-template<MQFlavor flavor>
-const size_t MQDescriptor<flavor>::kOffsetOfGrantors = offsetof(MQDescriptor<flavor>, mGrantors);
+template<typename T, MQFlavor flavor>
+const size_t MQDescriptor<T, flavor>::kOffsetOfGrantors = offsetof(MQDescriptor, mGrantors);
 
-template<MQFlavor flavor>
-const size_t MQDescriptor<flavor>::kOffsetOfHandle = offsetof(MQDescriptor<flavor>, mHandle);
+template<typename T, MQFlavor flavor>
+const size_t MQDescriptor<T, flavor>::kOffsetOfHandle = offsetof(MQDescriptor, mHandle);
 
 /*
  * MQDescriptorSync will describe the wait-free synchronized
  * flavor of FMQ.
  */
-using MQDescriptorSync = MQDescriptor<kSynchronizedReadWrite>;
+template<typename T>
+using MQDescriptorSync = MQDescriptor<T, kSynchronizedReadWrite>;
 
 /*
  * MQDescriptorUnsync will describe the unsynchronized write
  * flavor of FMQ.
  */
-using MQDescriptorUnsync = MQDescriptor<kUnsynchronizedWrite>;
+template<typename T>
+using MQDescriptorUnsync = MQDescriptor<T, kUnsynchronizedWrite>;
 
-template<MQFlavor flavor>
-MQDescriptor<flavor>::MQDescriptor(
+template<typename T, MQFlavor flavor>
+MQDescriptor<T, flavor>::MQDescriptor(
         const std::vector<GrantorDescriptor>& grantors,
         native_handle_t* nhandle,
         size_t size)
@@ -146,8 +148,8 @@
     }
 }
 
-template<MQFlavor flavor>
-MQDescriptor<flavor>::MQDescriptor(size_t bufferSize, native_handle_t *nHandle,
+template<typename T, MQFlavor flavor>
+MQDescriptor<T, flavor>::MQDescriptor(size_t bufferSize, native_handle_t *nHandle,
                                    size_t messageSize, bool configureEventFlag)
     : mHandle(nHandle), mQuantum(messageSize), mFlags(flavor) {
     /*
@@ -180,8 +182,8 @@
     }
 }
 
-template<MQFlavor flavor>
-MQDescriptor<flavor>::MQDescriptor(const MQDescriptor<flavor> &other)
+template<typename T, MQFlavor flavor>
+MQDescriptor<T, flavor>::MQDescriptor(const MQDescriptor<T, flavor> &other)
     : mGrantors(other.mGrantors),
       mHandle(nullptr),
       mQuantum(other.mQuantum),
@@ -200,33 +202,33 @@
     }
 }
 
-template<MQFlavor flavor>
-MQDescriptor<flavor>::MQDescriptor() : MQDescriptor(
+template<typename T, MQFlavor flavor>
+MQDescriptor<T, flavor>::MQDescriptor() : MQDescriptor(
         std::vector<android::hardware::GrantorDescriptor>(),
         nullptr /* nHandle */,
         0 /* size */) {}
 
-template<MQFlavor flavor>
-MQDescriptor<flavor>::~MQDescriptor() {
+template<typename T, MQFlavor flavor>
+MQDescriptor<T, flavor>::~MQDescriptor() {
     if (mHandle != nullptr) {
         native_handle_close(mHandle);
         native_handle_delete(mHandle);
     }
 }
 
-template<MQFlavor flavor>
-size_t MQDescriptor<flavor>::getSize() const {
+template<typename T, MQFlavor flavor>
+size_t MQDescriptor<T, flavor>::getSize() const {
   return mGrantors[DATAPTRPOS].extent;
 }
 
-template<MQFlavor flavor>
-size_t MQDescriptor<flavor>::getQuantum() const { return mQuantum; }
+template<typename T, MQFlavor flavor>
+size_t MQDescriptor<T, flavor>::getQuantum() const { return mQuantum; }
 
-template<MQFlavor flavor>
-int32_t MQDescriptor<flavor>::getFlags() const { return mFlags; }
+template<typename T, MQFlavor flavor>
+int32_t MQDescriptor<T, flavor>::getFlags() const { return mFlags; }
 
-template<MQFlavor flavor>
-std::vector<GrantorDescriptor> MQDescriptor<flavor>::getGrantors() const {
+template<typename T, MQFlavor flavor>
+std::vector<GrantorDescriptor> MQDescriptor<T, flavor>::getGrantors() const {
   size_t grantor_count = mGrantors.size();
   std::vector<GrantorDescriptor> grantors(grantor_count);
   for (size_t i = 0; i < grantor_count; i++) {
@@ -235,8 +237,8 @@
   return grantors;
 }
 
-template<MQFlavor flavor>
-const sp<NativeHandle> MQDescriptor<flavor>::getNativeHandle() const {
+template<typename T, MQFlavor flavor>
+const sp<NativeHandle> MQDescriptor<T, flavor>::getNativeHandle() const {
   /*
    * Create an sp<NativeHandle> from mHandle.
    */