include/boost/capy/detail/abandonable.hpp

100.0% Lines (10 / 10) 98.4% Functions (60 / 61)
abandonable.hpp
f(x) Functions (61)
Function Calls Lines Blocks
boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::immediate_context_awaitable>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::throwing_payload_awaitable>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::async_event::wait_awaiter>::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_ready() :41 6x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_ready() :41 23x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_ready() :41 4x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_ready() :41 13x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::error_code> > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > > > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long, int> > >::await_ready() :41 1x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_ready() :41 146x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_ready() :41 121x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::when_all_results_test::park_context_awaitable>::await_ready() :41 2x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::when_any_results_test::park_context_awaitable>::await_ready() :41 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::immediate_context_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type>, boost::capy::await_context const*) :47 0 0.0% 0.0% auto boost::capy::detail::abandonable<boost::capy::(anonymous namespace)::throwing_payload_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<boost::capy::(anonymous namespace)::throwing_move_payload> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<boost::capy::(anonymous namespace)::throwing_move_payload> >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::async_event::wait_awaiter>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type>, boost::capy::await_context const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<int> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<int> >::promise_type>, boost::capy::await_context const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::await_context const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::await_context const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::await_context const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long>, std::tuple<std::error_code, long long> > >::promise_type>, boost::capy::await_context const*) :47 4x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::await_context const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code, int>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::await_context const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::error_code> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::error_code> >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > > > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long, int> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<unsigned long> >::promise_type>, boost::capy::await_context const*) :47 30x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, std::vector<unsigned long, std::allocator<unsigned long> > >, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 5x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long, int> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 22x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code, unsigned long> > >::promise_type>, boost::capy::await_context const*) :47 6x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_homogeneous_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_homogeneous_state<unsigned long> >::promise_type>, boost::capy::await_context const*) :47 53x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long, unsigned long> >::promise_type>, boost::capy::await_context const*) :47 23x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, unsigned long> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long> >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<unsigned long> >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_homogeneous_state<std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, int>, std::tuple<std::error_code>, std::tuple<std::error_code, int> > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code, unsigned long>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 79x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 3x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_homogeneous_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_homogeneous_state<std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 10x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 1x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<>, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<>, std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 14x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::when_all_results_test::park_context_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_all_runner<boost::capy::detail::when_all_state<std::tuple<std::error_code>, std::tuple<std::error_code> > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% auto boost::capy::detail::abandonable<boost::capy::when_any_results_test::park_context_awaitable>::await_suspend<std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<>, std::tuple<> > >::promise_type> >(std::__n4861::coroutine_handle<boost::capy::detail::when_any_results_runner<boost::capy::detail::when_any_results_state<std::tuple<>, std::tuple<> > >::promise_type>, boost::capy::await_context const*) :47 2x 100.0% 100.0% boost::capy::detail::abandonable<boost::capy::quitter<std::tuple<std::error_code, unsigned long> > >::await_resume() :53 6x 80.0% 83.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code, long long> > >::await_resume() :53 4x 80.0% 83.0% boost::capy::detail::abandonable<boost::capy::task<std::tuple<std::error_code> > >::await_resume() :53 50x 80.0% 83.0%
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Steve Gerbino
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/capy
8 //
9
10 #ifndef BOOST_CAPY_DETAIL_ABANDONABLE_HPP
11 #define BOOST_CAPY_DETAIL_ABANDONABLE_HPP
12
13 #include <boost/capy/detail/config.hpp>
14 #include <boost/capy/ex/abandon.hpp>
15 #include <boost/capy/ex/await_context.hpp>
16
17 #include <optional>
18 #include <type_traits>
19 #include <utility>
20
21 namespace boost {
22 namespace capy {
23 namespace detail {
24
25 /** Await an awaitable on behalf of a segment owner.
26
27 An owner suspended here is resumed either when the awaitable
28 completes or to unwind its abandoned segment. In the second case the
29 awaitable never completed, so the result is empty (or `false` for an
30 awaitable with no result) and the owner must destroy the awaitable
31 without reading it.
32 */
33 template<class A>
34 struct abandonable
35 {
36 using result_type = decltype(std::declval<A&>().await_resume());
37
38 A& a_;
39 chain_owner* owner_ = nullptr;
40
41 323x bool await_ready()
42 {
43 323x return a_.await_ready();
44 }
45
46 template<class H>
47 322x auto await_suspend(H h, await_context const* env)
48 {
49 322x owner_ = env->owner;
50 322x return a_.await_suspend(h, env);
51 }
52
53 319x auto await_resume()
54 {
55 319x bool const unwinding = owner_ && owner_->abandoned();
56 if constexpr(std::is_void_v<result_type>)
57 {
58 if(unwinding)
59 return false;
60 a_.await_resume();
61 return true;
62 }
63 else
64 {
65 319x if(unwinding)
66 33x return std::optional<result_type>();
67 286x return std::optional<result_type>(a_.await_resume());
68 }
69 }
70 };
71
72 } // namespace detail
73 } // namespace capy
74 } // namespace boost
75
76 #endif
77