1627f7eb2Smrg// <experimental/netfwd> -*- C++ -*- 2627f7eb2Smrg 3*4c3eb207Smrg// Copyright (C) 2015-2020 Free Software Foundation, Inc. 4627f7eb2Smrg// 5627f7eb2Smrg// This file is part of the GNU ISO C++ Library. This library is free 6627f7eb2Smrg// software; you can redistribute it and/or modify it under the 7627f7eb2Smrg// terms of the GNU General Public License as published by the 8627f7eb2Smrg// Free Software Foundation; either version 3, or (at your option) 9627f7eb2Smrg// any later version. 10627f7eb2Smrg 11627f7eb2Smrg// This library is distributed in the hope that it will be useful, 12627f7eb2Smrg// but WITHOUT ANY WARRANTY; without even the implied warranty of 13627f7eb2Smrg// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14627f7eb2Smrg// GNU General Public License for more details. 15627f7eb2Smrg 16627f7eb2Smrg// Under Section 7 of GPL version 3, you are granted additional 17627f7eb2Smrg// permissions described in the GCC Runtime Library Exception, version 18627f7eb2Smrg// 3.1, as published by the Free Software Foundation. 19627f7eb2Smrg 20627f7eb2Smrg// You should have received a copy of the GNU General Public License and 21627f7eb2Smrg// a copy of the GCC Runtime Library Exception along with this program; 22627f7eb2Smrg// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23627f7eb2Smrg// <http://www.gnu.org/licenses/>. 24627f7eb2Smrg 25627f7eb2Smrg/** @file experimental/netfwd 26627f7eb2Smrg * This is a TS C++ Library header. 27*4c3eb207Smrg * @ingroup networking-ts 28627f7eb2Smrg */ 29627f7eb2Smrg 30627f7eb2Smrg#ifndef _GLIBCXX_EXPERIMENTAL_NETFWD 31627f7eb2Smrg#define _GLIBCXX_EXPERIMENTAL_NETFWD 1 32627f7eb2Smrg 33627f7eb2Smrg#pragma GCC system_header 34627f7eb2Smrg 35627f7eb2Smrg#if __cplusplus >= 201402L 36627f7eb2Smrg 37627f7eb2Smrg// #define __cpp_lib_experimental_net 201803 38627f7eb2Smrg// #define __cpp_lib_experimental_net_extensible 201803 39627f7eb2Smrg 40627f7eb2Smrg#include <chrono> 41627f7eb2Smrg 42627f7eb2Smrgnamespace std _GLIBCXX_VISIBILITY(default) 43627f7eb2Smrg{ 44627f7eb2Smrg_GLIBCXX_BEGIN_NAMESPACE_VERSION 45627f7eb2Smrgnamespace experimental 46627f7eb2Smrg{ 47627f7eb2Smrgnamespace net 48627f7eb2Smrg{ 49627f7eb2Smrginline namespace v1 50627f7eb2Smrg{ 51627f7eb2Smrg 52*4c3eb207Smrg /** @defgroup networking-ts Networking TS 53*4c3eb207Smrg * @ingroup experimental 54*4c3eb207Smrg * 55*4c3eb207Smrg * ISO/IEC TS 19216:2018 C++ Extensions for Networking 56627f7eb2Smrg * @{ 57627f7eb2Smrg */ 58627f7eb2Smrg 59627f7eb2Smrg class execution_context; 60627f7eb2Smrg template<typename _Tp, typename _Executor> 61627f7eb2Smrg class executor_binder; 62627f7eb2Smrg template<typename _Executor> 63627f7eb2Smrg class executor_work_guard; 64627f7eb2Smrg class system_executor; 65627f7eb2Smrg class executor; 66627f7eb2Smrg template<typename _Executor> 67627f7eb2Smrg class strand; 68627f7eb2Smrg 69627f7eb2Smrg class io_service; 70627f7eb2Smrg 71627f7eb2Smrg template<typename _Clock> struct wait_traits; 72627f7eb2Smrg template<typename _Clock, typename _WaitTraits = wait_traits<_Clock>> 73627f7eb2Smrg class basic_waitable_timer; 74627f7eb2Smrg typedef basic_waitable_timer<chrono::system_clock> system_timer; 75627f7eb2Smrg typedef basic_waitable_timer<chrono::steady_clock> steady_timer; 76627f7eb2Smrg typedef basic_waitable_timer<chrono::high_resolution_clock> 77627f7eb2Smrg high_resolution_timer; 78627f7eb2Smrg 79627f7eb2Smrg template<typename _Protocol> 80627f7eb2Smrg class basic_socket; 81627f7eb2Smrg template<typename _Protocol> 82627f7eb2Smrg class basic_datagram_socket; 83627f7eb2Smrg template<typename _Protocol> 84627f7eb2Smrg class basic_stream_socket; 85627f7eb2Smrg template<typename _Protocol> 86627f7eb2Smrg class basic_socket_acceptor; 87627f7eb2Smrg template<typename _Protocol, typename _Clock = chrono::steady_clock, 88627f7eb2Smrg typename _WaitTraits = wait_traits<_Clock>> 89627f7eb2Smrg class basic_socket_streambuf; 90627f7eb2Smrg template<typename _Protocol, typename _Clock = chrono::steady_clock, 91627f7eb2Smrg typename _WaitTraits = wait_traits<_Clock>> 92627f7eb2Smrg class basic_socket_iostream; 93627f7eb2Smrg 94627f7eb2Smrg /// @} 95627f7eb2Smrg 96627f7eb2Smrgnamespace ip 97627f7eb2Smrg{ 98627f7eb2Smrg /** 99*4c3eb207Smrg * @addtogroup networking-ts 100627f7eb2Smrg * @{ 101627f7eb2Smrg */ 102627f7eb2Smrg class address; 103627f7eb2Smrg class address_v4; 104627f7eb2Smrg class address_v6; 105627f7eb2Smrg class address_iterator_v4; 106627f7eb2Smrg class address_iterator_v6; 107627f7eb2Smrg class address_range_v4; 108627f7eb2Smrg class address_range_v6; 109627f7eb2Smrg class network_v4; 110627f7eb2Smrg class network_v6; 111627f7eb2Smrg template<typename _InternetProtocol> 112627f7eb2Smrg class basic_endpoint; 113627f7eb2Smrg template<typename _InternetProtocol> 114627f7eb2Smrg class basic_resolver_entry; 115627f7eb2Smrg template<typename _InternetProtocol> 116627f7eb2Smrg class basic_resolver_results; 117627f7eb2Smrg template<typename _InternetProtocol> 118627f7eb2Smrg class basic_resolver; 119627f7eb2Smrg class tcp; 120627f7eb2Smrg class udp; 121627f7eb2Smrg /// @} 122627f7eb2Smrg 123627f7eb2Smrg} // namespace ip 124627f7eb2Smrg} // namespace v1 125627f7eb2Smrg} // namespace net 126627f7eb2Smrg} // namespace experimental 127627f7eb2Smrg_GLIBCXX_END_NAMESPACE_VERSION 128627f7eb2Smrg} // namespace std 129627f7eb2Smrg 130627f7eb2Smrg#endif // C++14 131627f7eb2Smrg 132627f7eb2Smrg#endif // _GLIBCXX_EXPERIMENTAL_NETFWD 133