ListAt
Description
Data in node at given index in given list This is a more expensive call. Fetches pointer to data twice and then dereferences. Better use ListPtrAt instead.
Parameters
| Name | Direction | Description |
|---|---|---|
l |
in | List to get data from. |
idx |
in | Index to get data at. |
Success
Data from node in list at given index.
Failure
Empty object.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Access.h:128:
#ifdef __cplusplus
# define ListAt(l, idx) (ListPtrAt((l), (idx)) ? *ListPtrAt((l), (idx)) : (LIST_DATA_TYPE(l) {0}))
#else
///
- In
Access.h:187:
/// TAGS: List, First, Access
///
#define ListFirst(l) ListAt((l), 0)
///
- In
Access.h:199:
/// TAGS: List, Last, Access
///
#define ListLast(l) ListAt((l), (l)->length - 1)
///
- In
ListInt.c:94:
uint16_t idx = extract_u16(data, offset, data_size);
if (idx < ListLen(list)) {
volatile i32 value = ListAt(list, idx);
(void)value; // Prevent optimization
}- In
Ops.c:204:
bool ok = ListSort(&list, compare_ints);
bool result = ok && (ListLen(&list) == 2);
result = result && (ListAt(&list, 0) == 1);
result = result && (ListAt(&list, 1) == 2);- In
Ops.c:205:
bool result = ok && (ListLen(&list) == 2);
result = result && (ListAt(&list, 0) == 1);
result = result && (ListAt(&list, 1) == 2);
ListDeinit(&list);- In
Init.c:102:
bool result = (g_copy_init_count == 2);
result = result && (ListAt(&list, 0) == 1007);
result = result && (ListAt(&list, 1) == 1009);- In
Init.c:103:
bool result = (g_copy_init_count == 2);
result = result && (ListAt(&list, 0) == 1007);
result = result && (ListAt(&list, 1) == 1009);
ListDeinit(&list);- In
Insert.c:306:
bool ok = ListPushArrR(&list, arr, 3);
bool result = ok && (ListLen(&list) == 3);
result = result && (ListAt(&list, 0) == 7);
result = result && (ListAt(&list, 1) == 8);
result = result && (ListAt(&list, 2) == 9);- In
Insert.c:307:
bool result = ok && (ListLen(&list) == 3);
result = result && (ListAt(&list, 0) == 7);
result = result && (ListAt(&list, 1) == 8);
result = result && (ListAt(&list, 2) == 9);- In
Insert.c:308:
result = result && (ListAt(&list, 0) == 7);
result = result && (ListAt(&list, 1) == 8);
result = result && (ListAt(&list, 2) == 9);
ListDeinit(&list);- In
Deadend.c:173:
static bool test_list_at_out_of_bounds_fails(void) {
WriteFmt("Testing ListAt out of bounds\n");
List(int) list = ListInit(get_test_alloc());- In
Deadend.c:177:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
(void)ListAt(&list, 1);
return false;- In
Access.c:105:
bool result = ListPtrAt(&list, 0) && (*ListPtrAt(&list, 0) == 10);
result = result && ListPtrAt(&list, 3) && (*ListPtrAt(&list, 3) == 40);
result = result && (ListAt(&list, 1) == 20);
result = result && (ListAt(&list, 2) == 30);
result = result && (ListFirst(&list) == 10);- In
Access.c:106:
result = result && ListPtrAt(&list, 3) && (*ListPtrAt(&list, 3) == 40);
result = result && (ListAt(&list, 1) == 20);
result = result && (ListAt(&list, 2) == 30);
result = result && (ListFirst(&list) == 10);
result = result && (ListLast(&list) == 40);
Last updated on