Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:53

0001 //
0002 // impl/any_completion_executor.ipp
0003 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0004 //
0005 // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com)
0006 //
0007 // Distributed under the Boost Software License, Version 1.0. (See accompanying
0008 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0009 //
0010 
0011 #ifndef BOOST_ASIO_IMPL_ANY_COMPLETION_EXECUTOR_IPP
0012 #define BOOST_ASIO_IMPL_ANY_COMPLETION_EXECUTOR_IPP
0013 
0014 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
0015 # pragma once
0016 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
0017 
0018 #include <boost/asio/detail/config.hpp>
0019 
0020 #if !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
0021 
0022 #include <boost/asio/any_completion_executor.hpp>
0023 
0024 #include <boost/asio/detail/push_options.hpp>
0025 
0026 namespace boost {
0027 namespace asio {
0028 
0029 any_completion_executor::any_completion_executor() noexcept
0030   : base_type()
0031 {
0032 }
0033 
0034 any_completion_executor::any_completion_executor(nullptr_t) noexcept
0035   : base_type(nullptr_t())
0036 {
0037 }
0038 
0039 any_completion_executor::any_completion_executor(
0040     const any_completion_executor& e) noexcept
0041   : base_type(static_cast<const base_type&>(e))
0042 {
0043 }
0044 
0045 any_completion_executor::any_completion_executor(std::nothrow_t,
0046     const any_completion_executor& e) noexcept
0047   : base_type(static_cast<const base_type&>(e))
0048 {
0049 }
0050 
0051 any_completion_executor::any_completion_executor(
0052     any_completion_executor&& e) noexcept
0053   : base_type(static_cast<base_type&&>(e))
0054 {
0055 }
0056 
0057 any_completion_executor::any_completion_executor(std::nothrow_t,
0058     any_completion_executor&& e) noexcept
0059   : base_type(static_cast<base_type&&>(e))
0060 {
0061 }
0062 
0063 any_completion_executor& any_completion_executor::operator=(
0064     const any_completion_executor& e) noexcept
0065 {
0066   base_type::operator=(static_cast<const base_type&>(e));
0067   return *this;
0068 }
0069 
0070 any_completion_executor& any_completion_executor::operator=(
0071     any_completion_executor&& e) noexcept
0072 {
0073   base_type::operator=(static_cast<base_type&&>(e));
0074   return *this;
0075 }
0076 
0077 any_completion_executor& any_completion_executor::operator=(nullptr_t)
0078 {
0079   base_type::operator=(nullptr_t());
0080   return *this;
0081 }
0082 
0083 any_completion_executor::~any_completion_executor()
0084 {
0085 }
0086 
0087 void any_completion_executor::swap(
0088     any_completion_executor& other) noexcept
0089 {
0090   static_cast<base_type&>(*this).swap(static_cast<base_type&>(other));
0091 }
0092 
0093 template <>
0094 any_completion_executor any_completion_executor::prefer(
0095     const execution::outstanding_work_t::tracked_t& p, int) const
0096 {
0097   return static_cast<const base_type&>(*this).prefer(p);
0098 }
0099 
0100 template <>
0101 any_completion_executor any_completion_executor::prefer(
0102     const execution::outstanding_work_t::untracked_t& p, int) const
0103 {
0104   return static_cast<const base_type&>(*this).prefer(p);
0105 }
0106 
0107 template <>
0108 any_completion_executor any_completion_executor::prefer(
0109     const execution::relationship_t::fork_t& p, int) const
0110 {
0111   return static_cast<const base_type&>(*this).prefer(p);
0112 }
0113 
0114 template <>
0115 any_completion_executor any_completion_executor::prefer(
0116     const execution::relationship_t::continuation_t& p, int) const
0117 {
0118   return static_cast<const base_type&>(*this).prefer(p);
0119 }
0120 
0121 } // namespace asio
0122 } // namespace boost
0123 
0124 #include <boost/asio/detail/pop_options.hpp>
0125 
0126 #endif // !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
0127 
0128 #endif // BOOST_ASIO_IMPL_ANY_COMPLETION_EXECUTOR_IPP