aboutsummaryrefslogtreecommitdiff
path: root/example_vec/new/main.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-07-18 21:33:50 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2025-07-18 21:33:50 +0300
commit94b767679fc68c51aa0c80bdada35b9978989199 (patch)
tree711af40c89140a9add7db30cf6a81861a3df1013 /example_vec/new/main.c
parent1564f79cfc7d790e15298d28f52b4c5c216ce9e5 (diff)
downloadngc-94b767679fc68c51aa0c80bdada35b9978989199.tar.gz
ngc-94b767679fc68c51aa0c80bdada35b9978989199.zip
add supertemplate handling
Diffstat (limited to 'example_vec/new/main.c')
-rw-r--r--example_vec/new/main.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/example_vec/new/main.c b/example_vec/new/main.c
index a00c35c..009911e 100644
--- a/example_vec/new/main.c
+++ b/example_vec/new/main.c
@@ -1,10 +1,21 @@
#include "vec.h"
-typedef ints = vec[int]();
-
#define foreach(name, i, s) \
for (name##_iter i = name##_begin(s); !name##_end(s, i); i = name##_next(i))
+typedef summable_vec[summable type]() = vec[type](){
+ type <>_sum(struct <> *v) {
+ type sum = 0;
+ for (size_t i = 0; i < v->n; ++i) {
+ sum += v->buf[i];
+ }
+
+ return sum;
+ }
+};
+
+typedef ints = summable_vec[int]();
+
int main()
{
struct ints ints = ints_create(0);