FFlist: adds ffListReserve

This commit is contained in:
李通洲
2026-03-13 09:52:18 +08:00
parent cfabee4ba7
commit 6ed8aac6bb
2 changed files with 10 additions and 5 deletions
+9
View File
@@ -106,6 +106,15 @@ static inline void ffListClear(FFlist* list)
list->length = 0;
}
static inline void ffListReserve(FFlist* list, uint32_t newCapacity)
{
if (__builtin_expect(newCapacity <= list->capacity, false))
return;
list->data = (uint8_t*) realloc(list->data, (size_t) newCapacity * list->elementSize);
list->capacity = newCapacity;
}
#define FF_LIST_FOR_EACH(itemType, itemVarName, listVar) \
assert(sizeof(itemType) == (listVar).elementSize); \
for(itemType* itemVarName = (itemType*)(listVar).data; \
+1 -5
View File
@@ -6,11 +6,7 @@
void* ffListAdd(FFlist* list)
{
if(list->length == list->capacity)
{
list->capacity = list->capacity == 0 ? FF_LIST_DEFAULT_ALLOC : list->capacity * 2;
// realloc(NULL, newSize) is same as malloc(newSize)
list->data = realloc(list->data, (size_t)list->capacity * list->elementSize);
}
ffListReserve(list, list->capacity == 0 ? FF_LIST_DEFAULT_ALLOC : list->capacity * 2);
++list->length;
return ffListGet(list, list->length - 1);