#include "containers.h" namespace tp { struct AvlNode { template struct EphemeralNode { Type mVal = NULL; halni mVersion = NULL; }; template struct EphemeralsContainer { List> mList; }; struct PesistentLink { static EphemeralsContainer sContainer; EphemeralNode* mNode = NULL; PesistentLink& operator=(const PesistentLink& field) { } PesistentLink& operator=(AvlNode* val) { } //Type& operator->() { return mNode->mVal; } //const ListIterator& operator*() { return *this; } operator AvlNode*() { } }; struct PesistentValue { static EphemeralsContainer sContainer; EphemeralNode* mNode = NULL; PesistentLink& operator=(const PesistentLink& field) {} PesistentLink& operator=(halni val) {} operator halni() { } }; PesistentLink mLeft; PesistentLink mRight; PesistentLink mParent; PesistentValue mHeight; PesistentValue mVal; halni mRefCount = 0; AvlNode() { mVal = 0; } AvlNode(halni aKey) { mVal = aKey; } bool disentRight(halni aKey) { return aKey > mVal; } bool disentLeft(halni aKey) { return aKey < mVal; } bool exactNode(halni aKey) { return aKey == mVal; } halni getFindKey(AvlNode* node = NULL) { return mVal; } void copyData(const AvlNode& in) { mVal = in.mVal; } halni keyInRightSubtree(halni key) { return key; } halni keyInLeftSubtree(halni key) { return key; } void updateTreeCahceCallBack() {} void* operator new(std::size_t) { } void operator delete(void* p) { } }; }; void fat_nodes_test() { tp::AvlTree avl; }