Derive-C
Loading...
Searching...
No Matches
trait.c
Go to the documentation of this file.
1#include <stdint.h>
2
3#include <derive-c/prelude.h>
4
5#define Foo_REFLECT(F) \
6 F(uint32_t, bing) \
7 F(char, baz) \
8 F(char, zing)
9
11DC_DERIVE_EQ(Foo)
14
15int main() {
16 Foo f = {.bing = 23, .baz = 'c', .zing = 'z'};
17 Foo g = {.bing = 23, .baz = 'c', .zing = 'z'};
18
19 DC_ASSERT(Foo_eq(&f, &g));
20 DC_ASSERT(!Foo_gt(&f, &g) && !Foo_lt(&f, &g));
21
22 Foo z = Foo_clone(&f);
23 z.bing += 10;
24 DC_ASSERT(Foo_gt(&z, &f));
25}
int main()
Definition alloc.c:109
#define DC_DERIVE_CLONE(TYPE)
Definition clone.h:18
#define DC_DERIVE_STRUCT(TYPE,...)
Definition derive.h:13
#define DC_DERIVE_EQ(TYPE)
Definition eq.h:26
#define DC_DERIVE_ORD(TYPE)
Definition ord.h:26
#define DC_ASSERT(expr,...)
Definition panic.h:37