1 /*
2  * Copyright (c) 2022 NVIDIA Corporation
3  *
4  * Licensed under the Apache License Version 2.0 with LLVM Exceptions
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  *   https://llvm.org/LICENSE.txt
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #pragma once
17 
18 // Internal header, do not include directly
19 
20 namespace std
21 {
22 // <functional>
23 using stdexec::nothrow_tag_invocable;
24 using stdexec::tag_invocable;
25 using stdexec::tag_invoke;
26 using stdexec::tag_invoke_result;
27 using stdexec::tag_invoke_result_t;
28 using stdexec::tag_t;
29 
30 // <stop_token>
31 using stdexec::in_place_stop_callback;
32 using stdexec::in_place_stop_source;
33 using stdexec::in_place_stop_token;
34 using stdexec::never_stop_token;
35 using stdexec::stoppable_token;
36 using stdexec::stoppable_token_for;
37 using stdexec::unstoppable_token;
38 
39 namespace execution
40 {
41 // [exec.queries], general queries
42 using stdexec::get_allocator;
43 using stdexec::get_allocator_t;
44 using stdexec::get_delegatee_scheduler;
45 using stdexec::get_delegatee_scheduler_t;
46 using stdexec::get_scheduler;
47 using stdexec::get_scheduler_t;
48 using stdexec::get_stop_token;
49 using stdexec::get_stop_token_t;
50 
51 using stdexec::stop_token_of_t;
52 
53 // [exec.env], execution environments
54 using stdexec::get_env_t;
55 using stdexec::no_env;
56 // using stdexec::forwarding_env_query_t; // BUGBUG
57 using stdexec::get_env;
58 // using stdexec::forwarding_env_query; // BUGBUG
59 
60 using stdexec::env_of_t;
61 
62 // [exec.sched], schedulers
63 using stdexec::scheduler;
64 
65 // [exec.sched_queries], scheduler queries
66 using stdexec::forward_progress_guarantee;
67 using stdexec::forwarding_scheduler_query;
68 using stdexec::forwarding_scheduler_query_t;
69 using stdexec::get_forward_progress_guarantee;
70 using stdexec::get_forward_progress_guarantee_t;
71 
72 // [exec.recv], receivers
73 using stdexec::receiver;
74 
75 using stdexec::receiver_of;
76 
77 using stdexec::set_error;
78 using stdexec::set_error_t;
79 using stdexec::set_stopped;
80 using stdexec::set_stopped_t;
81 using stdexec::set_value;
82 using stdexec::set_value_t;
83 
84 // [exec.recv_queries], receiver queries
85 // using stdexec::forwarding_receiver_query_t; // BUGBUG
86 // using stdexec::forwarding_receiver_query; // BUGBUG
87 
88 // [exec.op_state], operation states
89 using stdexec::operation_state;
90 
91 using stdexec::start;
92 using stdexec::start_t;
93 
94 // [exec.snd], senders
95 using stdexec::sender;
96 using stdexec::sender_of;
97 using stdexec::sender_to;
98 
99 // [exec.sndtraits], completion signatures
100 using stdexec::completion_signatures_of_t;
101 using stdexec::get_completion_signatures;
102 using stdexec::get_completion_signatures_t;
103 
104 using stdexec::dependent_completion_signatures;
105 
106 using stdexec::error_types_of_t;
107 using stdexec::sends_stopped;
108 using stdexec::value_types_of_t;
109 
110 // [exec.connect], the connect sender algorithm
111 using stdexec::connect;
112 using stdexec::connect_t;
113 
114 using stdexec::connect_result_t;
115 
116 // [exec.snd_queries], sender queries
117 using stdexec::forwarding_sender_query;
118 using stdexec::forwarding_sender_query_t;
119 using stdexec::get_completion_scheduler_t;
120 
121 using stdexec::get_completion_scheduler;
122 
123 // [exec.factories], sender factories
124 using stdexec::just;
125 using stdexec::just_error;
126 using stdexec::just_stopped;
127 using stdexec::read;
128 using stdexec::schedule;
129 using stdexec::schedule_t;
130 using stdexec::transfer_just;
131 using stdexec::transfer_just_t;
132 
133 using stdexec::schedule_result_t;
134 
135 // [exec.adapt], sender adaptors
136 using stdexec::sender_adaptor_closure;
137 
138 using stdexec::bulk_t;
139 using stdexec::ensure_started_t;
140 using stdexec::into_variant_t;
141 using stdexec::let_error_t;
142 using stdexec::let_stopped_t;
143 using stdexec::let_value_t;
144 using stdexec::on_t;
145 using stdexec::schedule_from_t;
146 using stdexec::split_t;
147 using stdexec::stopped_as_error_t;
148 using stdexec::stopped_as_optional_t;
149 using stdexec::then_t;
150 using stdexec::transfer_t;
151 using stdexec::transfer_when_all_t;
152 using stdexec::transfer_when_all_with_variant_t;
153 using stdexec::upon_error_t;
154 using stdexec::upon_stopped_t;
155 using stdexec::when_all_t;
156 using stdexec::when_all_with_variant_t;
157 
158 using stdexec::on;
159 using stdexec::schedule_from;
160 using stdexec::transfer;
161 
162 using stdexec::then;
163 using stdexec::upon_error;
164 using stdexec::upon_stopped;
165 
166 using stdexec::let_error;
167 using stdexec::let_stopped;
168 using stdexec::let_value;
169 
170 using stdexec::bulk;
171 
172 using stdexec::split;
173 using stdexec::transfer_when_all;
174 using stdexec::transfer_when_all_with_variant;
175 using stdexec::when_all;
176 using stdexec::when_all_with_variant;
177 
178 using stdexec::into_variant;
179 
180 using stdexec::stopped_as_error;
181 using stdexec::stopped_as_optional;
182 
183 using stdexec::ensure_started;
184 
185 // [exec.consumers], sender consumers
186 using stdexec::start_detached;
187 using stdexec::start_detached_t;
188 
189 // [exec.utils], sender and receiver utilities
190 // [exec.utils.rcvr_adptr]
191 using stdexec::receiver_adaptor;
192 
193 // [exec.utils.cmplsigs]
194 using stdexec::completion_signatures;
195 
196 // [exec.utils.mkcmplsigs]
197 using stdexec::make_completion_signatures;
198 
199 // [exec.ctx], execution contexts
200 using stdexec::run_loop;
201 
202 // [exec.execute], execute
203 using stdexec::execute;
204 using stdexec::execute_t;
205 
206 #if !_STD_NO_COROUTINES_
207 // [exec.as_awaitable]
208 using stdexec::as_awaitable;
209 using stdexec::as_awaitable_t;
210 
211 // [exec.with_awaitable_senders]
212 using stdexec::with_awaitable_senders;
213 #endif // !_STD_NO_COROUTINES_
214 } // namespace execution
215 
216 namespace this_thread
217 {
218 using stdexec::execute_may_block_caller;
219 using stdexec::execute_may_block_caller_t;
220 using stdexec::sync_wait;
221 using stdexec::sync_wait_t;
222 using stdexec::sync_wait_with_variant;
223 using stdexec::sync_wait_with_variant_t;
224 } // namespace this_thread
225 } // namespace std
226