summaryrefslogtreecommitdiffhomepage
path: root/examples/mapmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/mapmap.c')
-rw-r--r--examples/mapmap.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/examples/mapmap.c b/examples/mapmap.c
index 82f35cd3..14ccd9a9 100644
--- a/examples/mapmap.c
+++ b/examples/mapmap.c
@@ -1,26 +1,33 @@
#include <stdio.h>
#include <stc/cmap.h>
+#include <stc/cstr.h>
-static void test_destr(int* x) {
- printf("destroy int: %d\n", *x);
+static void my_str_destr(cstr_t* x) {
+ printf("destroy: %s\n", x->str);
+ cstr_destroy(x);
}
-declare_cmap(ii, int, int, test_destr);
-declare_cmap(im, int, cmap_ii, cmap_ii_destroy);
+declare_cmap_str(ss, cstr_t, my_str_destr);
+declare_cmap_str(cfg, cmap_ss, cmap_ss_destroy);
int main(void) {
- cmap_im m = cmap_init;
- cmap_ii init = cmap_init;
- cmap_ii_put(&cmap_im_insert(&m, 100, init)->value, 2000, 200);
- cmap_ii_put(&cmap_im_insert(&m, 100, init)->value, 2001, 201);
- cmap_ii_put(&cmap_im_insert(&m, 100, init)->value, 2000, 400); // update
- cmap_ii_put(&cmap_im_insert(&m, 110, init)->value, 2000, 500);
- cmap_ii_put(&cmap_im_insert(&m, 120, init)->value, 3000, 600);
+ cmap_cfg config = cmap_init;
+ cmap_ss init = cmap_init;
+ cmap_ss_put(&cmap_cfg_insert(&config, "user", init)->value, "name", cstr_make("Joe"));
+ cmap_ss_put(&cmap_cfg_insert(&config, "user", init)->value, "groups", cstr_make("proj1,proj3"));
+ cmap_ss_put(&cmap_cfg_insert(&config, "group", init)->value, "proj1", cstr_make("Energy"));
+ cmap_ss_put(&cmap_cfg_insert(&config, "group", init)->value, "proj2", cstr_make("Windy"));
+ cmap_ss_put(&cmap_cfg_insert(&config, "group", init)->value, "proj3", cstr_make("Oil"));
+ cmap_ss_put(&cmap_cfg_insert(&config, "admin", init)->value, "employees", cstr_make("2302"));
- 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_ss_put(&cmap_cfg_insert(&config, "group", init)->value, "proj2", cstr_make("Wind")); // Update
+ puts("");
- cmap_im_destroy(&m);
+ c_foreach (i, cmap_cfg, config)
+ c_foreach (j, cmap_ss, i.item->value)
+ printf("%s: %s - %s (%u)\n", i.item->key.str, j.item->key.str, j.item->value.str, i.item->value.bucket_count);
+
+ puts("");
+ cmap_cfg_destroy(&config);
} \ No newline at end of file