MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / shiftRight

Method shiftRight

source/core/StarBTreeDatabase.cpp:403–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

401}
402
403void BTreeDatabase::IndexNode::shiftRight(ByteArray const& mid, IndexNode& left, size_t count) {
404 count = std::min(left.pointerCount(), count);
405
406 if (count == 0)
407 return;
408 --count;
409
410 pointers.insert(pointers.begin(), Element{mid, *beginPointer});
411
412 ElementList::iterator s = left.pointers.begin();
413 std::advance(s, left.pointers.size() - count);
414 pointers.insert(pointers.begin(), s, left.pointers.end());
415
416 left.pointers.erase(s, left.pointers.end());
417 if (left.pointers.size() != 0) {
418 beginPointer = left.pointers.at(left.pointers.size() - 1).pointer;
419 left.pointers.eraseAt(left.pointers.size() - 1);
420 } else {
421 beginPointer = left.beginPointer.take();
422 }
423}
424
425ByteArray BTreeDatabase::IndexNode::split(IndexNode& right, size_t i) {
426 ElementList::iterator s = pointers.begin();

Callers 2

indexShiftMethod · 0.45
leafShiftMethod · 0.45

Calls 10

eraseAtMethod · 0.80
pointerCountMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
sizeMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45
atMethod · 0.45
takeMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected