ListClear
Description
Remove all entries from the list. Length becomes 0; node storage is released through the list’s allocator. Element payloads are deinitialized via the configured copy_deinit handler when present.
Parameters
| Name | Direction | Description |
|---|---|---|
l |
in,out | List to be cleared. |
Success
Returns to the caller. The list length is now 0, head and tail are NULL, and every previously-stored node has been freed. When copy_deinit is configured it has been invoked on each previously-stored element.
Failure
Function cannot fail.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
ListInt.c:124:
// Memory operations
case LIST_INT_CLEAR : {
ListClear(list);
break;
}- In
List.Ops.c:50:
static bool test_list_clear_and_reuse(void) {
WriteFmt("Testing ListClear and reuse\n");
DefaultAllocator alloc = DefaultAllocatorInit();- In
List.Ops.c:57:
IntList list = ListInit(&alloc);
ListClear(&list);
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);- In
List.Ops.c:61:
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListClear(&list);
bool result = (ListLen(&list) == 0) && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);- In
List.Ops.c:123:
static bool test_list_clear_with_deep_copy(void) {
WriteFmt("Testing ListClear with deep copy\n");
DefaultAllocator alloc = DefaultAllocatorInit();- In
List.Ops.c:136:
bool result = (g_copy_init_count == 2);
ListClear(&list);
result = result && (g_copy_deinit_count == 2);
result = result && (ListLen(&list) == 0) && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);- In
List.Access.c:46:
result = result && !ListEmpty(&list);
ListClear(&list);
result = result && (ListLen(&list) == 0);
result = result && ListEmpty(&list); result = result && list_matches(GENERIC_LIST(&list), (const int[]) {9}, 1);
ListClear(&list);
result = result && (g_copy_deinit_count == 2);
result = result && (ListLen(&list) == 0) && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);
Last updated on