summaryrefslogtreecommitdiffstats
path: root/src/core/hle
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-07-21 00:00:44 +0200
committerGitHub <noreply@github.com>2018-07-21 00:00:44 +0200
commit3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de (patch)
tree35e7886a5d09f822badff4efa4f617e214a57cee /src/core/hle
parentMerge pull request #740 from Subv/acc_crash (diff)
parentipc_helpers: Add PushEnum() member function to ResponseBuilder (diff)
downloadyuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.gz
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.bz2
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.lz
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.xz
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.zst
yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.zip
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/ipc_helpers.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 24605a273..8b5b06f31 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -175,6 +175,25 @@ public:
void Push(const First& first_value, const Other&... other_values);
/**
+ * Helper function for pushing strongly-typed enumeration values.
+ *
+ * @tparam Enum The enumeration type to be pushed
+ *
+ * @param value The value to push.
+ *
+ * @note The underlying size of the enumeration type is the size of the
+ * data that gets pushed. e.g. "enum class SomeEnum : u16" will
+ * push a u16-sized amount of data.
+ */
+ template <typename Enum>
+ void PushEnum(Enum value) {
+ static_assert(std::is_enum_v<Enum>, "T must be an enum type within a PushEnum call.");
+ static_assert(!std::is_convertible_v<Enum, int>,
+ "enum type in PushEnum must be a strongly typed enum.");
+ Push(static_cast<std::underlying_type_t<Enum>>(value));
+ }
+
+ /**
* @brief Copies the content of the given trivially copyable class to the buffer as a normal
* param
* @note: The input class must be correctly packed/padded to fit hardware layout.