summaryrefslogtreecommitdiffhomepage
path: root/include/stc/vec_test_new.c
diff options
context:
space:
mode:
Diffstat (limited to 'include/stc/vec_test_new.c')
-rw-r--r--include/stc/vec_test_new.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/include/stc/vec_test_new.c b/include/stc/vec_test_new.c
new file mode 100644
index 00000000..65bb0ff9
--- /dev/null
+++ b/include/stc/vec_test_new.c
@@ -0,0 +1,53 @@
+#include "cstr.h"
+#include "forward.h"
+
+forward_cvec(i32, int);
+forward_cvec(pnt, struct Point);
+
+struct MyStruct {
+ cvec_i32 intvec;
+ cvec_pnt pntvec;
+} typedef MyStruct;
+
+
+#define f_TAG i32
+#define i_VAL int
+#include "cvec.h"
+
+#define i_TAG f32
+#define i_VAL float
+#include "cvec.h"
+
+struct Point { int x, y; } typedef Point;
+int point_compare(const Point* a, const Point* b) {
+ int c = c_default_compare(&a->x, &b->x);
+ return c ? c : c_default_compare(&a->y, &b->y);
+}
+#define f_TAG pnt
+#define i_VAL Point
+#define i_CMP point_compare
+#include "cvec.h"
+
+#define i_VAL_str
+#include "cvec.h"
+
+
+int main()
+{
+ cvec_i32 vec = cvec_i32_init();
+ cvec_i32_push_back(&vec, 123);
+
+ cvec_f32 fvec = cvec_f32_init();
+ cvec_f32_push_back(&fvec, 123.3);
+
+ cvec_pnt pvec = cvec_pnt_init();
+ cvec_pnt_push_back(&pvec, (Point){42, 14});
+ cvec_pnt_push_back(&pvec, (Point){32, 94});
+ cvec_pnt_push_back(&pvec, (Point){62, 81});
+ cvec_pnt_sort(&pvec);
+ c_foreach (i, cvec_pnt, pvec)
+ printf(" (%d %d)", i.ref->x, i.ref->y);
+ puts("");
+ cvec_str svec = cvec_str_init();
+ cvec_str_emplace_back(&svec, "Hello, friend");
+} \ No newline at end of file