16#ifndef WPIUTIL_WPI_EPOCHTRACKER_H
17#define WPIUTIL_WPI_EPOCHTRACKER_H
25#define LLVM_DEBUGEPOCHBASE_HANDLEBASE_EMPTYBASE
59 const uint64_t *EpochAddress =
nullptr;
60 uint64_t EpochAtCreation = UINT64_MAX;
66 : EpochAddress(&Parent->Epoch), EpochAtCreation(Parent->Epoch) {}
82#define LLVM_DEBUGEPOCHBASE_HANDLEBASE_EMPTYBASE __declspec(empty_bases)
84#define LLVM_DEBUGEPOCHBASE_HANDLEBASE_EMPTYBASE
A base class for iterator classes ("handles") that wish to poll for iterator invalidating modificatio...
Definition: EpochTracker.h:58
bool isHandleInSync() const
Returns true if the DebugEpochBase this Handle is linked to has not called incrementEpoch on itself s...
Definition: EpochTracker.h:71
HandleBase(const DebugEpochBase *Parent)
Definition: EpochTracker.h:65
const void * getEpochAddress() const
Returns a pointer to the epoch word stored in the data structure this handle points into.
Definition: EpochTracker.h:76
A base class for data structure classes wishing to make iterators ("handles") pointing into themselve...
Definition: EpochTracker.h:36
void incrementEpoch()
Calling incrementEpoch invalidates all handles pointing into the calling instance.
Definition: EpochTracker.h:44
~DebugEpochBase()
The destructor calls incrementEpoch to make use-after-free bugs more likely to crash deterministicall...
Definition: EpochTracker.h:48
Definition: ntcore_cpp.h:26