7#include "group_ptr.hpp"
13namespace hi::inline
v1 {
20 void const *
const ptr;
30 constexpr virtual ~observable() =
default;
31 observable(observable
const&) =
delete;
32 observable(observable&&) =
delete;
33 observable& operator=(observable
const&) =
delete;
34 observable& operator=(observable&&) =
delete;
35 constexpr observable()
noexcept =
default;
42 [[nodiscard]]
virtual void const *
read() const noexcept = 0;
50 [[nodiscard]] virtual
void *
copy(
void const *ptr) const noexcept = 0;
57 virtual
void commit(
void *ptr) noexcept = 0;
64 virtual
void abort(
void *ptr) const noexcept = 0;
DOXYGEN BUG.
Definition algorithm.hpp:13
Enable a class to be used in a group_ptr.
Definition group_ptr.hpp:34
Definition observable.hpp:15
std::vector< std::string > path_type
The type of the path used for notifying observers.
Definition observable.hpp:18
virtual void read_unlock() const noexcept=0
Unlock for reading.
virtual void write_unlock() const noexcept=0
Unlock for writing.
virtual void read_lock() const noexcept=0
Lock for reading.
virtual void write_lock() const noexcept=0
Lock for writing.
virtual void commit(void *ptr) noexcept=0
Commit the modified copy.
virtual void const * read() const noexcept=0
Get a pointer to the current value.
virtual void * copy(void const *ptr) const noexcept=0
Allocate and make a copy of the value.
virtual void abort(void *ptr) const noexcept=0
Abort the modified copy.