diff options
| author | Tyge Løvset <[email protected]> | 2021-12-14 19:50:10 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-12-14 19:50:10 +0100 |
| commit | 6749cc21a2045d307c239d82891cb860687dfd2a (patch) | |
| tree | 6987b4cd03caa9b1ad8ab29bd97a7d8d15fcaa67 /examples/sharedptr.c | |
| parent | c083936d8fa46b5df921dedae6ca15e1192d6612 (diff) | |
| download | STC-modified-6749cc21a2045d307c239d82891cb860687dfd2a.tar.gz STC-modified-6749cc21a2045d307c239d82891cb860687dfd2a.zip | |
Added and renamed some examples.
Diffstat (limited to 'examples/sharedptr.c')
| -rw-r--r-- | examples/sharedptr.c | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/examples/sharedptr.c b/examples/sharedptr.c deleted file mode 100644 index c3da5287..00000000 --- a/examples/sharedptr.c +++ /dev/null @@ -1,56 +0,0 @@ -#include <stdio.h>
-#include <string.h>
-
-void int_del(int* x) {
- printf("del: %d\n", *x);
-}
-
-// csptr implements its own clone method using reference counting,
-// so 'i_valfrom' need not be defined (will be ignored).
-
-#define i_type iref // set type name to be defined (instead of 'csptr_int')
-#define i_val int
-#define i_del int_del // optional, just to display the elements destroyed
-#include <stc/csptr.h> // iref
-
-#define i_key_ref iref // note: use i_key_ref instead of i_key for csptr/cbox elements
-#include <stc/csset.h> // csset_iref (like: std::set<std::shared_ptr<int>>)
-
-#define i_val_ref iref // note: as above.
-#include <stc/cvec.h> // cvec_iref (like: std::vector<std::shared_ptr<int>>)
-
-int main()
-{
- c_auto (cvec_iref, vec) // declare and init vec, call cvec_iref_del() at scope exit
- c_auto (csset_iref, set) // declare and init set, call csset_iref_del() at scope exit
- {
- const int years[] = {2021, 2012, 2022, 2015};
- c_forrange (i, c_arraylen(years))
- cvec_iref_push_back(&vec, iref_new(years[i]));
-
- printf("vec:");
- c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get);
- puts("");
-
- // add odd numbers from vec to set
- c_foreach (i, cvec_iref, vec)
- if (*i.ref->get & 1)
- csset_iref_emplace(&set, *i.ref); // copy shared pointer => increments counter.
-
- // erase the two last elements in vec
- cvec_iref_pop_back(&vec);
- cvec_iref_pop_back(&vec);
-
- printf("vec:");
- c_foreach (i, cvec_iref, vec) printf(" %d", *i.ref->get);
-
- printf("\nset:");
- c_foreach (i, csset_iref, set) printf(" %d", *i.ref->get);
-
- c_autovar (iref p = iref_clone(vec.data[0]), iref_del(&p)) {
- printf("\n%d is now owned by %ld objects\n", *p.get, *p.use_count);
- }
-
- puts("\nDone");
- }
-}
|
