| #include <stdarg.h> |
| #include <stdbool.h> |
| #include <stdint.h> |
| #include <stdlib.h> |
| |
| typedef struct { |
| int32_t x; |
| int32_t y; |
| } StylePoint_i32; |
| |
| typedef struct { |
| float x; |
| float y; |
| } StylePoint_f32; |
| |
| enum StyleFoo_i32_Tag { |
| Foo_i32, |
| Bar_i32, |
| Baz_i32, |
| Bazz_i32, |
| }; |
| typedef uint8_t StyleFoo_i32_Tag; |
| |
| typedef struct { |
| StyleFoo_i32_Tag tag; |
| int32_t x; |
| StylePoint_i32 y; |
| StylePoint_f32 z; |
| } StyleFoo_Body_i32; |
| |
| typedef union { |
| StyleFoo_i32_Tag tag; |
| StyleFoo_Body_i32 foo; |
| struct { |
| StyleFoo_i32_Tag bar_tag; |
| int32_t bar; |
| }; |
| struct { |
| StyleFoo_i32_Tag baz_tag; |
| StylePoint_i32 baz; |
| }; |
| } StyleFoo_i32; |
| |
| typedef enum { |
| Bar1_i32, |
| Bar2_i32, |
| Bar3_i32, |
| Bar4_i32, |
| } StyleBar_i32_Tag; |
| |
| typedef struct { |
| int32_t x; |
| StylePoint_i32 y; |
| StylePoint_f32 z; |
| int32_t (*u)(int32_t); |
| } StyleBar1_Body_i32; |
| |
| typedef struct { |
| StyleBar_i32_Tag tag; |
| union { |
| StyleBar1_Body_i32 bar1; |
| struct { |
| int32_t bar2; |
| }; |
| struct { |
| StylePoint_i32 bar3; |
| }; |
| }; |
| } StyleBar_i32; |
| |
| typedef struct { |
| uint32_t x; |
| uint32_t y; |
| } StylePoint_u32; |
| |
| typedef enum { |
| Bar1_u32, |
| Bar2_u32, |
| Bar3_u32, |
| Bar4_u32, |
| } StyleBar_u32_Tag; |
| |
| typedef struct { |
| int32_t x; |
| StylePoint_u32 y; |
| StylePoint_f32 z; |
| int32_t (*u)(int32_t); |
| } StyleBar1_Body_u32; |
| |
| typedef struct { |
| StyleBar_u32_Tag tag; |
| union { |
| StyleBar1_Body_u32 bar1; |
| struct { |
| uint32_t bar2; |
| }; |
| struct { |
| StylePoint_u32 bar3; |
| }; |
| }; |
| } StyleBar_u32; |
| |
| enum StyleBaz_Tag { |
| Baz1, |
| Baz2, |
| Baz3, |
| }; |
| typedef uint8_t StyleBaz_Tag; |
| |
| typedef union { |
| StyleBaz_Tag tag; |
| struct { |
| StyleBaz_Tag baz1_tag; |
| StyleBar_u32 baz1; |
| }; |
| struct { |
| StyleBaz_Tag baz2_tag; |
| StylePoint_i32 baz2; |
| }; |
| } StyleBaz; |
| |
| enum StyleTaz_Tag { |
| Taz1, |
| Taz2, |
| Taz3, |
| }; |
| typedef uint8_t StyleTaz_Tag; |
| |
| typedef struct { |
| StyleTaz_Tag tag; |
| union { |
| struct { |
| StyleBar_u32 taz1; |
| }; |
| struct { |
| StyleBaz taz2; |
| }; |
| }; |
| } StyleTaz; |
| |
| void foo(const StyleFoo_i32 *foo, |
| const StyleBar_i32 *bar, |
| const StyleBaz *baz, |
| const StyleTaz *taz); |