summaryrefslogtreecommitdiffhomepage
path: root/examples/sharedptr.c
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-12-14 19:50:10 +0100
committerTyge Løvset <[email protected]>2021-12-14 19:50:10 +0100
commit6749cc21a2045d307c239d82891cb860687dfd2a (patch)
tree6987b4cd03caa9b1ad8ab29bd97a7d8d15fcaa67 /examples/sharedptr.c
parentc083936d8fa46b5df921dedae6ca15e1192d6612 (diff)
downloadSTC-modified-6749cc21a2045d307c239d82891cb860687dfd2a.tar.gz
STC-modified-6749cc21a2045d307c239d82891cb860687dfd2a.zip
Added and renamed some examples.
Diffstat (limited to 'examples/sharedptr.c')
-rw-r--r--examples/sharedptr.c56
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");
- }
-}