| 380 | } |
| 381 | |
| 382 | void BTreeDatabase::IndexNode::shiftLeft(ByteArray const& mid, IndexNode& right, size_t count) { |
| 383 | count = std::min(right.pointerCount(), count); |
| 384 | |
| 385 | if (count == 0) |
| 386 | return; |
| 387 | |
| 388 | pointers.append(Element{mid, *right.beginPointer}); |
| 389 | |
| 390 | ElementList::iterator s = right.pointers.begin(); |
| 391 | std::advance(s, count - 1); |
| 392 | pointers.insert(pointers.end(), right.pointers.begin(), s); |
| 393 | |
| 394 | right.pointers.erase(right.pointers.begin(), s); |
| 395 | if (right.pointers.size() != 0) { |
| 396 | right.beginPointer = right.pointers.at(0).pointer; |
| 397 | right.pointers.eraseAt(0); |
| 398 | } else { |
| 399 | right.beginPointer.reset(); |
| 400 | } |
| 401 | } |
| 402 | |
| 403 | void BTreeDatabase::IndexNode::shiftRight(ByteArray const& mid, IndexNode& left, size_t count) { |
| 404 | count = std::min(left.pointerCount(), count); |