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;