1 #include <stdarg.h> 2 #include <stdbool.h> 3 #include <stdint.h> 4 #include <stdlib.h> 5 6 struct A { 7 int32_t namespace_; 8 float float_; 9 }; 10 11 struct B { 12 int32_t namespace_; 13 float float_; 14 }; 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 struct D_Body { 28 int32_t namespace_; 29 float float_; 30 }; 31 32 struct C { 33 C_Tag tag; 34 union { 35 struct D_Body d; 36 }; 37 }; 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 struct Double_Body { 52 double _0; 53 }; 54 55 struct Float_Body { 56 float _0; 57 }; 58 59 struct E { 60 E_Tag tag; 61 union { 62 struct Double_Body double_; 63 struct Float_Body float_; 64 }; 65 }; 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 struct double_Body { 80 double _0; 81 }; 82 83 struct float_Body { 84 float _0; 85 }; 86 87 struct F { 88 F_Tag tag; 89 union { 90 struct double_Body double_; 91 struct float_Body float_; 92 }; 93 }; 94 95 #ifdef __cplusplus 96 extern "C" { 97 #endif // __cplusplus 98 99 void root(struct A a, 100 struct B b, 101 struct C c, 102 struct E e, 103 struct F f, 104 int32_t namespace_, 105 float float_); 106 107 #ifdef __cplusplus 108 } // extern "C" 109 #endif // __cplusplus 110