1 /**
2  * Autogenerated by Thrift for src/module.thrift
3  *
4  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5  *  @generated @nocommit
6  */
7 #include <thrift/lib/cpp2/gen/module_metadata_cpp.h>
8 #include "thrift/compiler/test/fixtures/complex-struct/gen-cpp2/module_metadata.h"
9 
10 namespace apache {
11 namespace thrift {
12 namespace detail {
13 namespace md {
14 using ThriftMetadata = ::apache::thrift::metadata::ThriftMetadata;
15 using ThriftPrimitiveType = ::apache::thrift::metadata::ThriftPrimitiveType;
16 using ThriftType = ::apache::thrift::metadata::ThriftType;
17 using ThriftService = ::apache::thrift::metadata::ThriftService;
18 using ThriftServiceContext = ::apache::thrift::metadata::ThriftServiceContext;
19 using ThriftFunctionGenerator = void (*)(ThriftMetadata&, ThriftService&);
20 
gen(ThriftMetadata & metadata)21 void EnumMetadata<::cpp2::MyEnum>::gen(ThriftMetadata& metadata) {
22   auto res = metadata.enums_ref()->emplace("module.MyEnum", ::apache::thrift::metadata::ThriftEnum{});
23   if (!res.second) {
24     return;
25   }
26   ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second;
27   enum_metadata.name_ref() = "module.MyEnum";
28   using EnumTraits = TEnumTraits<::cpp2::MyEnum>;
29   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
30     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
31   }
32 }
33 
34 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)35 StructMetadata<::cpp2::MyStructFloatFieldThrowExp>::gen(ThriftMetadata& metadata) {
36   auto res = metadata.structs_ref()->emplace("module.MyStructFloatFieldThrowExp", ::apache::thrift::metadata::ThriftStruct{});
37   if (!res.second) {
38     return res.first->second;
39   }
40   ::apache::thrift::metadata::ThriftStruct& module_MyStructFloatFieldThrowExp = res.first->second;
41   module_MyStructFloatFieldThrowExp.name_ref() = "module.MyStructFloatFieldThrowExp";
42   module_MyStructFloatFieldThrowExp.is_union_ref() = false;
43   static const EncodedThriftField
44   module_MyStructFloatFieldThrowExp_fields[] = {
45     {1, "myLongField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
46     {2, "MyByteField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector<ThriftConstStruct>{}},
47     {3, "myStringField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
48     {4, "myFloatField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE), std::vector<ThriftConstStruct>{}},
49   };
50   for (const auto& f : module_MyStructFloatFieldThrowExp_fields) {
51     ::apache::thrift::metadata::ThriftField field;
52     field.id_ref() = f.id;
53     field.name_ref() = f.name;
54     field.is_optional_ref() = f.is_optional;
55     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
56     field.structured_annotations_ref() = f.structured_annotations;
57     module_MyStructFloatFieldThrowExp.fields_ref()->push_back(std::move(field));
58   }
59   return res.first->second;
60 }
61 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)62 StructMetadata<::cpp2::MyStructMapFloatThrowExp>::gen(ThriftMetadata& metadata) {
63   auto res = metadata.structs_ref()->emplace("module.MyStructMapFloatThrowExp", ::apache::thrift::metadata::ThriftStruct{});
64   if (!res.second) {
65     return res.first->second;
66   }
67   ::apache::thrift::metadata::ThriftStruct& module_MyStructMapFloatThrowExp = res.first->second;
68   module_MyStructMapFloatThrowExp.name_ref() = "module.MyStructMapFloatThrowExp";
69   module_MyStructMapFloatThrowExp.is_union_ref() = false;
70   static const EncodedThriftField
71   module_MyStructMapFloatThrowExp_fields[] = {
72     {1, "myLongField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
73     {2, "mapListOfFloats", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<List>(std::make_unique<Typedef>("module.floatTypedef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE), std::vector<ThriftConstStruct>{})))), std::vector<ThriftConstStruct>{}},
74   };
75   for (const auto& f : module_MyStructMapFloatThrowExp_fields) {
76     ::apache::thrift::metadata::ThriftField field;
77     field.id_ref() = f.id;
78     field.name_ref() = f.name;
79     field.is_optional_ref() = f.is_optional;
80     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
81     field.structured_annotations_ref() = f.structured_annotations;
82     module_MyStructMapFloatThrowExp.fields_ref()->push_back(std::move(field));
83   }
84   return res.first->second;
85 }
86 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)87 StructMetadata<::cpp2::MyDataItem>::gen(ThriftMetadata& metadata) {
88   auto res = metadata.structs_ref()->emplace("module.MyDataItem", ::apache::thrift::metadata::ThriftStruct{});
89   if (!res.second) {
90     return res.first->second;
91   }
92   ::apache::thrift::metadata::ThriftStruct& module_MyDataItem = res.first->second;
93   module_MyDataItem.name_ref() = "module.MyDataItem";
94   module_MyDataItem.is_union_ref() = false;
95   return res.first->second;
96 }
97 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)98 StructMetadata<::cpp2::MyStruct>::gen(ThriftMetadata& metadata) {
99   auto res = metadata.structs_ref()->emplace("module.MyStruct", ::apache::thrift::metadata::ThriftStruct{});
100   if (!res.second) {
101     return res.first->second;
102   }
103   ::apache::thrift::metadata::ThriftStruct& module_MyStruct = res.first->second;
104   module_MyStruct.name_ref() = "module.MyStruct";
105   module_MyStruct.is_union_ref() = false;
106   static const EncodedThriftField
107   module_MyStruct_fields[] = {
108     {1, "MyIntField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
109     {2, "MyStringField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
110     {3, "MyDataField", false, std::make_unique<Typedef>("module.MyDataItem", std::make_unique<Struct< ::cpp2::MyDataItem>>("module.MyDataItem"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
111     {4, "myEnum", false, std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"), std::vector<ThriftConstStruct>{}},
112     {5, "MyBoolField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
113     {6, "MyByteField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector<ThriftConstStruct>{}},
114     {7, "MyShortField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::vector<ThriftConstStruct>{}},
115     {8, "MyLongField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
116     {9, "MyDoubleField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
117     {10, "lDouble", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE)), std::vector<ThriftConstStruct>{}},
118     {11, "lShort", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE)), std::vector<ThriftConstStruct>{}},
119     {12, "lInteger", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
120     {13, "lLong", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
121     {14, "lString", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
122     {15, "lBool", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
123     {16, "lByte", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE)), std::vector<ThriftConstStruct>{}},
124     {17, "mShortString", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
125     {18, "mIntegerString", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
126     {19, "mStringMyStruct", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Typedef>("module.MyStruct", std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
127     {20, "mStringBool", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
128     {21, "mIntegerInteger", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
129     {22, "mIntegerBool", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
130     {23, "sShort", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE)), std::vector<ThriftConstStruct>{}},
131     {24, "sMyStruct", false, std::make_unique<Set>(std::make_unique<Typedef>("module.MyStruct", std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
132     {25, "sLong", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
133     {26, "sString", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
134     {27, "sByte", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE)), std::vector<ThriftConstStruct>{}},
135     {28, "mListList", false, std::make_unique<Map>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
136   };
137   for (const auto& f : module_MyStruct_fields) {
138     ::apache::thrift::metadata::ThriftField field;
139     field.id_ref() = f.id;
140     field.name_ref() = f.name;
141     field.is_optional_ref() = f.is_optional;
142     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
143     field.structured_annotations_ref() = f.structured_annotations;
144     module_MyStruct.fields_ref()->push_back(std::move(field));
145   }
146   return res.first->second;
147 }
148 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)149 StructMetadata<::cpp2::SimpleStruct>::gen(ThriftMetadata& metadata) {
150   auto res = metadata.structs_ref()->emplace("module.SimpleStruct", ::apache::thrift::metadata::ThriftStruct{});
151   if (!res.second) {
152     return res.first->second;
153   }
154   ::apache::thrift::metadata::ThriftStruct& module_SimpleStruct = res.first->second;
155   module_SimpleStruct.name_ref() = "module.SimpleStruct";
156   module_SimpleStruct.is_union_ref() = false;
157   static const EncodedThriftField
158   module_SimpleStruct_fields[] = {
159     {1, "age", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
160     {2, "name", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
161   };
162   for (const auto& f : module_SimpleStruct_fields) {
163     ::apache::thrift::metadata::ThriftField field;
164     field.id_ref() = f.id;
165     field.name_ref() = f.name;
166     field.is_optional_ref() = f.is_optional;
167     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
168     field.structured_annotations_ref() = f.structured_annotations;
169     module_SimpleStruct.fields_ref()->push_back(std::move(field));
170   }
171   return res.first->second;
172 }
173 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)174 StructMetadata<::cpp2::ComplexNestedStruct>::gen(ThriftMetadata& metadata) {
175   auto res = metadata.structs_ref()->emplace("module.ComplexNestedStruct", ::apache::thrift::metadata::ThriftStruct{});
176   if (!res.second) {
177     return res.first->second;
178   }
179   ::apache::thrift::metadata::ThriftStruct& module_ComplexNestedStruct = res.first->second;
180   module_ComplexNestedStruct.name_ref() = "module.ComplexNestedStruct";
181   module_ComplexNestedStruct.is_union_ref() = false;
182   static const EncodedThriftField
183   module_ComplexNestedStruct_fields[] = {
184     {1, "setOfSetOfInt", false, std::make_unique<Set>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
185     {2, "listofListOfListOfListOfEnum", false, std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"))))), std::vector<ThriftConstStruct>{}},
186     {3, "listOfListOfMyStruct", false, std::make_unique<List>(std::make_unique<List>(std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{}},
187     {4, "setOfListOfListOfLong", false, std::make_unique<Set>(std::make_unique<List>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)))), std::vector<ThriftConstStruct>{}},
188     {5, "setOfSetOfsetOfLong", false, std::make_unique<Set>(std::make_unique<Set>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)))), std::vector<ThriftConstStruct>{}},
189     {6, "mapStructListOfListOfLong", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<List>(std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct")))), std::vector<ThriftConstStruct>{}},
190     {7, "mKeyStructValInt", false, std::make_unique<Map>(std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
191     {8, "listOfMapKeyIntValInt", false, std::make_unique<List>(std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
192     {9, "listOfMapKeyStrValList", false, std::make_unique<List>(std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<List>(std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct")))), std::vector<ThriftConstStruct>{}},
193     {10, "mapKeySetValLong", false, std::make_unique<Map>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
194     {11, "mapKeyListValLong", false, std::make_unique<Map>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
195     {12, "mapKeyMapValMap", false, std::make_unique<Map>(std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::vector<ThriftConstStruct>{}},
196     {13, "mapKeySetValMap", false, std::make_unique<Map>(std::make_unique<Set>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::make_unique<Map>(std::make_unique<List>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::vector<ThriftConstStruct>{}},
197     {14, "NestedMaps", false, std::make_unique<Map>(std::make_unique<Map>(std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::vector<ThriftConstStruct>{}},
198     {15, "mapKeyIntValList", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{}},
199     {16, "mapKeyIntValSet", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE))), std::vector<ThriftConstStruct>{}},
200     {17, "mapKeySetValInt", false, std::make_unique<Map>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum")), std::vector<ThriftConstStruct>{}},
201     {18, "mapKeyListValSet", false, std::make_unique<Map>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::make_unique<Set>(std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)))), std::vector<ThriftConstStruct>{}},
202   };
203   for (const auto& f : module_ComplexNestedStruct_fields) {
204     ::apache::thrift::metadata::ThriftField field;
205     field.id_ref() = f.id;
206     field.name_ref() = f.name;
207     field.is_optional_ref() = f.is_optional;
208     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
209     field.structured_annotations_ref() = f.structured_annotations;
210     module_ComplexNestedStruct.fields_ref()->push_back(std::move(field));
211   }
212   return res.first->second;
213 }
214 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)215 StructMetadata<::cpp2::MyUnion>::gen(ThriftMetadata& metadata) {
216   auto res = metadata.structs_ref()->emplace("module.MyUnion", ::apache::thrift::metadata::ThriftStruct{});
217   if (!res.second) {
218     return res.first->second;
219   }
220   ::apache::thrift::metadata::ThriftStruct& module_MyUnion = res.first->second;
221   module_MyUnion.name_ref() = "module.MyUnion";
222   module_MyUnion.is_union_ref() = true;
223   static const EncodedThriftField
224   module_MyUnion_fields[] = {
225     {1, "myEnum", false, std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"), std::vector<ThriftConstStruct>{}},
226     {2, "myStruct", false, std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
227     {3, "myDataItem", false, std::make_unique<Struct< ::cpp2::MyDataItem>>("module.MyDataItem"), std::vector<ThriftConstStruct>{}},
228     {4, "complexNestedStruct", false, std::make_unique<Typedef>("module.ComplexNestedStruct", std::make_unique<Struct< ::cpp2::ComplexNestedStruct>>("module.ComplexNestedStruct"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
229     {5, "longValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
230     {6, "intValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
231   };
232   for (const auto& f : module_MyUnion_fields) {
233     ::apache::thrift::metadata::ThriftField field;
234     field.id_ref() = f.id;
235     field.name_ref() = f.name;
236     field.is_optional_ref() = f.is_optional;
237     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
238     field.structured_annotations_ref() = f.structured_annotations;
239     module_MyUnion.fields_ref()->push_back(std::move(field));
240   }
241   return res.first->second;
242 }
243 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)244 StructMetadata<::cpp2::defaultStruct>::gen(ThriftMetadata& metadata) {
245   auto res = metadata.structs_ref()->emplace("module.defaultStruct", ::apache::thrift::metadata::ThriftStruct{});
246   if (!res.second) {
247     return res.first->second;
248   }
249   ::apache::thrift::metadata::ThriftStruct& module_defaultStruct = res.first->second;
250   module_defaultStruct.name_ref() = "module.defaultStruct";
251   module_defaultStruct.is_union_ref() = false;
252   static const EncodedThriftField
253   module_defaultStruct_fields[] = {
254     {1, "myLongDFset", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
255     {2, "myLongDF", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
256     {3, "portDFset", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
257     {4, "portNum", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
258     {5, "myBinaryDFset", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
259     {6, "myBinary", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
260     {7, "myByteDFSet", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector<ThriftConstStruct>{}},
261     {8, "myByte", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector<ThriftConstStruct>{}},
262     {9, "myDoubleDFset", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
263     {10, "myDoubleDFZero", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
264     {12, "myDouble", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
265     {13, "field3", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
266     {14, "myList", false, std::make_unique<List>(std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum")), std::vector<ThriftConstStruct>{}},
267     {15, "mySet", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
268     {16, "simpleStruct", false, std::make_unique<Struct< ::cpp2::SimpleStruct>>("module.SimpleStruct"), std::vector<ThriftConstStruct>{}},
269     {17, "listStructDFset", false, std::make_unique<List>(std::make_unique<Struct< ::cpp2::SimpleStruct>>("module.SimpleStruct")), std::vector<ThriftConstStruct>{}},
270     {18, "myUnion", false, std::make_unique<Typedef>("module.MyUnion", std::make_unique<Union< ::cpp2::MyUnion>>("module.MyUnion"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
271     {19, "listUnionDFset", false, std::make_unique<List>(std::make_unique<Typedef>("module.MyUnion", std::make_unique<Union< ::cpp2::MyUnion>>("module.MyUnion"), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
272     {20, "mapNestlistStructDfSet", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<Struct< ::cpp2::SimpleStruct>>("module.SimpleStruct"))), std::vector<ThriftConstStruct>{}},
273     {21, "mapJavaTypeDFset", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
274     {22, "emptyMap", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
275     {23, "enumMapDFset", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"))), std::vector<ThriftConstStruct>{}},
276   };
277   for (const auto& f : module_defaultStruct_fields) {
278     ::apache::thrift::metadata::ThriftField field;
279     field.id_ref() = f.id;
280     field.name_ref() = f.name;
281     field.is_optional_ref() = f.is_optional;
282     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
283     field.structured_annotations_ref() = f.structured_annotations;
284     module_defaultStruct.fields_ref()->push_back(std::move(field));
285   }
286   return res.first->second;
287 }
288 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)289 StructMetadata<::cpp2::MyStructTypeDef>::gen(ThriftMetadata& metadata) {
290   auto res = metadata.structs_ref()->emplace("module.MyStructTypeDef", ::apache::thrift::metadata::ThriftStruct{});
291   if (!res.second) {
292     return res.first->second;
293   }
294   ::apache::thrift::metadata::ThriftStruct& module_MyStructTypeDef = res.first->second;
295   module_MyStructTypeDef.name_ref() = "module.MyStructTypeDef";
296   module_MyStructTypeDef.is_union_ref() = false;
297   static const EncodedThriftField
298   module_MyStructTypeDef_fields[] = {
299     {1, "myLongField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
300     {2, "myLongTypeDef", false, std::make_unique<Typedef>("module.longTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
301     {3, "myStringField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
302     {4, "myStringTypedef", false, std::make_unique<Typedef>("module.stringTypedef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
303     {5, "myMapField", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
304     {6, "myMapTypedef", false, std::make_unique<Typedef>("module.mapTypedef", std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
305     {7, "myListField", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE)), std::vector<ThriftConstStruct>{}},
306     {8, "myListTypedef", false, std::make_unique<Typedef>("module.listTypedef", std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
307     {9, "myMapListOfTypeDef", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::make_unique<List>(std::make_unique<Typedef>("module.listTypedef", std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE)), std::vector<ThriftConstStruct>{}))), std::vector<ThriftConstStruct>{}},
308   };
309   for (const auto& f : module_MyStructTypeDef_fields) {
310     ::apache::thrift::metadata::ThriftField field;
311     field.id_ref() = f.id;
312     field.name_ref() = f.name;
313     field.is_optional_ref() = f.is_optional;
314     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
315     field.structured_annotations_ref() = f.structured_annotations;
316     module_MyStructTypeDef.fields_ref()->push_back(std::move(field));
317   }
318   return res.first->second;
319 }
320 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)321 StructMetadata<::cpp2::MyUnionFloatFieldThrowExp>::gen(ThriftMetadata& metadata) {
322   auto res = metadata.structs_ref()->emplace("module.MyUnionFloatFieldThrowExp", ::apache::thrift::metadata::ThriftStruct{});
323   if (!res.second) {
324     return res.first->second;
325   }
326   ::apache::thrift::metadata::ThriftStruct& module_MyUnionFloatFieldThrowExp = res.first->second;
327   module_MyUnionFloatFieldThrowExp.name_ref() = "module.MyUnionFloatFieldThrowExp";
328   module_MyUnionFloatFieldThrowExp.is_union_ref() = true;
329   static const EncodedThriftField
330   module_MyUnionFloatFieldThrowExp_fields[] = {
331     {1, "myEnum", false, std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"), std::vector<ThriftConstStruct>{}},
332     {2, "setFloat", false, std::make_unique<List>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE))), std::vector<ThriftConstStruct>{}},
333     {3, "myDataItem", false, std::make_unique<Struct< ::cpp2::MyDataItem>>("module.MyDataItem"), std::vector<ThriftConstStruct>{}},
334     {4, "complexNestedStruct", false, std::make_unique<Typedef>("module.ComplexNestedStruct", std::make_unique<Struct< ::cpp2::ComplexNestedStruct>>("module.ComplexNestedStruct"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
335   };
336   for (const auto& f : module_MyUnionFloatFieldThrowExp_fields) {
337     ::apache::thrift::metadata::ThriftField field;
338     field.id_ref() = f.id;
339     field.name_ref() = f.name;
340     field.is_optional_ref() = f.is_optional;
341     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
342     field.structured_annotations_ref() = f.structured_annotations;
343     module_MyUnionFloatFieldThrowExp.fields_ref()->push_back(std::move(field));
344   }
345   return res.first->second;
346 }
347 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)348 StructMetadata<::cpp2::TypeRemapped>::gen(ThriftMetadata& metadata) {
349   auto res = metadata.structs_ref()->emplace("module.TypeRemapped", ::apache::thrift::metadata::ThriftStruct{});
350   if (!res.second) {
351     return res.first->second;
352   }
353   ::apache::thrift::metadata::ThriftStruct& module_TypeRemapped = res.first->second;
354   module_TypeRemapped.name_ref() = "module.TypeRemapped";
355   module_TypeRemapped.is_union_ref() = false;
356   static const EncodedThriftField
357   module_TypeRemapped_fields[] = {
358     {1, "lsMap", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
359     {2, "ioMap", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Typedef>("module.FMap", std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
360     {3, "BigInteger", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
361     {4, "binaryTestBuffer", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
362   };
363   for (const auto& f : module_TypeRemapped_fields) {
364     ::apache::thrift::metadata::ThriftField field;
365     field.id_ref() = f.id;
366     field.name_ref() = f.name;
367     field.is_optional_ref() = f.is_optional;
368     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
369     field.structured_annotations_ref() = f.structured_annotations;
370     module_TypeRemapped.fields_ref()->push_back(std::move(field));
371   }
372   return res.first->second;
373 }
374 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)375 StructMetadata<::cpp2::emptyXcep>::gen(ThriftMetadata& metadata) {
376   auto res = metadata.structs_ref()->emplace("module.emptyXcep", ::apache::thrift::metadata::ThriftStruct{});
377   if (!res.second) {
378     return res.first->second;
379   }
380   ::apache::thrift::metadata::ThriftStruct& module_emptyXcep = res.first->second;
381   module_emptyXcep.name_ref() = "module.emptyXcep";
382   module_emptyXcep.is_union_ref() = false;
383   return res.first->second;
384 }
385 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)386 StructMetadata<::cpp2::reqXcep>::gen(ThriftMetadata& metadata) {
387   auto res = metadata.structs_ref()->emplace("module.reqXcep", ::apache::thrift::metadata::ThriftStruct{});
388   if (!res.second) {
389     return res.first->second;
390   }
391   ::apache::thrift::metadata::ThriftStruct& module_reqXcep = res.first->second;
392   module_reqXcep.name_ref() = "module.reqXcep";
393   module_reqXcep.is_union_ref() = false;
394   static const EncodedThriftField
395   module_reqXcep_fields[] = {
396     {1, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
397     {2, "errorCode", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
398   };
399   for (const auto& f : module_reqXcep_fields) {
400     ::apache::thrift::metadata::ThriftField field;
401     field.id_ref() = f.id;
402     field.name_ref() = f.name;
403     field.is_optional_ref() = f.is_optional;
404     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
405     field.structured_annotations_ref() = f.structured_annotations;
406     module_reqXcep.fields_ref()->push_back(std::move(field));
407   }
408   return res.first->second;
409 }
410 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)411 StructMetadata<::cpp2::optXcep>::gen(ThriftMetadata& metadata) {
412   auto res = metadata.structs_ref()->emplace("module.optXcep", ::apache::thrift::metadata::ThriftStruct{});
413   if (!res.second) {
414     return res.first->second;
415   }
416   ::apache::thrift::metadata::ThriftStruct& module_optXcep = res.first->second;
417   module_optXcep.name_ref() = "module.optXcep";
418   module_optXcep.is_union_ref() = false;
419   static const EncodedThriftField
420   module_optXcep_fields[] = {
421     {1, "message", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
422     {2, "errorCode", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
423   };
424   for (const auto& f : module_optXcep_fields) {
425     ::apache::thrift::metadata::ThriftField field;
426     field.id_ref() = f.id;
427     field.name_ref() = f.name;
428     field.is_optional_ref() = f.is_optional;
429     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
430     field.structured_annotations_ref() = f.structured_annotations;
431     module_optXcep.fields_ref()->push_back(std::move(field));
432   }
433   return res.first->second;
434 }
435 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)436 StructMetadata<::cpp2::complexException>::gen(ThriftMetadata& metadata) {
437   auto res = metadata.structs_ref()->emplace("module.complexException", ::apache::thrift::metadata::ThriftStruct{});
438   if (!res.second) {
439     return res.first->second;
440   }
441   ::apache::thrift::metadata::ThriftStruct& module_complexException = res.first->second;
442   module_complexException.name_ref() = "module.complexException";
443   module_complexException.is_union_ref() = false;
444   static const EncodedThriftField
445   module_complexException_fields[] = {
446     {1, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
447     {2, "listStrings", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
448     {3, "errorEnum", false, std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"), std::vector<ThriftConstStruct>{}},
449     {4, "unionError", true, std::make_unique<Union< ::cpp2::MyUnion>>("module.MyUnion"), std::vector<ThriftConstStruct>{}},
450     {5, "structError", false, std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
451     {6, "lsMap", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
452   };
453   for (const auto& f : module_complexException_fields) {
454     ::apache::thrift::metadata::ThriftField field;
455     field.id_ref() = f.id;
456     field.name_ref() = f.name;
457     field.is_optional_ref() = f.is_optional;
458     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
459     field.structured_annotations_ref() = f.structured_annotations;
460     module_complexException.fields_ref()->push_back(std::move(field));
461   }
462   return res.first->second;
463 }
464 
gen(ThriftMetadata & metadata)465 void ExceptionMetadata<::cpp2::emptyXcep>::gen(ThriftMetadata& metadata) {
466   auto res = metadata.exceptions_ref()->emplace("module.emptyXcep", ::apache::thrift::metadata::ThriftException{});
467   if (!res.second) {
468     return;
469   }
470   ::apache::thrift::metadata::ThriftException& module_emptyXcep = res.first->second;
471   module_emptyXcep.name_ref() = "module.emptyXcep";
472 }
gen(ThriftMetadata & metadata)473 void ExceptionMetadata<::cpp2::reqXcep>::gen(ThriftMetadata& metadata) {
474   auto res = metadata.exceptions_ref()->emplace("module.reqXcep", ::apache::thrift::metadata::ThriftException{});
475   if (!res.second) {
476     return;
477   }
478   ::apache::thrift::metadata::ThriftException& module_reqXcep = res.first->second;
479   module_reqXcep.name_ref() = "module.reqXcep";
480   static const EncodedThriftField
481   module_reqXcep_fields[] = {
482     {1, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
483     {2, "errorCode", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
484   };
485   for (const auto& f : module_reqXcep_fields) {
486     ::apache::thrift::metadata::ThriftField field;
487     field.id_ref() = f.id;
488     field.name_ref() = f.name;
489     field.is_optional_ref() = f.is_optional;
490     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
491     module_reqXcep.fields_ref()->push_back(std::move(field));
492   }
493 }
gen(ThriftMetadata & metadata)494 void ExceptionMetadata<::cpp2::optXcep>::gen(ThriftMetadata& metadata) {
495   auto res = metadata.exceptions_ref()->emplace("module.optXcep", ::apache::thrift::metadata::ThriftException{});
496   if (!res.second) {
497     return;
498   }
499   ::apache::thrift::metadata::ThriftException& module_optXcep = res.first->second;
500   module_optXcep.name_ref() = "module.optXcep";
501   static const EncodedThriftField
502   module_optXcep_fields[] = {
503     {1, "message", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
504     {2, "errorCode", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
505   };
506   for (const auto& f : module_optXcep_fields) {
507     ::apache::thrift::metadata::ThriftField field;
508     field.id_ref() = f.id;
509     field.name_ref() = f.name;
510     field.is_optional_ref() = f.is_optional;
511     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
512     module_optXcep.fields_ref()->push_back(std::move(field));
513   }
514 }
gen(ThriftMetadata & metadata)515 void ExceptionMetadata<::cpp2::complexException>::gen(ThriftMetadata& metadata) {
516   auto res = metadata.exceptions_ref()->emplace("module.complexException", ::apache::thrift::metadata::ThriftException{});
517   if (!res.second) {
518     return;
519   }
520   ::apache::thrift::metadata::ThriftException& module_complexException = res.first->second;
521   module_complexException.name_ref() = "module.complexException";
522   static const EncodedThriftField
523   module_complexException_fields[] = {
524     {1, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
525     {2, "listStrings", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
526     {3, "errorEnum", false, std::make_unique<Enum< ::cpp2::MyEnum>>("module.MyEnum"), std::vector<ThriftConstStruct>{}},
527     {4, "unionError", true, std::make_unique<Union< ::cpp2::MyUnion>>("module.MyUnion"), std::vector<ThriftConstStruct>{}},
528     {5, "structError", false, std::make_unique<Struct< ::cpp2::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
529     {6, "lsMap", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
530   };
531   for (const auto& f : module_complexException_fields) {
532     ::apache::thrift::metadata::ThriftField field;
533     field.id_ref() = f.id;
534     field.name_ref() = f.name;
535     field.is_optional_ref() = f.is_optional;
536     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
537     module_complexException.fields_ref()->push_back(std::move(field));
538   }
539 }
540 } // namespace md
541 } // namespace detail
542 } // namespace thrift
543 } // namespace apache
544