xentara-plugin v2.0.4
The Xentara Plugin Framework
|
A sentinel that protects write access to memory containing a heterogenious array. More...
#include <xentara/memory/WriteSentinel_Array.hpp>
Public Member Functions | |
WriteSentinel (const ArrayBlock &block) | |
Constructor. | |
WriteSentinel (const ArrayBlock &block, CopyOldValuesTag tag) | |
Constructor that copies the old values, if necessary. | |
~WriteSentinel ()=default | |
Destructor. | |
internal auto | operator[] (const Array::Handle &handle) const noexcept -> void * |
Gets a raw memory element. | |
template<typename Type > | |
auto | operator[] (const Array::ObjectHandle< Type > &handle) const noexcept -> Type & |
Gets an element containing a C++ object. | |
auto | commit (std::chrono::system_clock::time_point timeStamp) -> void |
Commits the changes. | |
template<std::same_as< process::Event >... AdditionalEvents> requires (sizeof...(AdditionalEvents) > 0) | |
auto | commit (std::chrono::system_clock::time_point timeStamp, const AdditionalEvents &...additionalEvents) -> void |
Commits the changes, raising additional events. | |
auto | commit (std::chrono::system_clock::time_point timeStamp, std::span< std::reference_wrapper< const process::Event > > additionalEvents) -> void |
Commits the changes, raising a list of additional events. | |
auto | commit () -> void |
deprecated Deprecated overload of commit() that uses the current time as time stamp. | |
auto | discard () -> void |
Discards any uncommitted changes. | |
auto | oldValues () const -> ConstArrayAccessor |
Creates an accessor for the old values of the block. | |
A sentinel that protects write access to memory containing a heterogenious array.
xentara::memory::WriteSentinel< Array >::WriteSentinel | ( | const ArrayBlock & | block | ) |
Constructor.
block | The memory block you wish to write to |
xentara::memory::WriteSentinel< Array >::WriteSentinel | ( | const ArrayBlock & | block, |
CopyOldValuesTag | tag | ||
) |
Constructor that copies the old values, if necessary.
This constructor will initialize the new values with copies of the old values.
block | The memory block you wish to write to |
tag | Always pass kCopyOldValues as this parameter |
|
default |
Destructor.
Discards any uncommitted changes.
auto xentara::memory::WriteSentinel< Array >::commit | ( | ) | -> void |
deprecated Deprecated overload of commit() that uses the current time as time stamp.
auto xentara::memory::WriteSentinel< Array >::commit | ( | std::chrono::system_clock::time_point | timeStamp | ) | -> void |
auto xentara::memory::WriteSentinel< Array >::commit | ( | std::chrono::system_clock::time_point | timeStamp, |
const AdditionalEvents &... | additionalEvents | ||
) | -> void |
Commits the changes, raising additional events.
This overload allows you to specify one or more additional events to raise together with any change events resulting from the commit. The change events and additional events will be raised atomically as a block, as described in process::Event::raise().
timeStamp | The time stamp to be used when raising events. |
additionalEvents | Additional events to raise together with the change events. |
auto xentara::memory::WriteSentinel< Array >::commit | ( | std::chrono::system_clock::time_point | timeStamp, |
std::span< std::reference_wrapper< const process::Event > > | additionalEvents | ||
) | -> void |
Commits the changes, raising a list of additional events.
This overload allows you to specify a list of additional events to raise together with any change events resulting from the commit. The change events and additional events will be raised atomically as a block, as described in process::Event::raise().
timeStamp | The time stamp to be used when raising events. |
additionalEvents | Additional events to raise together with the change events. |
auto xentara::memory::WriteSentinel< Array >::discard | ( | ) | -> void |
auto xentara::memory::WriteSentinel< Array >::oldValues | ( | ) | const -> ConstArrayAccessor |
Creates an accessor for the old values of the block.
This function can be used to access the old values of the block for memory resources that write by allocating a new block and swapping it in for the old one on commit. For memory resources that write data in place, the returned object provides access to the same memory as the writer itself.
|
noexcept |
Gets a raw memory element.
handle | The element handle |
|
noexcept |
Gets an element containing a C++ object.
handle | The element handle |