diff options
author | bunnei <bunneidev@gmail.com> | 2018-07-21 00:00:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-21 00:00:44 +0200 |
commit | 3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de (patch) | |
tree | 35e7886a5d09f822badff4efa4f617e214a57cee | |
parent | Merge pull request #740 from Subv/acc_crash (diff) | |
parent | ipc_helpers: Add PushEnum() member function to ResponseBuilder (diff) | |
download | yuzu-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 |
-rw-r--r-- | src/core/hle/ipc_helpers.h | 19 |
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. |