Make sure datablock can accommodate at least k items.
| 125 | |
| 126 | // Make sure datablock can accommodate at least k items. |
| 127 | void DataBlock_Accommodate(DataBlock *dataBlock, int64_t k) { |
| 128 | // Compute number of free slots. |
| 129 | int64_t freeSlotsCount = dataBlock->itemCap - dataBlock->itemCount; |
| 130 | int64_t additionalItems = k - freeSlotsCount; |
| 131 | |
| 132 | if(additionalItems > 0) { |
| 133 | int64_t additionalBlocks = |
| 134 | ITEM_COUNT_TO_BLOCK_COUNT(additionalItems, dataBlock->blockCap); |
| 135 | _DataBlock_AddBlocks(dataBlock, additionalBlocks); |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | void DataBlock_Ensure(DataBlock *dataBlock, uint64_t idx) { |
| 140 | ASSERT(dataBlock != NULL); |