#include #include #include #include struct Foo { bool a; int32_t b; }; enum Bar_Tag #ifdef __cplusplus : uint8_t #endif // __cplusplus { Baz, Bazz, FooNamed, FooParen, }; #ifndef __cplusplus typedef uint8_t Bar_Tag; #endif // __cplusplus struct Bazz_Body { Bar_Tag tag; struct Foo named; }; struct FooNamed_Body { Bar_Tag tag; int32_t different; uint32_t fields; }; struct FooParen_Body { Bar_Tag tag; int32_t _0; struct Foo _1; }; union Bar { Bar_Tag tag; struct Bazz_Body bazz; struct FooNamed_Body foo_named; struct FooParen_Body foo_paren; }; #ifdef __cplusplus extern "C" { #endif // __cplusplus struct Foo root(union Bar aBar); #ifdef __cplusplus } // extern "C" #endif // __cplusplus