reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
370 using value_type_ref = typename TreeTy::value_type_ref; 371 using key_type_ref = typename TreeTy::key_type_ref; 372 using CacheTy = DenseMap<unsigned, TreeTy*>; 376 std::vector<TreeTy*> createdNodes; 377 std::vector<TreeTy*> freeNodes; 402 TreeTy* add(TreeTy* T, value_type_ref V) { 402 TreeTy* add(TreeTy* T, value_type_ref V) { 409 TreeTy* remove(TreeTy* T, key_type_ref V) { 409 TreeTy* remove(TreeTy* T, key_type_ref V) { 416 TreeTy* getEmptyTree() const { return nullptr; } 426 bool isEmpty(TreeTy* T) const { return !T; } 427 unsigned getHeight(TreeTy* T) const { return T ? T->getHeight() : 0; } 428 TreeTy* getLeft(TreeTy* T) const { return T->getLeft(); } 428 TreeTy* getLeft(TreeTy* T) const { return T->getLeft(); } 429 TreeTy* getRight(TreeTy* T) const { return T->getRight(); } 429 TreeTy* getRight(TreeTy* T) const { return T->getRight(); } 430 value_type_ref getValue(TreeTy* T) const { return T->value; } 435 unsigned incrementHeight(TreeTy* L, TreeTy* R) const { 435 unsigned incrementHeight(TreeTy* L, TreeTy* R) const { 441 static bool compareTreeWithSection(TreeTy* T, 442 typename TreeTy::iterator& TI, 443 typename TreeTy::iterator& TE) { 444 typename TreeTy::iterator I = T->begin(), E = T->end(); 462 TreeTy* createNode(TreeTy* L, value_type_ref V, TreeTy* R) { 462 TreeTy* createNode(TreeTy* L, value_type_ref V, TreeTy* R) { 462 TreeTy* createNode(TreeTy* L, value_type_ref V, TreeTy* R) { 464 TreeTy* T; 471 T = (TreeTy*) A.Allocate<TreeTy>(); 473 new (T) TreeTy(this, L, R, V, incrementHeight(L,R)); 478 TreeTy* createNode(TreeTy* newLeft, TreeTy* oldTree, TreeTy* newRight) { 478 TreeTy* createNode(TreeTy* newLeft, TreeTy* oldTree, TreeTy* newRight) { 478 TreeTy* createNode(TreeTy* newLeft, TreeTy* oldTree, TreeTy* newRight) { 478 TreeTy* createNode(TreeTy* newLeft, TreeTy* oldTree, TreeTy* newRight) { 484 TreeTy *N = createdNodes[i]; 493 TreeTy* balanceTree(TreeTy* L, value_type_ref V, TreeTy* R) { 493 TreeTy* balanceTree(TreeTy* L, value_type_ref V, TreeTy* R) { 493 TreeTy* balanceTree(TreeTy* L, value_type_ref V, TreeTy* R) { 500 TreeTy *LL = getLeft(L); 501 TreeTy *LR = getRight(L); 508 TreeTy *LRL = getLeft(LR); 509 TreeTy *LRR = getRight(LR); 517 TreeTy *RL = getLeft(R); 518 TreeTy *RR = getRight(R); 525 TreeTy *RLL = getLeft(RL); 526 TreeTy *RLR = getRight(RL); 537 TreeTy* add_internal(value_type_ref V, TreeTy* T) { 537 TreeTy* add_internal(value_type_ref V, TreeTy* T) { 557 TreeTy* remove_internal(key_type_ref K, TreeTy* T) { 557 TreeTy* remove_internal(key_type_ref K, TreeTy* T) { 576 TreeTy* combineTrees(TreeTy* L, TreeTy* R) { 576 TreeTy* combineTrees(TreeTy* L, TreeTy* R) { 576 TreeTy* combineTrees(TreeTy* L, TreeTy* R) { 581 TreeTy* OldNode; 582 TreeTy* newRight = removeMinBinding(R,OldNode); 586 TreeTy* removeMinBinding(TreeTy* T, TreeTy*& Noderemoved) { 586 TreeTy* removeMinBinding(TreeTy* T, TreeTy*& Noderemoved) { 586 TreeTy* removeMinBinding(TreeTy* T, TreeTy*& Noderemoved) { 598 void markImmutable(TreeTy* T) { 607 TreeTy *getCanonicalTree(TreeTy *TNew) { 607 TreeTy *getCanonicalTree(TreeTy *TNew) { 617 TreeTy *&entry = Cache[maskCacheIndex(digest)]; 621 for (TreeTy *T = entry ; T != nullptr; T = T->next) { 623 typename TreeTy::iterator TI = T->begin(), TE = T->end();