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
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
List.Init.c:102:
bool result = (g_copy_init_count == 2);
result = result && (ListAt(&list, 0) == 1007);
result = result && (ListAt(&list, 1) == 1009);- In
List.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
List.Access.c:74:
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
List.Access.c:75:
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);
static bool test_list_at_out_of_bounds_fails(void) {
WriteFmt("Testing ListAt out of bounds\n");
List(int) list = ListInit(get_test_alloc()); List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
(void)ListAt(&list, 1);
return false;- 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)
///
Last updated on