diff options
| -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: | |||
| 298 | template <typename First, typename... Other> | 298 | template <typename First, typename... Other> |
| 299 | void Pop(First& first_value, Other&... other_values); | 299 | void Pop(First& first_value, Other&... other_values); |
| 300 | 300 | ||
| 301 | template <typename T> | ||
| 302 | T PopEnum() { | ||
| 303 | static_assert(std::is_enum_v<T>, "T must be an enum type within a PopEnum call."); | ||
| 304 | static_assert(!std::is_convertible_v<T, int>, | ||
| 305 | "enum type in PopEnum must be a strongly typed enum."); | ||
| 306 | return static_cast<T>(Pop<std::underlying_type_t<T>>()); | ||
| 307 | } | ||
| 308 | |||
| 301 | /** | 309 | /** |
| 302 | * @brief Reads the next normal parameters as a struct, by copying it | 310 | * @brief Reads the next normal parameters as a struct, by copying it |
| 303 | * @note: The output class must be correctly packed/padded to fit hardware layout. | 311 | * @note: The output class must be correctly packed/padded to fit hardware layout. |