YACLib
C++ library for concurrent tasks execution
|
#include <result_core.hpp>
Public Member Functions | |
ResultCore () noexcept | |
template<typename... Args> | |
ResultCore (Args &&... args) noexcept(std::is_nothrow_constructible_v< Result< V, E >, Args &&... >) | |
~ResultCore () noexcept override | |
template<typename... Args> | |
void | Store (Args &&... args) noexcept(std::is_nothrow_constructible_v< Result< V, E >, Args &&... >) |
Result< V, E > & | Get () noexcept |
template<bool Condition> | |
decltype(auto) | MoveOrConst () |
![]() | |
bool | Empty () const noexcept |
void | MoveExecutorTo (BaseCore &callback) noexcept |
void | CopyExecutorTo (BaseCore &callback) noexcept |
![]() | |
virtual InlineCore * | Here (InlineCore &caller) noexcept=0 |
![]() | |
virtual void | Drop () noexcept |
![]() | |
virtual void | Call () noexcept |
![]() | |
virtual void | IncRef () noexcept |
Increments reference counter. | |
virtual void | DecRef () noexcept |
Decrements reference counter. | |
virtual std::size_t | GetRef () noexcept |
virtual | ~IRef () noexcept=default |
Public Attributes | ||
union { | ||
Result< V, E > _result | ||
Callback _self | ||
}; | ||
![]() | ||
IExecutorPtr | _executor {NoRefTag{}, &MakeInline()} | |
![]() | ||
Node * | next = nullptr | |
Protected Member Functions | |
template<bool SymmetricTransfer, bool Shared> | |
YACLIB_INLINE auto | Impl (InlineCore &caller) noexcept |
![]() | |
BaseCore (State state) noexcept | |
void | StoreCallbackImpl (InlineCore &callback) noexcept |
template<bool Shared> | |
bool | SetCallbackImpl (InlineCore &callback) noexcept |
bool | ResetImpl () noexcept |
template<bool SymmetricTransfer, bool Shared> | |
Transfer< SymmetricTransfer > | SetInlineImpl (InlineCore &callback) noexcept |
template<bool SymmetricTransfer, bool Shared> | |
Transfer< SymmetricTransfer > | SetResultImpl () noexcept |
Additional Inherited Members | |
![]() | |
enum | State : std::uintptr_t { kEmpty = std::uintptr_t{0} , kResult = std::numeric_limits<std::uintptr_t>::max() } |
![]() | |
yaclib_std::atomic_uintptr_t | _callback |
Definition at line 17 of file result_core.hpp.
|
inlinenoexcept |
Definition at line 19 of file result_core.hpp.
References yaclib::detail::BaseCore::kEmpty.
|
inlineexplicitnoexcept |
Definition at line 23 of file result_core.hpp.
|
inlineoverridenoexcept |
Definition at line 27 of file result_core.hpp.
References yaclib::detail::BaseCore::_callback, yaclib::detail::ResultCore< V, E >::_result, yaclib::detail::BaseCore::kResult, yaclib::MakeContract(), and YACLIB_ASSERT.
|
inlinenoexcept |
Definition at line 37 of file result_core.hpp.
References yaclib::detail::ResultCore< V, E >::_result.
Referenced by yaclib::detail::ResultCore< V, E >::Impl(), and yaclib::detail::ResultCore< V, E >::MoveOrConst().
|
inlineprotectednoexcept |
Definition at line 57 of file result_core.hpp.
References yaclib::DownCast(), yaclib::detail::ResultCore< V, E >::Get(), yaclib::MakeContract(), yaclib::detail::ResultCore< V, E >::Store(), and YACLIB_PURE_VIRTUAL.
|
inline |
Definition at line 42 of file result_core.hpp.
References yaclib::detail::ResultCore< V, E >::Get(), and yaclib::MakeContract().
|
inlinenoexcept |
Definition at line 33 of file result_core.hpp.
References yaclib::detail::ResultCore< V, E >::_result, and yaclib::MakeContract().
Referenced by yaclib::detail::ReadyCore< V, E >::Drop(), yaclib::detail::ResultCore< V, E >::Impl(), yaclib::detail::ReadyCore< V, E >::ReadyCore(), yaclib::detail::PromiseType< V, E, Lazy >::return_value(), yaclib::detail::PromiseType< V, E, Lazy >::return_value(), yaclib::detail::PromiseType< V, E, Lazy >::unhandled_exception(), and yaclib::detail::AnyCombinatorBase< V, E, FailPolicy::FirstFail >::~AnyCombinatorBase().
union { ... } yaclib::detail::ResultCore< V, E > |
Definition at line 51 of file result_core.hpp.
Referenced by yaclib::detail::ReadyCore< V, E >::Drop(), yaclib::detail::ResultCore< V, E >::Get(), yaclib::detail::ResultCore< V, E >::Store(), and yaclib::detail::ResultCore< V, E >::~ResultCore().
Definition at line 52 of file result_core.hpp.