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