| 137 | } |
| 138 | |
| 139 | void DataBlock_Ensure(DataBlock *dataBlock, uint64_t idx) { |
| 140 | ASSERT(dataBlock != NULL); |
| 141 | |
| 142 | // datablock[idx] exists |
| 143 | if(dataBlock->itemCap > idx) return; |
| 144 | |
| 145 | // make sure datablock cap > 'idx' |
| 146 | int64_t additionalItems = (1 + idx) - dataBlock->itemCap; |
| 147 | int64_t additionalBlocks = |
| 148 | ITEM_COUNT_TO_BLOCK_COUNT(additionalItems, dataBlock->blockCap); |
| 149 | _DataBlock_AddBlocks(dataBlock, additionalBlocks); |
| 150 | |
| 151 | ASSERT(dataBlock->itemCap > idx); |
| 152 | } |
| 153 | |
| 154 | void *DataBlock_GetItem(const DataBlock *dataBlock, uint64_t idx) { |
| 155 | ASSERT(dataBlock != NULL); |
no test coverage detected