msgbuf: Define a separate msgbuf structure for encode/decode function

Define separate msgbuf structures to avoid casting away const-qualifiers
in the msgbuf constructor function:

* pldm_msgbuf_rw: for encode functions with non const-qualified buffer
* pldm_msgbuf_ro: for decode functions with const-qualified buffer

Further, use _Generic() to keep the API ergonomic while still yielding a
compile error when wrong msgbuf type is passed.

Change-Id: I71dbcb7996e9fb402b49870fce539a939c1497e5
Signed-off-by: John Chung <john.chung@arm.com>
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
diff --git a/tests/dsp/file.cpp b/tests/dsp/file.cpp
index b8fe67f..6dc4296 100644
--- a/tests/dsp/file.cpp
+++ b/tests/dsp/file.cpp
@@ -1,12 +1,12 @@
+#include "msgbuf.hpp"
+
+#include <libpldm/base.h>
 #include <libpldm/file.h>
 #include <libpldm/pldm_types.h>
 
 #include <array>
 #include <cstdint>
 #include <cstring>
-#include <vector>
-
-#include "msgbuf.h"
 
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
@@ -93,7 +93,7 @@
 
     struct pldm_file_df_open_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_RESP_BYTES;
@@ -124,7 +124,7 @@
 
     struct pldm_file_df_open_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_RESP_BYTES;
@@ -155,7 +155,7 @@
 
     struct pldm_file_df_open_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_RESP_BYTES;
@@ -256,7 +256,7 @@
 
     struct pldm_file_df_close_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_CLOSE_RESP_BYTES;
@@ -285,7 +285,7 @@
 
     struct pldm_file_df_close_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_CLOSE_RESP_BYTES;
@@ -390,7 +390,7 @@
 
     struct pldm_file_df_heartbeat_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
@@ -422,7 +422,7 @@
 
     struct pldm_file_df_heartbeat_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
@@ -455,7 +455,7 @@
 
     struct pldm_file_df_heartbeat_resp resp_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
@@ -568,7 +568,7 @@
 
     struct pldm_file_df_open_req req_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_REQ_BYTES;
@@ -600,7 +600,7 @@
 
     struct pldm_file_df_open_req req_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_REQ_BYTES;
@@ -632,7 +632,7 @@
 
     struct pldm_file_df_open_req req_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_OPEN_REQ_BYTES;
@@ -701,7 +701,7 @@
 
     struct pldm_file_df_close_req req_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_CLOSE_REQ_BYTES;
@@ -733,7 +733,7 @@
 
     struct pldm_file_df_close_req req_data = {};
 
-    PLDM_MSGBUF_DEFINE_P(buf);
+    PLDM_MSGBUF_RW_DEFINE_P(buf);
     int rc;
 
     static constexpr const size_t payload_length = PLDM_DF_CLOSE_REQ_BYTES;