30 template <
class T,
template <
class...>
class C>
31 using not_is_t = std::enable_if_t<!is_v<std::decay_t<T>,
C>, std::decay_t<T>>;
48 void (*submit_)(
void*,
void*);
59 (
requires Sender<wrapped_t<Wrapped>, is_executor<>, is_single<>>)
70 "Expecting to be passed a Sender that can send to a SingleReceiver" 71 " that accpets a value of type This and an error of type E");
73 static void submit(
void* pobj,
void*
s) {
75 *static_cast<Wrapped*>(pobj),
80 pobj_ = std::addressof(w);
84 template<
class SingleReceiver>
90 vptr_->submit_(pobj_, &
s);
97 class E = std::exception_ptr>
103 class E = std::exception_ptr,
105 (
requires Sender<detail::not_any_executor_ref_t<Wrapped>, is_executor<>, is_single<>>)
112 #if __cpp_deduction_guides >= 201703 118 (
requires Sender<detail::not_any_executor_ref_t<Wrapped>, is_executor<>, is_single<>>)
129 template<
class T,
class E>
132 !std::is_base_of<any_executor_base<E>, std::decay_t<T>>
::value,
146 class E = std::exception_ptr>
152 class E = std::exception_ptr,
163 #if __cpp_deduction_guides >= 201703 176 std::exception_ptr>>>)
191 template<
class E,
class CV>
198 void (*submit_)(
void*,
CV,
void*);
209 (
requires ConstrainedSender<wrapped_t<Wrapped>, is_single<>>)
220 "Expecting to be passed a ConstrainedSender that can send to a SingleReceiver" 221 " that accpets a value of type This and an error of type E");
223 static CV top(
void* pobj) {
226 static void submit(
void* pobj,
CV cv,
void*
s) {
228 *static_cast<Wrapped*>(pobj),
234 pobj_ = std::addressof(w);
238 return vptr_->top_(pobj_);
241 template<
class SingleReceiver>
247 vptr_->submit_(pobj_, cv, &
s);
254 class E = std::exception_ptr,
255 class CV = std::ptrdiff_t>
261 class E = std::exception_ptr,
263 (
requires ConstrainedSender<detail::not_any_constrained_executor_ref_t<Wrapped>, is_single<>>)
270 #if __cpp_deduction_guides >= 201703 277 (
requires ConstrainedSender<detail::not_any_constrained_executor_ref_t<Wrapped>, is_single<>>)
281 constraint_t<Wrapped>>;
285 template<
class E,
class CV>
289 template<
class T,
class E,
class CV>
292 !std::is_base_of<any_constrained_executor_base<E, CV>, std::decay_t<T>>
::value,
296 template <
class E,
class CV>
306 class E = std::exception_ptr,
307 class CV = std::ptrdiff_t>
313 class E = std::exception_ptr,
324 #if __cpp_deduction_guides >= 201703 335 constraint_t<Wrapped>>,
340 constraint_t<Wrapped>>>>)
344 constraint_t<Wrapped>>;
355 template<
class E,
class TP>
362 void (*submit_)(
void*, TP,
void*);
373 (
requires TimeSender<wrapped_t<Wrapped>, is_single<>>)
384 "Expecting to be passed a TimeSender that can send to a SingleReceiver" 385 " that accpets a value of type This and an error of type E");
387 static TP
now(
void* pobj) {
390 static void submit(
void* pobj, TP
tp,
void*
s) {
392 *static_cast<Wrapped*>(pobj),
398 pobj_ = std::addressof(w);
401 std::chrono::system_clock::time_point
top() {
402 return vptr_->now_(pobj_);
405 template<
class SingleReceiver>
411 vptr_->submit_(pobj_, tp, &
s);
418 class E = std::exception_ptr,
419 class TP = std::chrono::system_clock::time_point>
425 class E = std::exception_ptr,
427 (
requires TimeSender<detail::not_any_time_executor_ref_t<Wrapped>, is_single<>>)
434 #if __cpp_deduction_guides >= 201703 438 std::chrono::system_clock::time_point>;
441 (
requires TimeSender<detail::not_any_time_executor_ref_t<Wrapped>, is_single<>>)
445 time_point_t<Wrapped>>;
449 template<
class E,
class TP>
453 template<
class T,
class E,
class TP>
456 !std::is_base_of<any_time_executor_base<E, TP>, std::decay_t<T>>
::value,
460 template <
class E,
class TP>
470 class E = std::exception_ptr,
471 class TP = std::chrono::system_clock::time_point>
477 class E = std::exception_ptr,
488 #if __cpp_deduction_guides >= 201703 492 std::chrono::system_clock::time_point>;
499 time_point_t<Wrapped>>,
504 time_point_t<Wrapped>>>>)
508 time_point_t<Wrapped>>;
auto make_any_executor_ref()
detail::not_any_executor_ref_t< T > wrapped_t
any_constrained_executor_ref executor()
auto make_any_time_executor_ref()
requires Sender< wrapped_t< Wrapped >, is_executor<>, is_single<> > any_executor_ref(Wrapped &w)
not_is_t< T, any_time_executor_ref > not_any_time_executor_ref_t
std::chrono::steady_clock::time_point now()
constexpr detail::Map< Move > move
std::enable_if_t<!is_v< std::decay_t< T >, C >, std::decay_t< T >> not_is_t
any_constrained_single_sender< E, CV, any_constrained_executor_ref< E, CV >> any_constrained_executor_base
—— Concurrent Priority Queue Implementation ——
detail::not_any_time_executor_ref_t< T > wrapped_t
any_time_single_sender< E, TP, any_time_executor_ref< E, TP >> any_time_executor_base
requires TimeSender< wrapped_t< Wrapped >, is_single<> > any_time_executor_ref(Wrapped &w)
void submit(SingleReceiver &&sa)
auto make_any_time_executor() -> any_time_executor< E, TP >
void submit(TP tp, SingleReceiver &&sa)
not_is_t< T, any_constrained_executor_ref > not_any_constrained_executor_ref_t
auto make_any_constrained_executor() -> any_constrained_executor< E, CV >
requires requires(::folly::pushmi::invoke(std::declval< F >(), std::get< Is >(std::declval< Tuple >())...))) const expr decltype(auto) apply_impl(F &&f
requires ConstrainedSender< wrapped_t< Wrapped >, is_single<> > any_constrained_executor_ref(Wrapped &w)
std::chrono::system_clock::time_point top()
auto make_any_constrained_executor_ref()
PUSHMI_INLINE_VAR constexpr __adl::get_top_fn now
PUSHMI_INLINE_VAR constexpr __adl::get_top_fn top
detail::not_any_constrained_executor_ref_t< T > wrapped_t
void submit(CV cv, SingleReceiver &&sa)
any_time_executor_ref executor()
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
any_executor_ref executor()
std::enable_if_t< !std::is_base_of< any_executor_base< E >, std::decay_t< T >>::value, std::decay_t< T >> not_any_executor
PUSHMI_INLINE_VAR constexpr __adl::do_submit_fn submit
PUSHMI_TEMPLATE(class In, class Out, bool SenderRequires, bool SingleSenderRequires, bool TimeSingleSenderRequires)(requires Sender< In > &&Receiver< Out >) constexpr bool sender_requires_from()
not_is_t< T, any_executor_ref > not_any_executor_ref_t
std::enable_if_t< !std::is_base_of< any_time_executor_base< E, TP >, std::decay_t< T >>::value, std::decay_t< T >> not_any_time_executor
auto make_any_executor() -> any_executor< E >
std::enable_if_t< !std::is_base_of< any_constrained_executor_base< E, CV >, std::decay_t< T >>::value, std::decay_t< T >> not_any_constrained_executor
any_single_sender< E, any_executor_ref< E >> any_executor_base