diff options
| author | 2021-04-10 02:23:17 -0700 | |
|---|---|---|
| committer | 2021-05-05 16:40:51 -0700 | |
| commit | eba3bb9d219283ffc2a7610d925aa157a81b6e4a (patch) | |
| tree | fe0dd54f69efaa8435ef67f1f52af38e3b87fe66 /src | |
| parent | hle: kernel: Move slab heaps to their own container. (diff) | |
| download | yuzu-eba3bb9d219283ffc2a7610d925aa157a81b6e4a.tar.gz yuzu-eba3bb9d219283ffc2a7610d925aa157a81b6e4a.tar.xz yuzu-eba3bb9d219283ffc2a7610d925aa157a81b6e4a.zip | |
hle: ipc_helpers: Add methods for copy/move references.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 224bee950..8f12616bd 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -218,8 +218,14 @@ public: | |||
| 218 | void PushMoveObjects(O*... pointers); | 218 | void PushMoveObjects(O*... pointers); |
| 219 | 219 | ||
| 220 | template <typename... O> | 220 | template <typename... O> |
| 221 | void PushMoveObjects(O&... pointers); | ||
| 222 | |||
| 223 | template <typename... O> | ||
| 221 | void PushCopyObjects(O*... pointers); | 224 | void PushCopyObjects(O*... pointers); |
| 222 | 225 | ||
| 226 | template <typename... O> | ||
| 227 | void PushCopyObjects(O&... pointers); | ||
| 228 | |||
| 223 | private: | 229 | private: |
| 224 | u32 normal_params_size{}; | 230 | u32 normal_params_size{}; |
| 225 | u32 num_handles_to_copy{}; | 231 | u32 num_handles_to_copy{}; |
| @@ -304,7 +310,15 @@ template <typename... O> | |||
| 304 | inline void ResponseBuilder::PushCopyObjects(O*... pointers) { | 310 | inline void ResponseBuilder::PushCopyObjects(O*... pointers) { |
| 305 | auto objects = {pointers...}; | 311 | auto objects = {pointers...}; |
| 306 | for (auto& object : objects) { | 312 | for (auto& object : objects) { |
| 307 | context->AddCopyObject(std::move(object)); | 313 | context->AddCopyObject(object); |
| 314 | } | ||
| 315 | } | ||
| 316 | |||
| 317 | template <typename... O> | ||
| 318 | inline void ResponseBuilder::PushCopyObjects(O&... pointers) { | ||
| 319 | auto objects = {&pointers...}; | ||
| 320 | for (auto& object : objects) { | ||
| 321 | context->AddCopyObject(object); | ||
| 308 | } | 322 | } |
| 309 | } | 323 | } |
| 310 | 324 | ||
| @@ -312,7 +326,15 @@ template <typename... O> | |||
| 312 | inline void ResponseBuilder::PushMoveObjects(O*... pointers) { | 326 | inline void ResponseBuilder::PushMoveObjects(O*... pointers) { |
| 313 | auto objects = {pointers...}; | 327 | auto objects = {pointers...}; |
| 314 | for (auto& object : objects) { | 328 | for (auto& object : objects) { |
| 315 | context->AddMoveObject(std::move(object)); | 329 | context->AddMoveObject(object); |
| 330 | } | ||
| 331 | } | ||
| 332 | |||
| 333 | template <typename... O> | ||
| 334 | inline void ResponseBuilder::PushMoveObjects(O&... pointers) { | ||
| 335 | auto objects = {&pointers...}; | ||
| 336 | for (auto& object : objects) { | ||
| 337 | context->AddMoveObject(object); | ||
| 316 | } | 338 | } |
| 317 | } | 339 | } |
| 318 | 340 | ||