// // Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail 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 BEAST_STREAM_CONCEPTS_HPP #define BEAST_STREAM_CONCEPTS_HPP #include #include namespace beast { /// Determine if `T` has the `get_io_service` member. template #if GENERATING_DOCS struct has_get_io_service : std::integral_constant{}; #else using has_get_io_service = typename detail::has_get_io_service::type; #endif /// Determine if `T` meets the requirements of @b `AsyncReadStream`. template #if GENERATING_DOCS struct is_AsyncReadStream : std::integral_constant{}; #else using is_AsyncReadStream = typename detail::is_AsyncReadStream::type; #endif /// Determine if `T` meets the requirements of @b `AsyncWriteStream`. template #if GENERATING_DOCS struct is_AsyncWriteStream : std::integral_constant{}; #else using is_AsyncWriteStream = typename detail::is_AsyncWriteStream::type; #endif /// Determine if `T` meets the requirements of @b `SyncReadStream`. template #if GENERATING_DOCS struct is_SyncReadStream : std::integral_constant{}; #else using is_SyncReadStream = typename detail::is_SyncReadStream::type; #endif /// Determine if `T` meets the requirements of @b `SyncWriterStream`. template #if GENERATING_DOCS struct is_SyncWriteStream : std::integral_constant{}; #else using is_SyncWriteStream = typename detail::is_SyncWriteStream::type; #endif /// Determine if `T` meets the requirements of @b `AsyncStream`. template #if GENERATING_DOCS struct is_AsyncStream : std::integral_constant{}; #else using is_AsyncStream = std::integral_constant::value && is_AsyncWriteStream::value>; #endif /// Determine if `T` meets the requirements of @b `SyncStream`. template #if GENERATING_DOCS struct is_SyncStream : std::integral_constant{}; #else using is_SyncStream = std::integral_constant::value && is_SyncWriteStream::value>; #endif } // beast #endif