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