diff options
| author | Tyge Løvset <[email protected]> | 2020-12-08 23:00:54 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2020-12-08 23:00:54 +0100 |
| commit | 2bd35118cf5c040444eecfff2e9b37df8922811a (patch) | |
| tree | 1a3bb5ef0dc639d00071e307072bb21a9e4a3c1b /examples | |
| parent | 5555f7918f5349f2c98ab14c2162480da997541e (diff) | |
| download | STC-modified-2bd35118cf5c040444eecfff2e9b37df8922811a.tar.gz STC-modified-2bd35118cf5c040444eecfff2e9b37df8922811a.zip | |
Added docs/cptr_api.md
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/share_ptr2.c | 29 |
1 files changed, 8 insertions, 21 deletions
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 |
