1//
2// detail/handler_cont_helpers.hpp
3// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
12#define ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
13
14
15#include "asio/detail/config.hpp"
16#include "asio/detail/addressof.hpp"
17#include "asio/handler_continuation_hook.hpp"
18
19#include "asio/detail/push_options.hpp"
20
21// Calls to asio_handler_is_continuation must be made from a namespace that
22// does not contain overloads of this function. This namespace is defined here
23// for that purpose.
24namespace asio_handler_cont_helpers {
25
26template <typename Context>
27inline bool is_continuation(Context& context)
28{
29#if !defined(ASIO_HAS_HANDLER_HOOKS)
30  return false;
31#else
32  using asio::asio_handler_is_continuation;
33  return asio_handler_is_continuation(
34      asio::detail::addressof(context));
35#endif
36}
37
38} // namespace asio_handler_cont_helpers
39
40#include "asio/detail/pop_options.hpp"
41
42#endif // ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
43