Explorar o código

hle: ipc_helpers: Add methods for copy/move references.

bunnei %!s(int64=5) %!d(string=hai) anos
pai
achega
eba3bb9d21
Modificáronse 1 ficheiros con 24 adicións e 2 borrados
  1. 24 2
      src/core/hle/ipc_helpers.h

+ 24 - 2
src/core/hle/ipc_helpers.h

@@ -217,9 +217,15 @@ public:
     template <typename... O>
     template <typename... O>
     void PushMoveObjects(O*... pointers);
     void PushMoveObjects(O*... pointers);
 
 
+    template <typename... O>
+    void PushMoveObjects(O&... pointers);
+
     template <typename... O>
     template <typename... O>
     void PushCopyObjects(O*... pointers);
     void PushCopyObjects(O*... pointers);
 
 
+    template <typename... O>
+    void PushCopyObjects(O&... pointers);
+
 private:
 private:
     u32 normal_params_size{};
     u32 normal_params_size{};
     u32 num_handles_to_copy{};
     u32 num_handles_to_copy{};
@@ -304,7 +310,15 @@ template <typename... O>
 inline void ResponseBuilder::PushCopyObjects(O*... pointers) {
 inline void ResponseBuilder::PushCopyObjects(O*... pointers) {
     auto objects = {pointers...};
     auto objects = {pointers...};
     for (auto& object : objects) {
     for (auto& object : objects) {
-        context->AddCopyObject(std::move(object));
+        context->AddCopyObject(object);
+    }
+}
+
+template <typename... O>
+inline void ResponseBuilder::PushCopyObjects(O&... pointers) {
+    auto objects = {&pointers...};
+    for (auto& object : objects) {
+        context->AddCopyObject(object);
     }
     }
 }
 }
 
 
@@ -312,7 +326,15 @@ template <typename... O>
 inline void ResponseBuilder::PushMoveObjects(O*... pointers) {
 inline void ResponseBuilder::PushMoveObjects(O*... pointers) {
     auto objects = {pointers...};
     auto objects = {pointers...};
     for (auto& object : objects) {
     for (auto& object : objects) {
-        context->AddMoveObject(std::move(object));
+        context->AddMoveObject(object);
+    }
+}
+
+template <typename... O>
+inline void ResponseBuilder::PushMoveObjects(O&... pointers) {
+    auto objects = {&pointers...};
+    for (auto& object : objects) {
+        context->AddMoveObject(object);
     }
     }
 }
 }