Rev 1196 | Rev 1248 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1196 | Rev 1221 | ||
---|---|---|---|
Line 115... | Line 115... | ||
115 | ASSERT(value); |
115 | ASSERT(value); |
116 | 116 | ||
117 | lnode = leaf_node; |
117 | lnode = leaf_node; |
118 | if (!lnode) { |
118 | if (!lnode) { |
119 | if (btree_search(t, key, &lnode)) { |
119 | if (btree_search(t, key, &lnode)) { |
120 | panic("B-tree %P already contains key %d\n", t, key); |
120 | panic("B-tree %p already contains key %d\n", t, key); |
121 | } |
121 | } |
122 | } |
122 | } |
123 | 123 | ||
124 | _btree_insert(t, key, value, NULL, lnode); |
124 | _btree_insert(t, key, value, NULL, lnode); |
125 | } |
125 | } |
Line 198... | Line 198... | ||
198 | btree_node_t *lnode; |
198 | btree_node_t *lnode; |
199 | 199 | ||
200 | lnode = leaf_node; |
200 | lnode = leaf_node; |
201 | if (!lnode) { |
201 | if (!lnode) { |
202 | if (!btree_search(t, key, &lnode)) { |
202 | if (!btree_search(t, key, &lnode)) { |
203 | panic("B-tree %P does not contain key %d\n", t, key); |
203 | panic("B-tree %p does not contain key %d\n", t, key); |
204 | } |
204 | } |
205 | } |
205 | } |
206 | 206 | ||
207 | _btree_remove(t, key, lnode); |
207 | _btree_remove(t, key, lnode); |
208 | } |
208 | } |
Line 498... | Line 498... | ||
498 | node->subtree[j - 1] = node->subtree[j]; |
498 | node->subtree[j - 1] = node->subtree[j]; |
499 | node->keys--; |
499 | node->keys--; |
500 | return; |
500 | return; |
501 | } |
501 | } |
502 | } |
502 | } |
503 | panic("node %P does not contain key %d\n", node, key); |
503 | panic("node %p does not contain key %d\n", node, key); |
504 | } |
504 | } |
505 | 505 | ||
506 | /** Remove key and its right subtree pointer from B-tree node. |
506 | /** Remove key and its right subtree pointer from B-tree node. |
507 | * |
507 | * |
508 | * Remove the key and eliminate gaps in node->key array. |
508 | * Remove the key and eliminate gaps in node->key array. |
Line 525... | Line 525... | ||
525 | } |
525 | } |
526 | node->keys--; |
526 | node->keys--; |
527 | return; |
527 | return; |
528 | } |
528 | } |
529 | } |
529 | } |
530 | panic("node %P does not contain key %d\n", node, key); |
530 | panic("node %p does not contain key %d\n", node, key); |
531 | } |
531 | } |
532 | 532 | ||
533 | /** Split full B-tree node and insert new key-value-right-subtree triplet. |
533 | /** Split full B-tree node and insert new key-value-right-subtree triplet. |
534 | * |
534 | * |
535 | * This function will split a node and return pointer to a newly created |
535 | * This function will split a node and return pointer to a newly created |
Line 667... | Line 667... | ||
667 | 667 | ||
668 | for (i = 0; i < node->keys + 1; i++) { |
668 | for (i = 0; i < node->keys + 1; i++) { |
669 | if (subtree == node->subtree[i]) |
669 | if (subtree == node->subtree[i]) |
670 | return i - (int) (right != false); |
670 | return i - (int) (right != false); |
671 | } |
671 | } |
672 | panic("node %P does not contain subtree %P\n", node, subtree); |
672 | panic("node %p does not contain subtree %p\n", node, subtree); |
673 | } |
673 | } |
674 | 674 | ||
675 | /** Rotate one key-value-rsubtree triplet from the left sibling to the right sibling. |
675 | /** Rotate one key-value-rsubtree triplet from the left sibling to the right sibling. |
676 | * |
676 | * |
677 | * The biggest key and its value and right subtree is rotated from the left node |
677 | * The biggest key and its value and right subtree is rotated from the left node |