diff options
| author | 2018-07-20 15:00:44 -0700 | |
|---|---|---|
| committer | 2018-07-20 15:00:44 -0700 | |
| commit | 3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de (patch) | |
| tree | 35e7886a5d09f822badff4efa4f617e214a57cee /src | |
| parent | Merge pull request #740 from Subv/acc_crash (diff) | |
| parent | ipc_helpers: Add PushEnum() member function to ResponseBuilder (diff) | |
| download | yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.gz yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.tar.xz yuzu-3acd6fa0861cb2ab300cc9ccf29db2d7f1e4b3de.zip | |
Merge pull request #741 from lioncash/enum
ipc_helpers: Add PushEnum() member function to ResponseBuilder
Diffstat (limited to 'src')
| -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: | |||
| 175 | void Push(const First& first_value, const Other&... other_values); | 175 | void Push(const First& first_value, const Other&... other_values); |
| 176 | 176 | ||
| 177 | /** | 177 | /** |
| 178 | * Helper function for pushing strongly-typed enumeration values. | ||
| 179 | * | ||
| 180 | * @tparam Enum The enumeration type to be pushed | ||
| 181 | * | ||
| 182 | * @param value The value to push. | ||
| 183 | * | ||
| 184 | * @note The underlying size of the enumeration type is the size of the | ||
| 185 | * data that gets pushed. e.g. "enum class SomeEnum : u16" will | ||
| 186 | * push a u16-sized amount of data. | ||
| 187 | */ | ||
| 188 | template <typename Enum> | ||
| 189 | void PushEnum(Enum value) { | ||
| 190 | static_assert(std::is_enum_v<Enum>, "T must be an enum type within a PushEnum call."); | ||
| 191 | static_assert(!std::is_convertible_v<Enum, int>, | ||
| 192 | "enum type in PushEnum must be a strongly typed enum."); | ||
| 193 | Push(static_cast<std::underlying_type_t<Enum>>(value)); | ||
| 194 | } | ||
| 195 | |||
| 196 | /** | ||
| 178 | * @brief Copies the content of the given trivially copyable class to the buffer as a normal | 197 | * @brief Copies the content of the given trivially copyable class to the buffer as a normal |
| 179 | * param | 198 | * param |
| 180 | * @note: The input class must be correctly packed/padded to fit hardware layout. | 199 | * @note: The input class must be correctly packed/padded to fit hardware layout. |