| 80 | //------------------------------------------------------------------------------ |
| 81 | |
| 82 | DataBlock *DataBlock_New |
| 83 | ( |
| 84 | uint64_t blockCap, |
| 85 | uint64_t itemCap, |
| 86 | uint itemSize, |
| 87 | fpDestructor fp |
| 88 | ) { |
| 89 | DataBlock *dataBlock = rm_malloc(sizeof(DataBlock)); |
| 90 | dataBlock->blocks = NULL; |
| 91 | dataBlock->itemSize = itemSize + ITEM_HEADER_SIZE; |
| 92 | dataBlock->itemCount = 0; |
| 93 | dataBlock->blockCount = 0; |
| 94 | dataBlock->blockCap = blockCap; |
| 95 | dataBlock->deletedIdx = array_new(uint64_t, 128); |
| 96 | dataBlock->destructor = fp; |
| 97 | |
| 98 | _DataBlock_AddBlocks(dataBlock, |
| 99 | ITEM_COUNT_TO_BLOCK_COUNT(itemCap, dataBlock->blockCap)); |
| 100 | |
| 101 | return dataBlock; |
| 102 | } |
| 103 | |
| 104 | uint64_t DataBlock_ItemCount(const DataBlock *dataBlock) { |
| 105 | return dataBlock->itemCount; |