| 142 | |
| 143 | template <typename Key, typename Pointer> |
| 144 | void SimpleBTreeIndex<Key, Pointer>::shiftLeft(Key const& mid, SimpleBTreeIndex& right, size_t count) { |
| 145 | count = std::min(right.pointerCount(), count); |
| 146 | |
| 147 | if (count == 0) |
| 148 | return; |
| 149 | |
| 150 | pointers.append(Element{mid, *right.beginPointer}); |
| 151 | |
| 152 | typename ElementList::iterator s = right.pointers.begin(); |
| 153 | std::advance(s, count - 1); |
| 154 | pointers.insert(pointers.end(), right.pointers.begin(), s); |
| 155 | |
| 156 | right.pointers.erase(right.pointers.begin(), s); |
| 157 | if (right.pointers.size() != 0) { |
| 158 | right.beginPointer = right.pointers.at(0).pointer; |
| 159 | right.pointers.eraseAt(0); |
| 160 | } else { |
| 161 | right.beginPointer.reset(); |
| 162 | } |
| 163 | } |
| 164 | |
| 165 | template <typename Key, typename Pointer> |
| 166 | void SimpleBTreeIndex<Key, Pointer>::shiftRight(Key const& mid, SimpleBTreeIndex& left, size_t count) { |