1 #include <stdint.h>
2
3 /* This is the code generated by cbindgen 0.12.1 for the `enum TT`
4 * type in nonclike.rs . */
5 enum TT_Tag {
6 AA,
7 BB,
8 };
9 typedef uint8_t TT_Tag;
10
11 typedef struct {
12 uint64_t _0;
13 uint64_t _1;
14 } AA_Body;
15
16 typedef struct {
17 TT_Tag tag;
18 union {
19 AA_Body aa;
20 };
21 } TT;
22
23 /* This is the code generated by cbindgen 0.12.1 for the `enum T` type
24 * in nonclike.rs . */
25 enum T_Tag {
26 A,
27 B,
28 };
29 typedef uint8_t T_Tag;
30
31 typedef struct {
32 uint64_t _0;
33 } A_Body;
34
35 typedef struct {
36 T_Tag tag;
37 union {
38 A_Body a;
39 };
40 } T;
41
tt_add(TT a,TT b)42 uint64_t tt_add(TT a, TT b) {
43 if (a.tag == AA && b.tag == AA) {
44 return a.aa._0 + a.aa._1 + b.aa._0 + b.aa._1;
45 } else if (a.tag == AA) {
46 return a.aa._0 + a.aa._1;
47 } else if (b.tag == BB) {
48 return b.aa._0 + b.aa._1;
49 } else {
50 return 0;
51 }
52 }
53
t_add(T a,T b)54 uint64_t t_add(T a, T b) {
55 if (a.tag == A && b.tag == A) {
56 return a.a._0 + b.a._0;
57 } else if (a.tag == AA) {
58 return a.a._0;
59 } else if (b.tag == BB) {
60 return b.a._0;
61 } else {
62 return 0;
63 }
64 }
65
tt_new(uint64_t a,uint64_t b)66 TT tt_new(uint64_t a, uint64_t b) {
67 TT tt = {
68 .tag = AA,
69 .aa = {
70 ._0 = a,
71 ._1 = b,
72 },
73 };
74 return tt;
75 }
76
t_new(uint64_t a)77 T t_new(uint64_t a) {
78 T t = {
79 .tag = A,
80 .a = {
81 ._0 = a,
82 },
83 };
84 return t;
85 }
86