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