Storage class for all edge flowed values that abstracts how access to the value is provided. More...
Public Member Functions | |
edge_version_storage (edge_version_storage const &)=delete | |
edge_version_storage & | operator= (edge_version_storage const &)=delete |
bool | is_direct_storage (void) const |
immutable_shared< T > | wrapper (void) const |
T && | steal (void) |
Allows stored value to be stolen by a local consumer task if a runtime check (edge_entry::stealable() conservatively detects the value is no longer needed. | |
void | clear_flow (void) |
Reset state for reinvocation in a persistent paragraph. | |
T const & | value (void) const |
Protected Member Functions | |
template<typename Q > | |
void | set_value (Q &&val) |
void | set_value (immutable_shared< T > &&wrapper) |
void | set_value (immutable_shared< T > const &wrapper) |
Storage class for all edge flowed values that abstracts how access to the value is provided.
Values are accessed in one of two ways: (1) In object frame. This occurs when object is flowed by copy or move and the corresponding derived class version entry (and it's edge entry) managed the lifetime of the object.
(2) Via an immutable shared wrapper to the value created by the runtime. Used when sharing the value with another location in shared memory.