1 #include <stdarg.h> 2 #include <stdbool.h> 3 #include <stdint.h> 4 #include <stdlib.h> 5 6 typedef struct A { 7 int32_t namespace_; 8 float float_; 9 } A; 10 11 typedef struct B { 12 int32_t namespace_; 13 float float_; 14 } B; 15 16 enum C_Tag 17 #ifdef __cplusplus 18 : uint8_t 19 #endif // __cplusplus 20 { 21 D, 22 }; 23 #ifndef __cplusplus 24 typedef uint8_t C_Tag; 25 #endif // __cplusplus 26 27 typedef struct D_Body { 28 int32_t namespace_; 29 float float_; 30 } D_Body; 31 32 typedef struct C { 33 C_Tag tag; 34 union { 35 D_Body d; 36 }; 37 } C; 38 39 enum E_Tag 40 #ifdef __cplusplus 41 : uint8_t 42 #endif // __cplusplus 43 { 44 Double, 45 Float, 46 }; 47 #ifndef __cplusplus 48 typedef uint8_t E_Tag; 49 #endif // __cplusplus 50 51 typedef struct Double_Body { 52 double _0; 53 } Double_Body; 54 55 typedef struct Float_Body { 56 float _0; 57 } Float_Body; 58 59 typedef struct E { 60 E_Tag tag; 61 union { 62 Double_Body double_; 63 Float_Body float_; 64 }; 65 } E; 66 67 enum F_Tag 68 #ifdef __cplusplus 69 : uint8_t 70 #endif // __cplusplus 71 { 72 double_, 73 float_, 74 }; 75 #ifndef __cplusplus 76 typedef uint8_t F_Tag; 77 #endif // __cplusplus 78 79 typedef struct double_Body { 80 double _0; 81 } double_Body; 82 83 typedef struct float_Body { 84 float _0; 85 } float_Body; 86 87 typedef struct F { 88 F_Tag tag; 89 union { 90 double_Body double_; 91 float_Body float_; 92 }; 93 } F; 94 95 #ifdef __cplusplus 96 extern "C" { 97 #endif // __cplusplus 98 99 void root(A a, B b, C c, E e, F f, int32_t namespace_, float float_); 100 101 #ifdef __cplusplus 102 } // extern "C" 103 #endif // __cplusplus 104