summaryrefslogtreecommitdiffhomepage
path: root/misc/examples/linkedlists/list_erase.c
blob: 211c5a5de2798f9ac5bb12854ff2665f14ee4c80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// erasing from clist
#include <stdio.h>

#define i_type IList
#define i_key int
#include <stc/clist.h>

int main(void)
{
    IList L = c_init(IList, {10, 20, 30, 40, 50});

    c_foreach (x, IList, L)
        printf("%d ", *x.ref);
    puts("");
                                          // 10 20 30 40 50
    IList_iter it = IList_begin(&L);      // ^
    IList_next(&it);
    it = IList_erase_at(&L, it);          // 10 30 40 50
                                          //    ^
    IList_iter end = IList_end(&L);       //
    IList_next(&it);
    it = IList_erase_range(&L, it, end);  // 10 30
                                          //       ^
    printf("list contains:");
    c_foreach (x, IList, L)
        printf(" %d", *x.ref);
    puts("");

    IList_drop(&L);
}