summaryrefslogtreecommitdiffhomepage
path: root/examples/mapmap.c
blob: b349e8d3f4d49c37520c9706c67343615111faba (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

#include <stdio.h>
#include <stc/cmap.h>

static void test_destr(int* x) {
    printf("destroy int: %d\n", *x);
}

declare_cmap(ii, int, int, test_destr);
declare_cmap(im, int, cmap_ii, cmap_ii_destroy);

int main(void) {
    cmap_im m = cmap_init;
    cmap_ii ini = cmap_init;
    cmap_ii_put(&cmap_im_insert(&m, 100, ini)->value, 2000, 200);
    cmap_ii_put(&cmap_im_insert(&m, 100, ini)->value, 2001, 201);
    cmap_ii_put(&cmap_im_insert(&m, 100, ini)->value, 2000, 400); // update
    cmap_ii_put(&cmap_im_insert(&m, 110, ini)->value, 2000, 500);
    cmap_ii_put(&cmap_im_insert(&m, 120, ini)->value, 3000, 600);

    c_foreach (i, cmap_im, m)
        c_foreach (j, cmap_ii, i.item->value)
            printf("%d: %d - %d\n", i.item->key, j.item->key, j.item->value);

    cmap_im_destroy(&m);
}