summaryrefslogtreecommitdiffhomepage
path: root/examples/sharedptr.c
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-10-02 12:54:52 +0200
committerTyge Løvset <[email protected]>2021-10-02 12:54:52 +0200
commit67f49709f60ce063b6a1c84364232d19eb71f800 (patch)
tree31fca3680f5add75a11b77ac51ed45dd9ab80906 /examples/sharedptr.c
parentce9ef95a3beb195b5f29fde80a3d7b0f57f84c22 (diff)
downloadSTC-modified-67f49709f60ce063b6a1c84364232d19eb71f800.tar.gz
STC-modified-67f49709f60ce063b6a1c84364232d19eb71f800.zip
Some example improvements.
Diffstat (limited to 'examples/sharedptr.c')
-rw-r--r--examples/sharedptr.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/examples/sharedptr.c b/examples/sharedptr.c
index e062025a..94de3d38 100644
--- a/examples/sharedptr.c
+++ b/examples/sharedptr.c
@@ -1,48 +1,48 @@
#include <stdio.h>
-void int_del(int* x) {
- printf("del: %d\n", *x);
-}
+void int_del(int* x) { printf("del: %d\n", *x); }
#define i_val int
#define i_valdel int_del // optional func to show elements destroyed
#include <stc/csptr.h> // csptr_int: shared pointer to int
#define i_key_csptr csptr_int
-#define i_tag int
-#include <stc/csset.h> // csset_int: csset<csptr_int>
+#define i_tag intp
+#include <stc/csset.h> // csset_intp: csset<csptr_int>
#define i_val_csptr csptr_int
-#define i_tag int
-#include <stc/cvec.h> // cvec_int: cvec<csptr_int>
+#define i_tag intp
+#include <stc/cvec.h> // cvec_intp: cvec<csptr_int>
+
int main()
{
- c_auto (cvec_int, vec)
- c_auto (csset_int, set) // declare and init set, call del at scope exit
+ c_auto (cvec_intp, vec)
+ c_auto (csset_intp, set) // declare and init set, call del at scope exit
{
- cvec_int_push_back(&vec, csptr_int_make(2021));
- cvec_int_push_back(&vec, csptr_int_make(2012));
- cvec_int_push_back(&vec, csptr_int_make(2022));
- cvec_int_push_back(&vec, csptr_int_make(2015));
-
+ c_apply(cvec_intp, push_back, &vec, {
+ csptr_int_make(2021),
+ csptr_int_make(2012),
+ csptr_int_make(2022),
+ csptr_int_make(2015),
+ });
printf("vec:");
- c_foreach (i, cvec_int, vec) printf(" %d", *i.ref->get);
+ c_foreach (i, cvec_intp, vec) printf(" %d", *i.ref->get);
puts("");
// add odd numbers from vec to set
- c_foreach (i, cvec_int, vec)
+ c_foreach (i, cvec_intp, vec)
if (*i.ref->get & 1)
- csset_int_emplace(&set, *i.ref); // copy shared pointer => increments counter.
+ csset_intp_emplace(&set, *i.ref); // copy shared pointer => increments counter.
// erase the two last elements in vec
- cvec_int_pop_back(&vec);
- cvec_int_pop_back(&vec);
+ cvec_intp_pop_back(&vec);
+ cvec_intp_pop_back(&vec);
printf("vec:");
- c_foreach (i, cvec_int, vec) printf(" %d", *i.ref->get);
+ c_foreach (i, cvec_intp, vec) printf(" %d", *i.ref->get);
printf("\nset:");
- c_foreach (i, csset_int, set) printf(" %d", *i.ref->get);
+ c_foreach (i, csset_intp, set) printf(" %d", *i.ref->get);
c_autovar (csptr_int p = csptr_int_clone(vec.data[0]), csptr_int_del(&p)) {
printf("\n%d is now owned by %u objects\n", *p.get, *p.use_count);