summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/include/asio/execution/operation_state.hpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/include/asio/execution/operation_state.hpp')
-rw-r--r--3rdparty/asio/include/asio/execution/operation_state.hpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/3rdparty/asio/include/asio/execution/operation_state.hpp b/3rdparty/asio/include/asio/execution/operation_state.hpp
new file mode 100644
index 00000000000..8fb7a94b8ca
--- /dev/null
+++ b/3rdparty/asio/include/asio/execution/operation_state.hpp
@@ -0,0 +1,94 @@
+//
+// execution/operation_state.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef ASIO_EXECUTION_OPERATION_STATE_HPP
+#define ASIO_EXECUTION_OPERATION_STATE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include "asio/detail/config.hpp"
+#include "asio/detail/type_traits.hpp"
+#include "asio/execution/start.hpp"
+
+#if defined(ASIO_HAS_DEDUCED_START_FREE_TRAIT) \
+ && defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT)
+# define ASIO_HAS_DEDUCED_EXECUTION_IS_OPERATION_STATE_TRAIT 1
+#endif // defined(ASIO_HAS_DEDUCED_START_FREE_TRAIT)
+ // && defined(ASIO_HAS_DEDUCED_START_MEMBER_TRAIT)
+
+#include "asio/detail/push_options.hpp"
+
+namespace asio {
+namespace execution {
+namespace detail {
+
+template <typename T>
+struct is_operation_state_base :
+ integral_constant<bool,
+ is_destructible<T>::value
+ && is_object<T>::value
+ >
+{
+};
+
+} // namespace detail
+
+/// The is_operation_state trait detects whether a type T satisfies the
+/// execution::operation_state concept.
+/**
+ * Class template @c is_operation_state is a type trait that is derived from
+ * @c true_type if the type @c T meets the concept definition for an
+ * @c operation_state, otherwise @c false_type.
+ */
+template <typename T>
+struct is_operation_state :
+#if defined(GENERATING_DOCUMENTATION)
+ integral_constant<bool, automatically_determined>
+#else // defined(GENERATING_DOCUMENTATION)
+ conditional<
+ can_start<typename add_lvalue_reference<T>::type>::value
+ && is_nothrow_start<typename add_lvalue_reference<T>::type>::value,
+ detail::is_operation_state_base<T>,
+ false_type
+ >::type
+#endif // defined(GENERATING_DOCUMENTATION)
+{
+};
+
+#if defined(ASIO_HAS_VARIABLE_TEMPLATES)
+
+template <typename T>
+ASIO_CONSTEXPR const bool is_operation_state_v =
+ is_operation_state<T>::value;
+
+#endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
+
+#if defined(ASIO_HAS_CONCEPTS)
+
+template <typename T>
+ASIO_CONCEPT operation_state = is_operation_state<T>::value;
+
+#define ASIO_EXECUTION_OPERATION_STATE \
+ ::asio::execution::operation_state
+
+#else // defined(ASIO_HAS_CONCEPTS)
+
+#define ASIO_EXECUTION_OPERATION_STATE typename
+
+#endif // defined(ASIO_HAS_CONCEPTS)
+
+} // namespace execution
+} // namespace asio
+
+#include "asio/detail/pop_options.hpp"
+
+#endif // ASIO_EXECUTION_OPERATION_STATE_HPP