#include #include #include #include typedef struct A { int32_t namespace_; float float_; } A; typedef struct B { int32_t namespace_; float float_; } B; enum C_Tag #ifdef __cplusplus : uint8_t #endif // __cplusplus { D, }; #ifndef __cplusplus typedef uint8_t C_Tag; #endif // __cplusplus typedef struct D_Body { int32_t namespace_; float float_; } D_Body; typedef struct C { C_Tag tag; union { D_Body d; }; } C; enum E_Tag #ifdef __cplusplus : uint8_t #endif // __cplusplus { Double, Float, }; #ifndef __cplusplus typedef uint8_t E_Tag; #endif // __cplusplus typedef struct E { E_Tag tag; union { struct { double double_; }; struct { float float_; }; }; } E; enum F_Tag #ifdef __cplusplus : uint8_t #endif // __cplusplus { double_, float_, }; #ifndef __cplusplus typedef uint8_t F_Tag; #endif // __cplusplus typedef struct F { F_Tag tag; union { struct { double double_; }; struct { float float_; }; }; } F; #ifdef __cplusplus extern "C" { #endif // __cplusplus void root(struct A a, struct B b, struct C c, struct E e, struct F f, int32_t namespace_, float float_); #ifdef __cplusplus } // extern "C" #endif // __cplusplus