Definition
inline Iterator(AVLTree<Definition>* parent,
friend class AVLTree<Definition>;
template<typename Definition>
class AVLTree<Definition>::ConstIterator {
inline ConstIterator(const AVLTree<Definition>* parent,
friend class AVLTree<Definition>;
const AVLTree<Definition>* fParent;
template<typename Definition>
AVLTree<Definition>::AVLTree()
template<typename Definition>
AVLTree<Definition>::AVLTree(const Definition& definition)
template<typename Definition>
AVLTree<Definition>::~AVLTree()
template<typename Definition>
AVLTree<Definition>::Clear()
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::RootNode() const
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::Previous(Value* value) const
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::Next(Value* value) const
template<typename Definition>
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::LeftMost() const
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::LeftMost(Value* value) const
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::RightMost() const
template<typename Definition>
typedef typename Definition::Key Key;
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::RightMost(Value* value) const
typedef typename Definition::Value Value;
template<typename Definition>
inline typename AVLTree<Definition>::Iterator
AVLTree<Definition>::GetIterator()
template<typename Definition>
inline typename AVLTree<Definition>::ConstIterator
AVLTree<Definition>::GetIterator() const
template<typename Definition>
inline typename AVLTree<Definition>::Iterator
AVLTree<Definition>::GetIterator(Value* value)
template<typename Definition>
inline typename AVLTree<Definition>::ConstIterator
AVLTree<Definition>::GetIterator(Value* value) const
template<typename Definition>
typename AVLTree<Definition>::Value*
AVLTree<Definition>::Find(const Key& key) const
template<typename Definition>
typename AVLTree<Definition>::Value*
AVLTree<Definition>::FindClosest(const Key& key, bool less) const
template<typename Definition>
AVLTree<Definition>::Insert(Value* value, Iterator* iterator)
template<typename Definition>
typename AVLTree<Definition>::Value*
AVLTree<Definition>::Remove(const Key& key)
template<typename Definition>
AVLTree(const Definition& definition);
AVLTree<Definition>::Remove(Value* value)
template<typename Definition>
AVLTree<Definition>::CompareKeyNode(const void* key,
template<typename Definition>
AVLTree<Definition>::CompareNodes(const AVLTreeNode* node1,
template<typename Definition>
AVLTree<Definition>::_GetAVLTreeNode(Value* value) const
template<typename Definition>
inline typename AVLTree<Definition>::Value*
AVLTree<Definition>::_GetValue(const AVLTreeNode* node) const
template<typename Definition>
AVLTree<Definition>::_Compare(const Key& a, const Value* b)
template<typename Definition>
AVLTree<Definition>::_Compare(const Value* a, const Value* b)
Definition fDefinition;
template<typename Definition, bool AutoExpand = true,
class AtomicsHashTable : public BOpenHashTable<Definition,
typedef typename Definition::KeyType KeyType;
typedef typename Definition::ValueType ValueType;
AtomicsHashTable(const Definition& definition)
const Definition &_Definition() const { return HashTable::fDefinition; }
template<typename Definition, bool AutoExpand = true,
class MultiHashTable : private BOpenHashTable<Definition,
typedef typename Definition::KeyType KeyType;
typedef typename Definition::ValueType ValueType;
MultiHashTable(const Definition& definition)
BOpenHashTable(const Definition& definition)
BOpenHashTable(const Definition& definition, const Allocator& allocator)
Definition fDefinition;
template<typename Definition, bool AutoExpand = true,
typedef typename Definition::KeyType KeyType;
typedef typename Definition::ValueType ValueType;
if (Definition::Compare(key, fRoot) != 0)
Link* rootLink = Definition::GetLink(fRoot);
Definition::GetLink(fRoot)->right = temp;
Key key = Definition::GetKey(node);
Link* rootLink = Definition::GetLink(fRoot);
Definition::GetLink(fRoot)->right = temp;
while (Node* left = Definition::GetLink(node)->left)
_Splay(Definition::GetKey(node));
while (Node* right = Definition::GetLink(node)->right)
_Splay(Definition::GetKey(node));
return Definition::Compare(key, fRoot) == 0 ? fRoot : NULL;
if (Definition::Compare(key, node) > 0) {
node = Definition::GetLink(node)->right;
node = Definition::GetLink(node)->left;
int compare = Definition::Compare(key, node);
node = Definition::GetLink(node)->left;
node = Definition::GetLink(node)->right;
node = Definition::GetLink(node)->right;
node = Definition::GetLink(node)->left;
int c = Definition::Compare(key, t);
Node*& left = Definition::GetLink(t)->left;
if (Definition::Compare(key, left) < 0) {
Link* yLink = Definition::GetLink(y);
rLink = Definition::GetLink(r);
Node*& right = Definition::GetLink(t)->right;
if (Definition::Compare(key, right) > 0) {
Link* yLink = Definition::GetLink(y);
lLink = Definition::GetLink(l);
Link* tLink = Definition::GetLink(t);
template<typename Definition>
typedef typename Definition::KeyType Key;
typedef typename Definition::NodeType Node;
typedef IteratableSplayTree<Definition> Tree;
fNext = *Definition::GetListLink(fNext);
template<typename Definition>
fNext = *Definition::GetListLink(fNext);
typedef typename Definition::KeyType Key;
typedef typename Definition::NodeType Node;
if (Node* previous = fTree.PreviousDontSplay(Definition::GetKey(node)))
previousNext = Definition::GetListLink(previous);
*Definition::GetListLink(node) = *previousNext;
previousNext = Definition::GetListLink(previous);
*previousNext = *Definition::GetListLink(node);
if (Node* previous = fTree.PreviousDontSplay(Definition::GetKey(node)))
previousNext = Definition::GetListLink(previous);
*previousNext = *Definition::GetListLink(node);
SplayTree<Definition> fTree;
Link* nodeLink = Definition::GetLink(node);
Key key = Definition::GetKey(node);
int c = Definition::Compare(key, fRoot);
Link* rootLink = Definition::GetLink(fRoot);
Definition(HashedObjectCache* parent)
Definition(const Definition& definition)
friend struct Definition;
BOpenHashTable(const Definition& definition)
BOpenHashTable(const Definition& definition, const Allocator& allocator)
Definition fDefinition;
template<typename Definition, bool AutoExpand = true,
typedef typename Definition::KeyType KeyType;
typedef typename Definition::ValueType ValueType;