Back to home page

EIC code displayed by LXR

 
 

    


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

0001 //
0002 // impl/any_io_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_IO_EXECUTOR_IPP
0012 #define BOOST_ASIO_IMPL_ANY_IO_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_io_executor.hpp>
0023 
0024 #include <boost/asio/detail/push_options.hpp>
0025 
0026 namespace boost {
0027 namespace asio {
0028 
0029 any_io_executor::any_io_executor() noexcept
0030   : base_type()
0031 {
0032 }
0033 
0034 any_io_executor::any_io_executor(nullptr_t) noexcept
0035   : base_type(nullptr_t())
0036 {
0037 }
0038 
0039 any_io_executor::any_io_executor(const any_io_executor& e) noexcept
0040   : base_type(static_cast<const base_type&>(e))
0041 {
0042 }
0043 
0044 any_io_executor::any_io_executor(std::nothrow_t,
0045     const any_io_executor& e) noexcept
0046   : base_type(static_cast<const base_type&>(e))
0047 {
0048 }
0049 
0050 any_io_executor::any_io_executor(any_io_executor&& e) noexcept
0051   : base_type(static_cast<base_type&&>(e))
0052 {
0053 }
0054 
0055 any_io_executor::any_io_executor(std::nothrow_t, any_io_executor&& e) noexcept
0056   : base_type(static_cast<base_type&&>(e))
0057 {
0058 }
0059 
0060 any_io_executor& any_io_executor::operator=(const any_io_executor& e) noexcept
0061 {
0062   base_type::operator=(static_cast<const base_type&>(e));
0063   return *this;
0064 }
0065 
0066 any_io_executor& any_io_executor::operator=(any_io_executor&& e) noexcept
0067 {
0068   base_type::operator=(static_cast<base_type&&>(e));
0069   return *this;
0070 }
0071 
0072 any_io_executor& any_io_executor::operator=(nullptr_t)
0073 {
0074   base_type::operator=(nullptr_t());
0075   return *this;
0076 }
0077 
0078 any_io_executor::~any_io_executor()
0079 {
0080 }
0081 
0082 void any_io_executor::swap(any_io_executor& other) noexcept
0083 {
0084   static_cast<base_type&>(*this).swap(static_cast<base_type&>(other));
0085 }
0086 
0087 template <>
0088 any_io_executor any_io_executor::require(
0089     const execution::blocking_t::never_t& p, int) const
0090 {
0091   return static_cast<const base_type&>(*this).require(p);
0092 }
0093 
0094 template <>
0095 any_io_executor any_io_executor::prefer(
0096     const execution::blocking_t::possibly_t& p, int) const
0097 {
0098   return static_cast<const base_type&>(*this).prefer(p);
0099 }
0100 
0101 template <>
0102 any_io_executor any_io_executor::prefer(
0103     const execution::outstanding_work_t::tracked_t& p, int) const
0104 {
0105   return static_cast<const base_type&>(*this).prefer(p);
0106 }
0107 
0108 template <>
0109 any_io_executor any_io_executor::prefer(
0110     const execution::outstanding_work_t::untracked_t& p, int) const
0111 {
0112   return static_cast<const base_type&>(*this).prefer(p);
0113 }
0114 
0115 template <>
0116 any_io_executor any_io_executor::prefer(
0117     const execution::relationship_t::fork_t& p, int) const
0118 {
0119   return static_cast<const base_type&>(*this).prefer(p);
0120 }
0121 
0122 template <>
0123 any_io_executor any_io_executor::prefer(
0124     const execution::relationship_t::continuation_t& p, int) const
0125 {
0126   return static_cast<const base_type&>(*this).prefer(p);
0127 }
0128 
0129 } // namespace asio
0130 } // namespace boost
0131 
0132 #include <boost/asio/detail/pop_options.hpp>
0133 
0134 #endif // !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
0135 
0136 #endif // BOOST_ASIO_IMPL_ANY_IO_EXECUTOR_IPP