One marker's claim and edge-discovery interface.Only a successful claimant visits the record's fields. The visitor is borrowed for one callback and must not escape it.
More...
|
| bool | claim (offset start, std::size_t words=1, std::size_t alignment_bytes=8) noexcept |
| | Claim a complete record; exactly one marker wins traversal.
|
| template<class T> |
| T const * | claim_target (ptr< T > const &value) noexcept |
| | Claim a typed target without declaring the pointer's source slot.
|
| template<class T> |
| T const * | claim_target (T const *value) noexcept |
| | Claim the complete object from its allocation-level hook.
|
| template<class T> |
| void | pointer (ptr< T > const &value) noexcept |
| | Declare one pointer slot without following or claiming its target.
|
| template<class T> |
| void | pointer (weak_ptr< T > const &value) noexcept |
| | Declare a weak slot without following or claiming its target.
|
| void | pointers (word bits, std::size_t first_slot=0) noexcept |
| | OR a pattern of pointer slots into the current record's metadata. Bit zero names the 32-bit slot at first_slot, relative to the record start. Zero bits leave existing declarations unchanged. No targets are claimed.
|
|
template<class T> |
| T const * | claim (ptr< T > const &value) noexcept |
| | Declare a pointer slot, then claim its target as with claim_target(). Null and already-claimed targets still have their source slot declared.
|
| offset | field (offset cell, unsigned slot=0) noexcept |
| | Declare a managed field and enqueue its nonnull target for tracing.
|
|
void | target (offset at) noexcept |
| | Enqueue an external/wide target without declaring a narrow source slot.
|
template<class T>
requires (!detail::is_ptr<T> && !detail::is_weak_ptr<T>) && detail::visits<T, visitor> |
| void | operator() (T const &value) noexcept |
| | Walk an embedded value without claiming cells again. Parts share the current allocation's pointer mask. Tuple views may name those parts, but ptr fields must retain their original heap addresses.
|
| template<class T> |
| ptr< T > | operator() (ptr< T > const &value) noexcept |
| | Declare a typed field and enqueue its nonnull target.
|
|
template<class T> |
| void | operator() (weak_ptr< T > const &value) noexcept |
| | Declare a weak field for forwarding; never enqueue its target.
|
template<class... Ts>
requires (sizeof...(Ts) != 1) && (detail::visits<Ts, visitor> && ...) |
| void | operator() (Ts const &... values) noexcept |
| | Visit parts in order, preserving their addresses; an empty pack does nothing.
|
|
void | poll () noexcept |
| | Service overdue stochastic donations without leaving this walker. Long cooperative hooks should poll periodically after enqueueing branches.
|
One marker's claim and edge-discovery interface.
Only a successful claimant visits the record's fields. The visitor is borrowed for one callback and must not escape it.
Definition at line 950 of file heap.ccm.