diff options
author | Lioncash <mathew1800@gmail.com> | 2018-07-24 06:47:01 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-07-24 06:47:51 +0200 |
commit | 76f191ce3695c834fa6c2ffd2991b55e1bb96ccb (patch) | |
tree | 0e1064e26b3aa8d6558b425a1af6755d58426f6b /src/core/hle | |
parent | Merge pull request #790 from bunnei/shader-print-instr (diff) | |
download | yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar.gz yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar.bz2 yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar.lz yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar.xz yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.tar.zst yuzu-76f191ce3695c834fa6c2ffd2991b55e1bb96ccb.zip |
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/ipc_helpers.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 8b5b06f31..ac1a633ba 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h @@ -298,6 +298,14 @@ public: template <typename First, typename... Other> void Pop(First& first_value, Other&... other_values); + template <typename T> + T PopEnum() { + static_assert(std::is_enum_v<T>, "T must be an enum type within a PopEnum call."); + static_assert(!std::is_convertible_v<T, int>, + "enum type in PopEnum must be a strongly typed enum."); + return static_cast<T>(Pop<std::underlying_type_t<T>>()); + } + /** * @brief Reads the next normal parameters as a struct, by copying it * @note: The output class must be correctly packed/padded to fit hardware layout. |