diff options
Diffstat (limited to 'example_vec/new/main.c')
-rw-r--r-- | example_vec/new/main.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/example_vec/new/main.c b/example_vec/new/main.c index 4849cb3..a756281 100644 --- a/example_vec/new/main.c +++ b/example_vec/new/main.c @@ -1,12 +1,21 @@ #include <stdio.h> + +/* an empty trait matches anything, this would presumably be defined in a + * library somewhere and then included everywhere */ +typedef any {} + #include "vec.h" #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; +/* traits aren't really implemented fully yet but this would check for a + * function like <>_add(<> a, <> b) or something along those lines */ +typedef summable {} + +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]; } |