4#include <yaclib/config.hpp>
16#include <yaclib_std/atomic>
24 kResult = std::numeric_limits<std::uintptr_t>::max(),
39#if YACLIB_SYMMETRIC_TRANSFER != 0
40 using Transfer = std::conditional_t<SymmetricTransfer, yaclib_std::coroutine_handle<>,
InlineCore*>;
45 template <
bool SymmetricTransfer>
48 template <
bool SymmetricTransfer>
70 while (
curr !=
nullptr) {
71 auto* next =
curr->Here(*prev);
void StoreCallback(InlineCore &callback) noexcept
Transfer< SymmetricTransfer > SetInline(InlineCore &callback) noexcept
void MoveExecutorTo(BaseCore &callback) noexcept
bool SetCallback(InlineCore &callback) noexcept
yaclib_std::atomic_uintptr_t _callback
bool Empty() const noexcept
Transfer< SymmetricTransfer > SetResult() noexcept
void CallInline(InlineCore &callback) noexcept
#define YACLIB_PURE_VIRTUAL()
YACLIB_INLINE void Loop(InlineCore *prev, InlineCore *curr) noexcept
atomic< std::uintptr_t > atomic_uintptr_t
IExecutor & MakeInline() noexcept
Get Inline executor singleton object.
Contract< V, E > MakeContract()
Creates related future and promise.