GAPI: reuse copy_through_move_t in the gasync.cpp file
authorAnton Potapov <anton.potapov@intel.com>
Mon, 30 Nov 2020 06:40:42 +0000 (09:40 +0300)
committerAnton Potapov <anton.potapov@intel.com>
Mon, 30 Nov 2020 13:26:54 +0000 (16:26 +0300)
modules/gapi/src/executor/gasync.cpp

index b92dbdc..902e6e1 100644 (file)
@@ -11,6 +11,8 @@
 #include <opencv2/gapi/gcompiled.hpp>
 #include <opencv2/gapi/gasync_context.hpp>
 
+#include <opencv2/gapi/util/copy_through_move.hpp>
+
 #include <condition_variable>
 
 #include <future>
 #include <stdexcept>
 #include <queue>
 
-namespace {
-    //This is a tool to move initialize captures of a lambda in C++11
-    template<typename T>
-    struct copy_through_move{
-       T value;
-       copy_through_move(T&& g) : value(std::move(g)) {}
-       copy_through_move(copy_through_move&&) = default;
-       copy_through_move(copy_through_move const& lhs) : copy_through_move(std::move(const_cast<copy_through_move&>(lhs))) {}
-    };
-}
 
 namespace cv {
 namespace gapi {
@@ -168,7 +160,7 @@ const char* GAsyncCanceled::what() const noexcept {
 //For now these async functions are simply wrapping serial version of apply/operator() into a functor.
 //These functors are then serialized into single queue, which is processed by a devoted background thread.
 void async_apply(GComputation& gcomp, std::function<void(std::exception_ptr)>&& callback, GRunArgs &&ins, GRunArgsP &&outs, GCompileArgs &&args){
-    //TODO: use copy_through_move for all args except gcomp
+    //TODO: use copy_through_move_t for all args except gcomp
     //TODO: avoid code duplication between versions of "async" functions
     auto l = [=]() mutable {
         auto apply_l = [&](){
@@ -181,7 +173,7 @@ void async_apply(GComputation& gcomp, std::function<void(std::exception_ptr)>&&
 }
 
 std::future<void> async_apply(GComputation& gcomp, GRunArgs &&ins, GRunArgsP &&outs, GCompileArgs &&args){
-    copy_through_move<std::promise<void>> prms{{}};
+    util::copy_through_move_t<std::promise<void>> prms{{}};
     auto f = prms.value.get_future();
     auto l = [=]() mutable {
         auto apply_l = [&](){
@@ -196,7 +188,7 @@ std::future<void> async_apply(GComputation& gcomp, GRunArgs &&ins, GRunArgsP &&o
 }
 
 void async_apply(GComputation& gcomp, std::function<void(std::exception_ptr)>&& callback, GRunArgs &&ins, GRunArgsP &&outs, GCompileArgs &&args, GAsyncContext& ctx){
-    //TODO: use copy_through_move for all args except gcomp
+    //TODO: use copy_through_move_t for all args except gcomp
     auto l = [=, &ctx]() mutable {
         auto apply_l = [&](){
             gcomp.apply(std::move(ins), std::move(outs), std::move(args));
@@ -208,7 +200,7 @@ void async_apply(GComputation& gcomp, std::function<void(std::exception_ptr)>&&
 }
 
 std::future<void> async_apply(GComputation& gcomp, GRunArgs &&ins, GRunArgsP &&outs, GCompileArgs &&args, GAsyncContext& ctx){
-    copy_through_move<std::promise<void>> prms{{}};
+    util::copy_through_move_t<std::promise<void>> prms{{}};
     auto f = prms.value.get_future();
     auto l = [=, &ctx]() mutable {
         auto apply_l = [&](){
@@ -248,7 +240,7 @@ void async(GCompiled& gcmpld, std::function<void(std::exception_ptr)>&& callback
 }
 
 std::future<void> async(GCompiled& gcmpld, GRunArgs &&ins, GRunArgsP &&outs){
-    copy_through_move<std::promise<void>> prms{{}};
+    util::copy_through_move_t<std::promise<void>> prms{{}};
     auto f = prms.value.get_future();
     auto l = [=]() mutable {
         auto apply_l = [&](){
@@ -263,7 +255,7 @@ std::future<void> async(GCompiled& gcmpld, GRunArgs &&ins, GRunArgsP &&outs){
 
 }
 std::future<void> async(GCompiled& gcmpld, GRunArgs &&ins, GRunArgsP &&outs, GAsyncContext& ctx){
-    copy_through_move<std::promise<void>> prms{{}};
+    util::copy_through_move_t<std::promise<void>> prms{{}};
     auto f = prms.value.get_future();
     auto l = [=, &ctx]() mutable {
         auto apply_l = [&](){