Chris@16: // Chris@16: // detail/handler_invoke_helpers.hpp Chris@16: // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Chris@16: // Chris@101: // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: #ifndef BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP Chris@16: #define BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP Chris@16: Chris@16: #if defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: # pragma once Chris@16: #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: // Calls to asio_handler_invoke must be made from a namespace that does not Chris@16: // contain overloads of this function. The boost_asio_handler_invoke_helpers Chris@16: // namespace is defined here for that purpose. Chris@16: namespace boost_asio_handler_invoke_helpers { Chris@16: Chris@16: template Chris@16: inline void invoke(Function& function, Context& context) Chris@16: { Chris@16: #if !defined(BOOST_ASIO_HAS_HANDLER_HOOKS) Chris@16: Function tmp(function); Chris@16: tmp(); Chris@16: #else Chris@16: using boost::asio::asio_handler_invoke; Chris@16: asio_handler_invoke(function, boost::asio::detail::addressof(context)); Chris@16: #endif Chris@16: } Chris@16: Chris@16: template Chris@16: inline void invoke(const Function& function, Context& context) Chris@16: { Chris@16: #if !defined(BOOST_ASIO_HAS_HANDLER_HOOKS) Chris@16: Function tmp(function); Chris@16: tmp(); Chris@16: #else Chris@16: using boost::asio::asio_handler_invoke; Chris@16: asio_handler_invoke(function, boost::asio::detail::addressof(context)); Chris@16: #endif Chris@16: } Chris@16: Chris@16: } // namespace boost_asio_handler_invoke_helpers Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP