Global: removes FFlist::elementSize

Improves performance of module Sound and PhysicalMemory
This commit is contained in:
李通洲
2026-04-14 10:41:18 +08:00
committed by Carter Li
parent ee7f574349
commit c7ecc33b64
170 changed files with 669 additions and 585 deletions
+3 -3
View File
@@ -112,9 +112,9 @@ int main(void) {
#ifndef _WIN32 // Windows doesn't have setenv
{
ffListInit(&instance.config.display.constants, sizeof(FFstrbuf));
ffStrbufInitStatic(ffListAdd(&instance.config.display.constants), "CONST1");
ffStrbufInitStatic(ffListAdd(&instance.config.display.constants), "CONST2");
ffListInit(&instance.config.display.constants);
ffStrbufInitStatic(FF_LIST_ADD(FFstrbuf, instance.config.display.constants), "CONST1");
ffStrbufInitStatic(FF_LIST_ADD(FFstrbuf, instance.config.display.constants), "CONST2");
setenv("FF_TEST", "ENVVAR", 1);
VERIFY("output({$FF_TEST})", "", "output(ENVVAR)");
VERIFY("output({$1})", "", "output(CONST1)");
+20 -24
View File
@@ -10,7 +10,7 @@ __attribute__((__noreturn__)) static void testFailed(const FFlist* list, const c
fputs(FASTFETCH_TEXT_MODIFIER_ERROR, stderr);
fprintf(stderr, "[%d] %s, list:", lineNo, expression);
for (uint32_t i = 0; i < list->length; ++i) {
fprintf(stderr, "%u ", *(uint32_t*) ffListGet(list, i));
fprintf(stderr, "%u ", *FF_LIST_GET(uint32_t, *list, i));
}
fputc('\n', stderr);
fputs(FASTFETCH_TEXT_MODIFIER_RESET, stderr);
@@ -18,8 +18,8 @@ __attribute__((__noreturn__)) static void testFailed(const FFlist* list, const c
exit(1);
}
static bool numEqualsAdapter(const void* first, const void* second) {
return *(uint32_t*) first == *(uint32_t*) second;
static bool numEqualsAdapter(const uint32_t* first, const uint32_t* second) {
return *first == *second;
}
#define VERIFY(expression) \
@@ -31,9 +31,8 @@ int main(void) {
// initA
ffListInit(&list, sizeof(uint32_t));
ffListInit(&list);
VERIFY(list.elementSize == sizeof(uint32_t));
VERIFY(list.capacity == 0);
VERIFY(list.length == 0);
@@ -43,18 +42,17 @@ int main(void) {
}
// shift
VERIFY(!ffListShift(&list, &n));
VERIFY(!FF_LIST_SHIFT(list, &n));
VERIFY(list.length == 0);
// pop
VERIFY(!ffListPop(&list, &n));
VERIFY(!FF_LIST_POP(list, &n));
VERIFY(list.length == 0);
// add
for (uint32_t i = 1; i <= FF_LIST_DEFAULT_ALLOC + 1; ++i) {
*(uint32_t*) ffListAdd(&list) = i;
*FF_LIST_ADD(uint32_t, list) = i;
VERIFY(list.elementSize == sizeof(uint32_t));
VERIFY(list.length == i);
if (i <= FF_LIST_DEFAULT_ALLOC) {
@@ -63,8 +61,8 @@ int main(void) {
VERIFY(list.capacity == FF_LIST_DEFAULT_ALLOC * 2);
}
VERIFY(*(uint32_t*) ffListGet(&list, 0) == 1);
VERIFY(*(uint32_t*) ffListGet(&list, i - 1) == i);
VERIFY(*FF_LIST_GET(uint32_t, list, 0) == 1);
VERIFY(*FF_LIST_GET(uint32_t, list, i - 1) == i);
}
VERIFY(list.length == FF_LIST_DEFAULT_ALLOC + 1);
@@ -77,40 +75,38 @@ int main(void) {
// ffListFirstIndexComp
n = 10;
VERIFY(ffListFirstIndexComp(&list, &n, numEqualsAdapter) == 9);
VERIFY(ffListFirstIndexComp(&list, sizeof(n), &n, (void*) numEqualsAdapter) == 9);
n = 999;
VERIFY(ffListFirstIndexComp(&list, &n, numEqualsAdapter) == list.length);
VERIFY(ffListFirstIndexComp(&list, sizeof(n), &n, (void*) numEqualsAdapter) == list.length);
// ffListContains
n = 10;
VERIFY(ffListContains(&list, &n, numEqualsAdapter));
VERIFY(FF_LIST_CONTAINS(list, &n, numEqualsAdapter));
n = 999;
VERIFY(!ffListContains(&list, &n, numEqualsAdapter));
VERIFY(!FF_LIST_CONTAINS(list, &n, numEqualsAdapter));
// shift
VERIFY(ffListShift(&list, &n));
VERIFY(FF_LIST_SHIFT(list, &n));
VERIFY(n == 1);
VERIFY(list.length == FF_LIST_DEFAULT_ALLOC);
VERIFY(*(uint32_t*) ffListGet(&list, 0) == 2);
VERIFY(*(uint32_t*) ffListGet(&list, list.length - 1) == FF_LIST_DEFAULT_ALLOC + 1);
VERIFY(*FF_LIST_GET(uint32_t, list, 0) == 2);
VERIFY(*FF_LIST_GET(uint32_t, list, list.length - 1) == FF_LIST_DEFAULT_ALLOC + 1);
// pop
VERIFY(ffListPop(&list, &n));
VERIFY(FF_LIST_POP(list, &n));
VERIFY(n == FF_LIST_DEFAULT_ALLOC + 1);
VERIFY(list.length == FF_LIST_DEFAULT_ALLOC - 1);
VERIFY(*(uint32_t*) ffListGet(&list, 0) == 2);
VERIFY(*(uint32_t*) ffListGet(&list, list.length - 1) == FF_LIST_DEFAULT_ALLOC);
VERIFY(*FF_LIST_GET(uint32_t, list, 0) == 2);
VERIFY(*FF_LIST_GET(uint32_t, list, list.length - 1) == FF_LIST_DEFAULT_ALLOC);
// Destroy
ffListDestroy(&list);
VERIFY(list.elementSize == sizeof(uint32_t));
VERIFY(list.capacity == 0);
VERIFY(list.length == 0);
{
FF_LIST_AUTO_DESTROY test = ffListCreate(1);
VERIFY(test.elementSize == 1);
FF_LIST_AUTO_DESTROY test = ffListCreate();
VERIFY(test.capacity == 0);
VERIFY(test.length == 0);
}