Enable cppcoreguidelines-special-member-functions checks
Part of enforcing cpp core guidelines involves explicitly including all
constructors required on a non-trivial class. We were missing quite a
few. In all cases, the copy/move/and operator= methods are simply
deleted.
Signed-off-by: Ed Tanous <edtanous@google.com>
Change-Id: Ie8d6e8bf2bc311fa21a9ae48b0d61ee5c1940999
diff --git a/include/async_resolve.hpp b/include/async_resolve.hpp
index 563d816..c69fd87 100644
--- a/include/async_resolve.hpp
+++ b/include/async_resolve.hpp
@@ -20,6 +20,11 @@
~Resolver() = default;
+ Resolver(const Resolver&) = delete;
+ Resolver(Resolver&&) = delete;
+ Resolver& operator=(const Resolver&) = delete;
+ Resolver& operator=(Resolver&&) = delete;
+
template <typename ResolveHandler>
void asyncResolve(const std::string& host, const std::string& port,
ResolveHandler&& handler)
diff --git a/include/async_resp.hpp b/include/async_resp.hpp
index 8e9584c..607d168 100644
--- a/include/async_resp.hpp
+++ b/include/async_resp.hpp
@@ -24,6 +24,8 @@
AsyncResp(const AsyncResp&) = delete;
AsyncResp(AsyncResp&&) = delete;
+ AsyncResp& operator=(const AsyncResp&) = delete;
+ AsyncResp& operator=(AsyncResp&&) = delete;
~AsyncResp()
{
diff --git a/include/ibm/locks.hpp b/include/ibm/locks.hpp
index fb8b396..8e04b84 100644
--- a/include/ibm/locks.hpp
+++ b/include/ibm/locks.hpp
@@ -128,6 +128,14 @@
public:
/*
+ * Explicitly deleted copy and move constructors
+ */
+ Lock(const Lock&) = delete;
+ Lock(Lock&&) = delete;
+ Lock& operator=(const Lock&) = delete;
+ Lock& operator=(Lock&&) = delete;
+
+ /*
* This function implements the logic for acquiring a lock on a
* resource if the incoming request is legitimate without any
* conflicting requirements & without any conflicting requirement
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 0b54c65..abcec1a 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -238,6 +238,11 @@
}
}
+ InProgressEnumerateData(const InProgressEnumerateData&) = delete;
+ InProgressEnumerateData(InProgressEnumerateData&&) = delete;
+ InProgressEnumerateData& operator=(const InProgressEnumerateData&) = delete;
+ InProgressEnumerateData& operator=(InProgressEnumerateData&&) = delete;
+
const std::string objectPath;
std::shared_ptr<GetSubTreeType> subtree;
std::shared_ptr<bmcweb::AsyncResp> asyncResp;
@@ -484,6 +489,10 @@
res.end();
}
+ InProgressActionData(const InProgressActionData&) = delete;
+ InProgressActionData(InProgressActionData&&) = delete;
+ InProgressActionData& operator=(const InProgressActionData&) = delete;
+ InProgressActionData& operator=(InProgressActionData&&) = delete;
void setErrorStatus(const std::string& desc)
{
@@ -1805,6 +1814,11 @@
}
}
+ AsyncPutRequest(const AsyncPutRequest&) = delete;
+ AsyncPutRequest(AsyncPutRequest&&) = delete;
+ AsyncPutRequest& operator=(const AsyncPutRequest&) = delete;
+ AsyncPutRequest& operator=(AsyncPutRequest&&) = delete;
+
void setErrorStatus(const std::string& desc)
{
setErrorResponse(asyncResp->res,
diff --git a/include/persistent_data.hpp b/include/persistent_data.hpp
index d7230cb..47bb8a9 100644
--- a/include/persistent_data.hpp
+++ b/include/persistent_data.hpp
@@ -43,6 +43,11 @@
}
}
+ ConfigFile(const ConfigFile&) = delete;
+ ConfigFile(ConfigFile&&) = delete;
+ ConfigFile& operator=(const ConfigFile&) = delete;
+ ConfigFile& operator=(ConfigFile&&) = delete;
+
// TODO(ed) this should really use protobuf, or some other serialization
// library, but adding another dependency is somewhat outside the scope of
// this application for the moment
diff --git a/include/sessions.hpp b/include/sessions.hpp
index a05e47b..79e71ce 100644
--- a/include/sessions.hpp
+++ b/include/sessions.hpp
@@ -404,6 +404,9 @@
SessionStore(const SessionStore&) = delete;
SessionStore& operator=(const SessionStore&) = delete;
+ SessionStore(SessionStore&&) = delete;
+ SessionStore& operator=(const SessionStore&&) = delete;
+ ~SessionStore() = default;
std::unordered_map<std::string, std::shared_ptr<UserSession>,
std::hash<std::string>,
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 34ef82e..2a0353b 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -32,6 +32,11 @@
~Handler() = default;
+ Handler(const Handler&) = delete;
+ Handler(Handler&&) = delete;
+ Handler& operator=(const Handler&) = delete;
+ Handler& operator=(Handler&&) = delete;
+
void doClose()
{
// boost::process::child::terminate uses SIGKILL, need to send SIGTERM