Intrusive Containers
|
Base Container Node Class. More...
#include <Container.h>
Protected Member Functions | |
ContainerNode (C *root=nullptr) | |
ContainerNode (ContainerNode const &)=delete | |
~ContainerNode () | |
virtual bool | check () const =0 |
void | operator= (ContainerNode const &)=delete |
unsigned | readLock (bool upgradable) const |
unsigned | readLock (bool upgradable) const |
Under ContainerNoSafety application handles all the needed restrictions. | |
void | readUnlock (unsigned code) const |
void | readUnlock (unsigned save) const |
Under ContainerNoSafety application handles all the needed restrictions. | |
void | setRoot (C *root) |
Set our Container. | |
unsigned | writeLock (bool upgrade) const |
unsigned | writeLock (bool upgrade) const |
Under ContainerNoSafety application handles all the needed restrictions. | |
void | writeUnlock (unsigned code) const |
void | writeUnlock (unsigned save) const |
Under ContainerNoSafety application handles all the needed restrictions. | |
Private Types | |
typedef Container< s > | C |
The type of the Container that we are part of. | |
Base Container Node Class.
Used to provide the Thread Safety Primitives for a Container Node
s | The ContainerThreadSafety value to define the thread safety model of the Container Note, the Nodes must match the safety level of the container. |
|
private |
The type of the Container that we are part of.
|
inlineprotected |
|
inlineprotected |
|
protecteddelete |
|
protectedpure virtual |
Implemented in AATreeInNode< R, N, K, s, n >, BalTreeInNode< R, N, K, s, n >, DListInNode< R, N, s, n >, DListInNode< N, L, s, 2 *n+1 >, DListInNode< N, ManyManyLink< R, N, s, n, void >, s, 2 *n+1 >, DListInNode< R, L, s, 2 *n >, DListInNode< R, ManyManyLink< R, N, s, n, void >, s, 2 *n >, ListInNode< R, N, s, n >, ManyManyLink< R, N, s, n, L >, ManyManyLink< R, N, s, n, ManyManyLink< R, N, s, n, void > >, SortDListInNode< R, N, s, n >, SortListInNode< R, N, s, n >, and TreeInNode< R, N, K, s, n >.
|
protecteddelete |
|
protected |
Referenced by AATreeInNode< R, N, K, s, n >::readLock(), BalTreeInNode< R, N, K, s, n >::readLock(), DListInNode< R, N, s, n >::readLock(), ListInNode< R, N, s, n >::readLock(), and TreeInNode< R, N, K, s, n >::readLock().
|
inlineprotected |
Under ContainerNoSafety application handles all the needed restrictions.
|
protected |
Referenced by AATreeInNode< R, N, K, s, n >::readUnlock(), BalTreeInNode< R, N, K, s, n >::readUnlock(), DListInNode< R, N, s, n >::readUnlock(), ListInNode< R, N, s, n >::readUnlock(), and TreeInNode< R, N, K, s, n >::readUnlock().
|
inlineprotected |
Under ContainerNoSafety application handles all the needed restrictions.
|
inlineprotected |
Set our Container.
Used to allow to Node to record what Container it is in. Used only if safety method need resources from the Container, like a Mutex
If an operation changes the root of a node, then it needs to save the original root to exit the critical section on that container that it entered before the operation.
Referenced by ContainerNode< s >::ContainerNode(), DListInNode< R, N, s, n >::setRoot(), ListInNode< R, N, s, n >::setRoot(), and TreeInNode< R, N, K, s, n >::setRoot().
|
protected |
Referenced by AATreeInNode< R, N, K, s, n >::writeLock(), BalTreeInNode< R, N, K, s, n >::writeLock(), DListInNode< R, N, s, n >::writeLock(), ListInNode< R, N, s, n >::writeLock(), and TreeInNode< R, N, K, s, n >::writeLock().
|
inlineprotected |
Under ContainerNoSafety application handles all the needed restrictions.
|
protected |
Referenced by AATreeInNode< R, N, K, s, n >::writeUnlock(), BalTreeInNode< R, N, K, s, n >::writeUnlock(), DListInNode< R, N, s, n >::writeUnlock(), ListInNode< R, N, s, n >::writeUnlock(), and TreeInNode< R, N, K, s, n >::writeUnlock().
|
inlineprotected |
Under ContainerNoSafety application handles all the needed restrictions.