xref: /netbsd-src/external/gpl3/gcc.old/dist/libstdc++-v3/include/experimental/netfwd (revision 4c3eb207d36f67d31994830c0a694161fc1ca39b)
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