From 2bd35118cf5c040444eecfff2e9b37df8922811a Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 8 Dec 2020 23:00:54 +0100 Subject: Added docs/cptr_api.md --- examples/share_ptr2.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'examples') diff --git a/examples/share_ptr2.c b/examples/share_ptr2.c index d4b536ac..abb58705 100644 --- a/examples/share_ptr2.c +++ b/examples/share_ptr2.c @@ -6,38 +6,25 @@ typedef struct { cstr_t name, last; } Person; Person* Person_from(Person* p, cstr_t name, cstr_t last) { - printf("make %s\n", name.str); p->name = name, p->last = last; return p; } -Person* Person_make(Person* p, const char* name, const char* last) { - p->name = cstr_from(name), p->last = cstr_from(last); - return p; -} void Person_del(Person* p) { - printf("del: %s\n", p->name.str); c_del(cstr, &p->name, &p->last); } -using_csptr(pe, Person, Person_del, c_no_compare); -using_cmap(pe, int, csptr_pe, csptr_pe_del); +using_csptr(ps, Person, Person_del, c_no_compare); +using_cmap(ps, int, csptr_ps, csptr_ps_del); int main() { - cmap_pe map = cmap_pe_init(); - - puts("Emplace 10:"); - // c_try_emplace: The last argument is completely ignored if key already exist in map, so no memory leak happens! - c_forrange (i, 20) { // When i>9, all key will exist, so value arg is not executed. - c_try_emplace(&map, cmap_pe, (i * 7) % 10, - csptr_pe_from(Person_from(c_new(Person), cstr_from_fmt("Name %d", (i * 7) % 10), + cmap_ps map = cmap_ps_init(); + c_forrange (i, 20) { + c_try_emplace(&map, cmap_ps, (i * 7) % 10, + csptr_ps_from(Person_from(c_new(Person), cstr_from_fmt("Name %d", (i * 7) % 10), cstr_from_fmt("Last %d", (i * 9) % 10)))); } - c_try_emplace(&map, cmap_pe, 11, csptr_pe_from(Person_make(c_new(Person), "Hello", "World!"))); - - c_foreach (i, cmap_pe, map) + c_foreach (i, cmap_ps, map) printf(" %d: %s\n", i.val->first, i.val->second.get->name.str); - - puts("Destroy map:"); - cmap_pe_del(&map); + cmap_ps_del(&map); } \ No newline at end of file -- cgit v1.2.3