template <class T, bool LinkWithPtr = isPointer<decltype(T::Next)>::value>
class LinkOp
Defined at line 32 of file ../../third_party/scudo/src/list.h
Intrusive POD singly and doubly linked list.
An object with all zero fields should represent a valid empty list. clear()
should be called on all non-zero-initialized objects before using.
The intrusive list requires the member `Next` (and `Prev` if doubly linked
list)` defined in the node type. The type of `Next`/`Prev` can be a pointer
or an index to an array. For example, if the storage of the nodes is an
array, instead of using a pointer type, linking with an index type can save
some space.
There are two things to be noticed while using an index type,
1. Call init() to set up the base address of the array.
2. Define `EndOfListVal` as the nil of the list.
Public Methods
void LinkOp<T, LinkWithPtr> ()
Defined at line 34 of file ../../third_party/scudo/src/list.h
void LinkOp<T, LinkWithPtr> (T * BaseT, uptr BaseSize)
Defined at line 35 of file ../../third_party/scudo/src/list.h
void init (T * LinkBase, uptr Size)
Defined at line 36 of file ../../third_party/scudo/src/list.h
T * getBase ()
Defined at line 37 of file ../../third_party/scudo/src/list.h
uptr getSize ()
Defined at line 38 of file ../../third_party/scudo/src/list.h
T * getNext (T * X)
Defined at line 40 of file ../../third_party/scudo/src/list.h
void setNext (T * X, T * Next)
Defined at line 41 of file ../../third_party/scudo/src/list.h
T * getPrev (T * X)
Defined at line 43 of file ../../third_party/scudo/src/list.h
void setPrev (T * X, T * Prev)
Defined at line 44 of file ../../third_party/scudo/src/list.h
T * getEndOfListVal ()
Defined at line 46 of file ../../third_party/scudo/src/list.h