ListPushBackR
Description
Append an element at the tail of the list. R-value form.
Success
Returns true. A new node holding a copy of rval is linked as the new tail; the list length grows by one.
Failure
Returns false on allocation failure. The list is unchanged.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Insert.h:416:
#define ListMustPushBackR(l, rval) \
do { \
if (!ListPushBackR((l), (rval))) { \
LOG_FATAL("ListMustPushBackR failed"); \
} \- In
ListInt.c:38:
case LIST_INT_PUSH_BACK : {
i32 value = (i32)extract_u32(data, offset, data_size);
ListPushBackR(list, value);
break;
}- In
ListInt.c:208:
for (uint8_t i = 0; i < count && *offset + 4 <= data_size; i++) {
i32 value = (i32)extract_u32(data, offset, data_size);
ListPushBackR(&temp, value);
}- In
Ops.c:96:
ListClear(&list);
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);- In
Ops.c:97:
ListClear(&list);
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListClear(&list);- In
Ops.c:98:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListClear(&list);- In
Ops.c:103:
bool result = (ListLen(&list) == 0) && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);
ListPushBackR(&list, 9);
result = result && list_matches(GENERIC_LIST(&list), (const int[]) {9}, 1);- In
Ops.c:119:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 4);
ListPushBackR(&list, 1);
ListPushBackR(&list, 3);- In
Ops.c:120:
ListPushBackR(&list, 4);
ListPushBackR(&list, 1);
ListPushBackR(&list, 3);
ListPushBackR(&list, 2);- In
Ops.c:121:
ListPushBackR(&list, 4);
ListPushBackR(&list, 1);
ListPushBackR(&list, 3);
ListPushBackR(&list, 2);
ListPushBackR(&list, 2);- In
Ops.c:122:
ListPushBackR(&list, 1);
ListPushBackR(&list, 3);
ListPushBackR(&list, 2);
ListPushBackR(&list, 2);- In
Ops.c:123:
ListPushBackR(&list, 3);
ListPushBackR(&list, 2);
ListPushBackR(&list, 2);
ListSort(&list, compare_ints);- In
Ops.c:147:
ListSort(&empty, compare_ints);
ListReverse(&empty);
ListPushBackR(&singleton, 42);
ListSort(&singleton, compare_ints);
ListReverse(&singleton);- In
Ops.c:169:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);- In
Ops.c:170:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
bool result = (g_copy_init_count == 2);- In
Ops.c:178:
result = result && (ListLen(&list) == 0) && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);
ListPushBackR(&list, 9);
result = result && (g_copy_init_count == 3);
result = result && list_matches(GENERIC_LIST(&list), (const int[]) {9}, 1);- In
Ops.c:199:
typedef List(int) IntList;
IntList list = ListInit(&alloc);
ListPushBackR(&list, 2);
ListPushBackR(&list, 1);- In
Ops.c:200:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 2);
ListPushBackR(&list, 1);
bool ok = ListSort(&list, compare_ints);- In
Ops.c:234:
s_copy_calls = 0;
s_copy_fail_at = UINT64_MAX;
ListPushBackR(&dst, 1);
ListPushBackR(&dst, 2);
ListPushBackR(&dst, 3);- In
Ops.c:235:
s_copy_fail_at = UINT64_MAX;
ListPushBackR(&dst, 1);
ListPushBackR(&dst, 2);
ListPushBackR(&dst, 3);- In
Ops.c:236:
ListPushBackR(&dst, 1);
ListPushBackR(&dst, 2);
ListPushBackR(&dst, 3);
// src is a plain list: its data is read verbatim by merge_list; only
- In
Ops.c:240:
// src is a plain list: its data is read verbatim by merge_list; only
// dst's failing_copy_init runs during the merge.
ListPushBackR(&src, 7);
ListPushBackR(&src, 8);
ListPushBackR(&src, 9);- In
Ops.c:241:
// dst's failing_copy_init runs during the merge.
ListPushBackR(&src, 7);
ListPushBackR(&src, 8);
ListPushBackR(&src, 9);- In
Ops.c:242:
ListPushBackR(&src, 7);
ListPushBackR(&src, 8);
ListPushBackR(&src, 9);
// Arm: the second src element merged into dst fails to copy.
- In
Init.c:98:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 9);- In
Init.c:99:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 9);
bool result = (g_copy_init_count == 2);- In
Insert.c:103:
ListPushFrontL(&list, d);
ListPushFrontR(&list, h);
ListPushBackR(&list, e);
ListPushFront(&list, f);
ListPushBackL(&list, i);- In
Insert.c:145:
int arr[] = {4, 5, 6};
ListPushBackR(&list, 1);
ListPushArrL(&list, arr, 0);- In
Insert.c:167:
reset_counters();
ListPushBackR(&list, x);
ListInsertL(&list, x, 1);
ListPushArrL(&list, arr, 2);- In
Insert.c:192:
reset_counters();
ListPushBackR(&src, 3);
ListPushBackR(&src, 4);
ListMergeL(&dest, &src);- In
Insert.c:193:
reset_counters();
ListPushBackR(&src, 3);
ListPushBackR(&src, 4);
ListMergeL(&dest, &src);- In
Insert.c:201:
result = result && (ListCopyInit(&src) == tracked_copy_init) && (ListCopyDeinit(&src) == tracked_copy_deinit);
ListPushBackR(&src, 5);
result = result && (g_copy_init_count == 3);
result = result && list_matches(GENERIC_LIST(&src), (const int[]) {1005}, 1);- In
Insert.c:225:
IntList src_a = ListInit(&alloc);
ListPushBackR(&dest_l, 1);
ListPushBackR(&dest_l, 2);
ListPushBackR(&src_l, 3);- In
Insert.c:226:
ListPushBackR(&dest_l, 1);
ListPushBackR(&dest_l, 2);
ListPushBackR(&src_l, 3);
ListPushBackR(&src_l, 4);- In
Insert.c:227:
ListPushBackR(&dest_l, 1);
ListPushBackR(&dest_l, 2);
ListPushBackR(&src_l, 3);
ListPushBackR(&src_l, 4);
ListMergeL(&dest_l, &src_l);- In
Insert.c:228:
ListPushBackR(&dest_l, 2);
ListPushBackR(&src_l, 3);
ListPushBackR(&src_l, 4);
ListMergeL(&dest_l, &src_l);- In
Insert.c:231:
ListMergeL(&dest_l, &src_l);
ListPushBackR(&dest_r, 1);
ListPushBackR(&dest_r, 2);
ListPushBackR(&src_r, 3);- In
Insert.c:232:
ListPushBackR(&dest_r, 1);
ListPushBackR(&dest_r, 2);
ListPushBackR(&src_r, 3);
ListPushBackR(&src_r, 4);- In
Insert.c:233:
ListPushBackR(&dest_r, 1);
ListPushBackR(&dest_r, 2);
ListPushBackR(&src_r, 3);
ListPushBackR(&src_r, 4);
ListMergeR(&dest_r, &src_r);- In
Insert.c:234:
ListPushBackR(&dest_r, 2);
ListPushBackR(&src_r, 3);
ListPushBackR(&src_r, 4);
ListMergeR(&dest_r, &src_r);- In
Insert.c:237:
ListMergeR(&dest_r, &src_r);
ListPushBackR(&dest_a, 5);
ListPushBackR(&src_a, 6);
ListMerge(&dest_a, &src_a);- In
Insert.c:238:
ListPushBackR(&dest_a, 5);
ListPushBackR(&src_a, 6);
ListMerge(&dest_a, &src_a);- In
Insert.c:270:
reset_counters();
ListPushBackR(&shallow_src, 11);
ListPushBackR(&shallow_src, 12);
ListMergeL(&deep_dest, &shallow_src);- In
Insert.c:271:
reset_counters();
ListPushBackR(&shallow_src, 11);
ListPushBackR(&shallow_src, 12);
ListMergeL(&deep_dest, &shallow_src);
ListMergeL(&empty_dest, &empty_src);- In
Insert.c:338:
s_copy_calls = 0;
s_copy_fail_at = UINT64_MAX;
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);- In
Insert.c:339:
s_copy_fail_at = UINT64_MAX;
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);- In
Insert.c:340:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
// Arm: the second element of the upcoming array push fails to copy.
- In
Type.c:12:
for (u64 i = 0; i < count; i++) {
int v = (int)(i * 10);
ListPushBackR((List(int) *)list, v);
}
}- In
Deadend.c:22:
do { \
for (int fill_i = 0; fill_i < 8; fill_i++) { \
ListPushBackR((list_ptr), fill_i * 10); \
} \
} while (0)- In
Deadend.c:36:
for (u64 i = 0; i < count; i++) {
int v = (int)(i * 10);
ListPushBackR((List(int) *)list, v);
}
}- In
Deadend.c:166:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListPtrAt(&list, 1);- In
Deadend.c:176:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
(void)ListAt(&list, 1);- In
Deadend.c:195:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListNodePtrAt(&list, 1);- In
Deadend.c:205:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
(void)ListNodeAt(&list, 1);- In
Deadend.c:251:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListRemove(&list, NULL, 1);- In
Deadend.c:279:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListRemoveRange(&list, NULL, 1, 2);- In
Deadend.c:280:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListRemoveRange(&list, NULL, 1, 2);- In
Deadend.c:290:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListSwapItems(&list, 0, 1);- In
Deadend.c:301:
List(int) list = ListInit(get_test_alloc());
int key = 10;
ListPushBackR(&list, 10);
ListFind(&list, &key, NULL);- In
Deadend.c:311:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListFind(&list, NULL, compare_ints);- In
Deadend.c:328:
List(int) list = ListInit(get_test_alloc());
ListPushBackR(&list, 10);
ListSort(&list, NULL);- In
Remove.c:53:
int removed = 0;
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Remove.c:54:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Remove.c:55:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Remove.c:56:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListRemove(&list, &removed, 1);- In
Remove.c:86:
int removed[2] = {0, 0};
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);- In
Remove.c:87:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);- In
Remove.c:88:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);- In
Remove.c:89:
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:90:
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:91:
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);
ListRemoveRange(&list, removed, 2, 2);- In
Remove.c:121:
int suffix[2] = {0, 0};
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);- In
Remove.c:122:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);- In
Remove.c:123:
ListPushBackR(&list, 1);
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);- In
Remove.c:124:
ListPushBackR(&list, 2);
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:125:
ListPushBackR(&list, 3);
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:126:
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);
ListRemoveRange(&list, prefix, 0, 2);- In
Remove.c:152:
int removed[3] = {0, 0, 0};
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);- In
Remove.c:153:
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);
ListRemoveRange(&list, removed, 0, 3);- In
Remove.c:154:
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);
ListRemoveRange(&list, removed, 0, 3);- In
Remove.c:175:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);- In
Remove.c:176:
reset_counters();
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);- In
Remove.c:177:
ListPushBackR(&list, 7);
ListPushBackR(&list, 8);
ListPushBackR(&list, 9);
ListRemoveRange(&list, NULL, 1, 0);- In
Remove.c:214:
reset_counters();
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:215:
reset_counters();
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);- In
Remove.c:216:
ListPushBackR(&list, 4);
ListPushBackR(&list, 5);
ListPushBackR(&list, 6);
ListRemoveRange(&list, removed, 1, 2);- In
Foreach.c:24:
#define FILL_INT_LIST(list_ptr) \
do { \
ListPushBackR((list_ptr), 10); \
ListPushBackR((list_ptr), 20); \
ListPushBackR((list_ptr), 30); \- In
Foreach.c:25:
do { \
ListPushBackR((list_ptr), 10); \
ListPushBackR((list_ptr), 20); \
ListPushBackR((list_ptr), 30); \
ListPushBackR((list_ptr), 40); \
- In
Foreach.c:26:
ListPushBackR((list_ptr), 10); \
ListPushBackR((list_ptr), 20); \
ListPushBackR((list_ptr), 30); \
ListPushBackR((list_ptr), 40); \
ListPushBackR((list_ptr), 50); \
- In
Foreach.c:27:
ListPushBackR((list_ptr), 20); \
ListPushBackR((list_ptr), 30); \
ListPushBackR((list_ptr), 40); \
ListPushBackR((list_ptr), 50); \
} while (0)- In
Foreach.c:28:
ListPushBackR((list_ptr), 30); \
ListPushBackR((list_ptr), 40); \
ListPushBackR((list_ptr), 50); \
} while (0)- In
Access.c:23:
do { \
for (int fill_i = 0; fill_i < 8; fill_i++) { \
ListPushBackR((list_ptr), fill_i * 10); \
} \
} while (0)- In
Access.c:31:
for (u64 i = 0; i < count; i++) {
int v = (int)(i * 10);
ListPushBackR((List(int) *)list, v);
}
}- In
Access.c:71:
result = result && ListEmpty(&list);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);- In
Access.c:72:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
result = result && (ListLen(&list) == 2);- In
Access.c:82:
result = result && (ListHead(&list) == NULL) && (ListTail(&list) == NULL);
ListPushBackR(&list, 30);
result = result && list_matches(GENERIC_LIST(&list), (const int[]) {30}, 1);- In
Access.c:98:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:99:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:100:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:101:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
bool result = ListPtrAt(&list, 0) && (*ListPtrAt(&list, 0) == 10);- In
Access.c:128:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:129:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:130:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:131:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
GenericListNode *node1 = GENERIC_LIST_NODE(ListNodePtrAt(&list, 1));- In
Access.c:177:
result = result && !ListContains(&list, &needle, compare_ints);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:178:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 20);- In
Access.c:179:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 20);- In
Access.c:180:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 20);
result = result && (ListFind(&list, &needle, compare_ints) == 1);- In
Access.c:218:
// 200 elements: value at index i is exactly i.
for (int i = 0; i < 200; i++) {
ListPushBackR(&list, i);
}- In
Access.c:392:
typedef List(int) IntList;
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:393:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:394:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);- In
Access.c:395:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);- In
Access.c:396:
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);
GenericListNode *node = get_node_for_list_iteration(GENERIC_LIST(&list), NULL, 0, 2);- In
Access.c:419:
typedef List(int) IntList;
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:420:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:421:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);- In
Access.c:422:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);- In
Access.c:423:
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
ListPushBackR(&list, 50);
GenericListNode *node = get_node_for_list_iteration(GENERIC_LIST(&list), NULL, 0, 3);- In
Access.c:448:
IntList list = ListInit(&alloc);
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);- In
Access.c:449:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:450:
ListPushBackR(&list, 10);
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);- In
Access.c:451:
ListPushBackR(&list, 20);
ListPushBackR(&list, 30);
ListPushBackR(&list, 40);
// Tail is index 3 (value 40); -(len-1) = -3 lands exactly on head.
Last updated on