1 #include <stdarg.h>
2 #include <stdbool.h>
3 #include <stdint.h>
4 #include <stdlib.h>
5 
6 typedef struct {
7   int32_t x;
8   int32_t y;
9 } StylePoint_i32;
10 
11 typedef struct {
12   float x;
13   float y;
14 } StylePoint_f32;
15 
16 enum StyleFoo_i32_Tag {
17   Foo_i32,
18   Bar_i32,
19   Baz_i32,
20   Bazz_i32,
21 };
22 typedef uint8_t StyleFoo_i32_Tag;
23 
24 typedef struct {
25   StyleFoo_i32_Tag tag;
26   int32_t x;
27   StylePoint_i32 y;
28   StylePoint_f32 z;
29 } StyleFoo_Body_i32;
30 
31 typedef struct {
32   StyleFoo_i32_Tag tag;
33   int32_t _0;
34 } StyleBar_Body_i32;
35 
36 typedef struct {
37   StyleFoo_i32_Tag tag;
38   StylePoint_i32 _0;
39 } StyleBaz_Body_i32;
40 
41 typedef union {
42   StyleFoo_i32_Tag tag;
43   StyleFoo_Body_i32 foo;
44   StyleBar_Body_i32 bar;
45   StyleBaz_Body_i32 baz;
46 } StyleFoo_i32;
47 
48 typedef enum {
49   Bar1_i32,
50   Bar2_i32,
51   Bar3_i32,
52   Bar4_i32,
53 } StyleBar_i32_Tag;
54 
55 typedef struct {
56   int32_t x;
57   StylePoint_i32 y;
58   StylePoint_f32 z;
59   int32_t (*u)(int32_t);
60 } StyleBar1_Body_i32;
61 
62 typedef struct {
63   int32_t _0;
64 } StyleBar2_Body_i32;
65 
66 typedef struct {
67   StylePoint_i32 _0;
68 } StyleBar3_Body_i32;
69 
70 typedef struct {
71   StyleBar_i32_Tag tag;
72   union {
73     StyleBar1_Body_i32 bar1;
74     StyleBar2_Body_i32 bar2;
75     StyleBar3_Body_i32 bar3;
76   };
77 } StyleBar_i32;
78 
79 typedef struct {
80   uint32_t x;
81   uint32_t y;
82 } StylePoint_u32;
83 
84 typedef enum {
85   Bar1_u32,
86   Bar2_u32,
87   Bar3_u32,
88   Bar4_u32,
89 } StyleBar_u32_Tag;
90 
91 typedef struct {
92   int32_t x;
93   StylePoint_u32 y;
94   StylePoint_f32 z;
95   int32_t (*u)(int32_t);
96 } StyleBar1_Body_u32;
97 
98 typedef struct {
99   uint32_t _0;
100 } StyleBar2_Body_u32;
101 
102 typedef struct {
103   StylePoint_u32 _0;
104 } StyleBar3_Body_u32;
105 
106 typedef struct {
107   StyleBar_u32_Tag tag;
108   union {
109     StyleBar1_Body_u32 bar1;
110     StyleBar2_Body_u32 bar2;
111     StyleBar3_Body_u32 bar3;
112   };
113 } StyleBar_u32;
114 
115 enum StyleBaz_Tag {
116   Baz1,
117   Baz2,
118   Baz3,
119 };
120 typedef uint8_t StyleBaz_Tag;
121 
122 typedef struct {
123   StyleBaz_Tag tag;
124   StyleBar_u32 _0;
125 } StyleBaz1_Body;
126 
127 typedef struct {
128   StyleBaz_Tag tag;
129   StylePoint_i32 _0;
130 } StyleBaz2_Body;
131 
132 typedef union {
133   StyleBaz_Tag tag;
134   StyleBaz1_Body baz1;
135   StyleBaz2_Body baz2;
136 } StyleBaz;
137 
138 enum StyleTaz_Tag {
139   Taz1,
140   Taz2,
141   Taz3,
142 };
143 typedef uint8_t StyleTaz_Tag;
144 
145 typedef struct {
146   StyleBar_u32 _0;
147 } StyleTaz1_Body;
148 
149 typedef struct {
150   StyleBaz _0;
151 } StyleTaz2_Body;
152 
153 typedef struct {
154   StyleTaz_Tag tag;
155   union {
156     StyleTaz1_Body taz1;
157     StyleTaz2_Body taz2;
158   };
159 } StyleTaz;
160 
161 void foo(const StyleFoo_i32 *foo,
162          const StyleBar_i32 *bar,
163          const StyleBaz *baz,
164          const StyleTaz *taz);
165