diff options
| author | Tyge Løvset <[email protected]> | 2021-01-20 23:08:47 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-01-20 23:08:47 +0100 |
| commit | b0716d34433af4714f9a0b68278579fa1dd2b24e (patch) | |
| tree | 162330d3fb25cd1b8de095e68fa40bebc6886919 /docs/cvec_api.md | |
| parent | 13c60c38e84e66585038d7509cb485ae33900db5 (diff) | |
| download | STC-modified-b0716d34433af4714f9a0b68278579fa1dd2b24e.tar.gz STC-modified-b0716d34433af4714f9a0b68278579fa1dd2b24e.zip | |
Improved README.md
Diffstat (limited to 'docs/cvec_api.md')
| -rw-r--r-- | docs/cvec_api.md | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/docs/cvec_api.md b/docs/cvec_api.md index 23083920..a94d10e1 100644 --- a/docs/cvec_api.md +++ b/docs/cvec_api.md @@ -173,3 +173,42 @@ item: Mary item: Jake item: 2 elements so far ``` +### Example 3 + +Container with elements of structs: +```c +#include <stc/cstr.h> +#include <stc/cvec.h> + +typedef struct { + cstr name; // dynamic string + int id; +} User; + +int User_compare(const User* a, const User* b) { + int c = strcmp(a->name.str, b->name.str); + return c != 0 ? c : a->id - b->id; +} +void User_del(User* self) { + cstr_del(&self->name); +} +User User_clone(User user) { + user.name = cstr_clone(user.name); + return user; +} + +// declare a memory managed, clonable vector of users: +using_cvec(u, User, User_compare, User_del, User_clone); + +int main(void) { + cvec_u vec = cvec_u_init(); + cvec_u_push_back(&vec, (User) {cstr_from("admin"), 0}); + cvec_u_push_back(&vec, (User) {cstr_from("joe"), 1}); + + cvec_u vec2 = cvec_u_clone(vec); + c_foreach (i, cvec_u, vec2) + printf("%s: %d\n", i.ref->name.str, i.ref->id); + + c_del(cvec_u, &vec, &vec2); // cleanup +} +``` |
