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/mcpp2-compare/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<::some::valid::ns::MyEnumA>::gen(ThriftMetadata& metadata) {
22   auto res = metadata.enums_ref()->emplace("module.MyEnumA", ::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.MyEnumA";
28   using EnumTraits = TEnumTraits<::some::valid::ns::MyEnumA>;
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 }
gen(ThriftMetadata & metadata)33 void EnumMetadata<::some::valid::ns::AnnotatedEnum>::gen(ThriftMetadata& metadata) {
34   auto res = metadata.enums_ref()->emplace("module.AnnotatedEnum", ::apache::thrift::metadata::ThriftEnum{});
35   if (!res.second) {
36     return;
37   }
38   ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second;
39   enum_metadata.name_ref() = "module.AnnotatedEnum";
40   using EnumTraits = TEnumTraits<::some::valid::ns::AnnotatedEnum>;
41   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
42     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
43   }
44 }
gen(ThriftMetadata & metadata)45 void EnumMetadata<::some::valid::ns::AnnotatedEnum2>::gen(ThriftMetadata& metadata) {
46   auto res = metadata.enums_ref()->emplace("module.AnnotatedEnum2", ::apache::thrift::metadata::ThriftEnum{});
47   if (!res.second) {
48     return;
49   }
50   ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second;
51   enum_metadata.name_ref() = "module.AnnotatedEnum2";
52   using EnumTraits = TEnumTraits<::some::valid::ns::AnnotatedEnum2>;
53   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
54     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
55   }
56 }
gen(ThriftMetadata & metadata)57 void EnumMetadata<::some::valid::ns::MyEnumB>::gen(ThriftMetadata& metadata) {
58   auto res = metadata.enums_ref()->emplace("module.MyEnumB", ::apache::thrift::metadata::ThriftEnum{});
59   if (!res.second) {
60     return;
61   }
62   ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second;
63   enum_metadata.name_ref() = "module.MyEnumB";
64   using EnumTraits = TEnumTraits<::some::valid::ns::MyEnumB>;
65   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
66     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
67   }
68 }
69 
70 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)71 StructMetadata<::some::valid::ns::Empty>::gen(ThriftMetadata& metadata) {
72   auto res = metadata.structs_ref()->emplace("module.Empty", ::apache::thrift::metadata::ThriftStruct{});
73   if (!res.second) {
74     return res.first->second;
75   }
76   ::apache::thrift::metadata::ThriftStruct& module_Empty = res.first->second;
77   module_Empty.name_ref() = "module.Empty";
78   module_Empty.is_union_ref() = false;
79   return res.first->second;
80 }
81 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)82 StructMetadata<::some::valid::ns::ASimpleStruct>::gen(ThriftMetadata& metadata) {
83   auto res = metadata.structs_ref()->emplace("module.ASimpleStruct", ::apache::thrift::metadata::ThriftStruct{});
84   if (!res.second) {
85     return res.first->second;
86   }
87   ::apache::thrift::metadata::ThriftStruct& module_ASimpleStruct = res.first->second;
88   module_ASimpleStruct.name_ref() = "module.ASimpleStruct";
89   module_ASimpleStruct.is_union_ref() = false;
90   static const EncodedThriftField
91   module_ASimpleStruct_fields[] = {
92     {1, "boolField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
93   };
94   for (const auto& f : module_ASimpleStruct_fields) {
95     ::apache::thrift::metadata::ThriftField field;
96     field.id_ref() = f.id;
97     field.name_ref() = f.name;
98     field.is_optional_ref() = f.is_optional;
99     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
100     field.structured_annotations_ref() = f.structured_annotations;
101     module_ASimpleStruct.fields_ref()->push_back(std::move(field));
102   }
103   return res.first->second;
104 }
105 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)106 StructMetadata<::some::valid::ns::ASimpleStructNoexcept>::gen(ThriftMetadata& metadata) {
107   auto res = metadata.structs_ref()->emplace("module.ASimpleStructNoexcept", ::apache::thrift::metadata::ThriftStruct{});
108   if (!res.second) {
109     return res.first->second;
110   }
111   ::apache::thrift::metadata::ThriftStruct& module_ASimpleStructNoexcept = res.first->second;
112   module_ASimpleStructNoexcept.name_ref() = "module.ASimpleStructNoexcept";
113   module_ASimpleStructNoexcept.is_union_ref() = false;
114   static const EncodedThriftField
115   module_ASimpleStructNoexcept_fields[] = {
116     {1, "boolField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
117   };
118   for (const auto& f : module_ASimpleStructNoexcept_fields) {
119     ::apache::thrift::metadata::ThriftField field;
120     field.id_ref() = f.id;
121     field.name_ref() = f.name;
122     field.is_optional_ref() = f.is_optional;
123     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
124     field.structured_annotations_ref() = f.structured_annotations;
125     module_ASimpleStructNoexcept.fields_ref()->push_back(std::move(field));
126   }
127   return res.first->second;
128 }
129 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)130 StructMetadata<::some::valid::ns::MyStruct>::gen(ThriftMetadata& metadata) {
131   auto res = metadata.structs_ref()->emplace("module.MyStruct", ::apache::thrift::metadata::ThriftStruct{});
132   if (!res.second) {
133     return res.first->second;
134   }
135   ::apache::thrift::metadata::ThriftStruct& module_MyStruct = res.first->second;
136   module_MyStruct.name_ref() = "module.MyStruct";
137   module_MyStruct.is_union_ref() = false;
138   static const EncodedThriftField
139   module_MyStruct_fields[] = {
140     {1, "MyBoolField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
141     {2, "MyIntField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
142     {3, "MyStringField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
143     {4, "MyStringField2", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
144     {5, "MyBinaryField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
145     {6, "MyBinaryField2", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
146     {7, "MyBinaryField3", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
147     {8, "MyBinaryListField4", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE)), std::vector<ThriftConstStruct>{}},
148     {9, "MyMapEnumAndInt", false, std::make_unique<Map>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
149     {10, "MyCustomField", false, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
150     {11, "MyOptCustomField", true, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
151   };
152   for (const auto& f : module_MyStruct_fields) {
153     ::apache::thrift::metadata::ThriftField field;
154     field.id_ref() = f.id;
155     field.name_ref() = f.name;
156     field.is_optional_ref() = f.is_optional;
157     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
158     field.structured_annotations_ref() = f.structured_annotations;
159     module_MyStruct.fields_ref()->push_back(std::move(field));
160   }
161   return res.first->second;
162 }
163 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)164 StructMetadata<::some::valid::ns::SimpleUnion>::gen(ThriftMetadata& metadata) {
165   auto res = metadata.structs_ref()->emplace("module.SimpleUnion", ::apache::thrift::metadata::ThriftStruct{});
166   if (!res.second) {
167     return res.first->second;
168   }
169   ::apache::thrift::metadata::ThriftStruct& module_SimpleUnion = res.first->second;
170   module_SimpleUnion.name_ref() = "module.SimpleUnion";
171   module_SimpleUnion.is_union_ref() = true;
172   static const EncodedThriftField
173   module_SimpleUnion_fields[] = {
174     {7, "intValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
175     {2, "stringValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
176   };
177   for (const auto& f : module_SimpleUnion_fields) {
178     ::apache::thrift::metadata::ThriftField field;
179     field.id_ref() = f.id;
180     field.name_ref() = f.name;
181     field.is_optional_ref() = f.is_optional;
182     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
183     field.structured_annotations_ref() = f.structured_annotations;
184     module_SimpleUnion.fields_ref()->push_back(std::move(field));
185   }
186   return res.first->second;
187 }
188 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)189 StructMetadata<::some::valid::ns::ComplexUnion>::gen(ThriftMetadata& metadata) {
190   auto res = metadata.structs_ref()->emplace("module.ComplexUnion", ::apache::thrift::metadata::ThriftStruct{});
191   if (!res.second) {
192     return res.first->second;
193   }
194   ::apache::thrift::metadata::ThriftStruct& module_ComplexUnion = res.first->second;
195   module_ComplexUnion.name_ref() = "module.ComplexUnion";
196   module_ComplexUnion.is_union_ref() = true;
197   static const EncodedThriftField
198   module_ComplexUnion_fields[] = {
199     {1, "intValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
200     {201, "opt_intValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
201     {3, "stringValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
202     {203, "opt_stringValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
203     {4, "intValue2", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE), std::vector<ThriftConstStruct>{}},
204     {6, "intValue3", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
205     {7, "doubelValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
206     {8, "boolValue", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
207     {9, "union_list", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
208     {10, "union_set", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
209     {11, "union_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
210     {211, "opt_union_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
211     {12, "enum_field", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
212     {13, "enum_container", false, std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA")), std::vector<ThriftConstStruct>{}},
213     {14, "a_struct", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
214     {15, "a_set_struct", false, std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct")), std::vector<ThriftConstStruct>{}},
215     {16, "a_union", false, std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion"), std::vector<ThriftConstStruct>{}},
216     {216, "opt_a_union", false, std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion"), std::vector<ThriftConstStruct>{}},
217     {17, "a_union_list", false, std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}},
218     {18, "a_union_typedef", false, std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
219     {19, "a_union_typedef_list", false, std::make_unique<List>(std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
220     {20, "MyBinaryField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
221     {21, "MyBinaryField2", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}},
222     {23, "MyBinaryListField4", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE)), std::vector<ThriftConstStruct>{}},
223     {24, "ref_field", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
224     {25, "ref_field2", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
225     {26, "excp_field", false, std::make_unique<Typedef>("module.AnException", std::make_unique<Struct< ::some::valid::ns::AnException>>("module.AnException"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
226     {27, "MyCustomField", false, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
227   };
228   for (const auto& f : module_ComplexUnion_fields) {
229     ::apache::thrift::metadata::ThriftField field;
230     field.id_ref() = f.id;
231     field.name_ref() = f.name;
232     field.is_optional_ref() = f.is_optional;
233     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
234     field.structured_annotations_ref() = f.structured_annotations;
235     module_ComplexUnion.fields_ref()->push_back(std::move(field));
236   }
237   return res.first->second;
238 }
239 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)240 StructMetadata<::some::valid::ns::AnException>::gen(ThriftMetadata& metadata) {
241   auto res = metadata.structs_ref()->emplace("module.AnException", ::apache::thrift::metadata::ThriftStruct{});
242   if (!res.second) {
243     return res.first->second;
244   }
245   ::apache::thrift::metadata::ThriftStruct& module_AnException = res.first->second;
246   module_AnException.name_ref() = "module.AnException";
247   module_AnException.is_union_ref() = false;
248   static const EncodedThriftField
249   module_AnException_fields[] = {
250     {1, "code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
251     {101, "req_code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
252     {2, "message2", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
253     {102, "req_message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
254     {3, "exception_list", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
255     {4, "exception_set", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
256     {5, "exception_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
257     {105, "req_exception_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
258     {6, "enum_field", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
259     {7, "enum_container", false, std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA")), std::vector<ThriftConstStruct>{}},
260     {8, "a_struct", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
261     {9, "a_set_struct", false, std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct")), std::vector<ThriftConstStruct>{}},
262     {10, "a_union_list", false, std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}},
263     {11, "union_typedef", false, std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
264     {19, "a_union_typedef_list", false, std::make_unique<List>(std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
265     {20, "MyCustomField", false, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
266     {21, "MyOptCustomField", true, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
267   };
268   for (const auto& f : module_AnException_fields) {
269     ::apache::thrift::metadata::ThriftField field;
270     field.id_ref() = f.id;
271     field.name_ref() = f.name;
272     field.is_optional_ref() = f.is_optional;
273     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
274     field.structured_annotations_ref() = f.structured_annotations;
275     module_AnException.fields_ref()->push_back(std::move(field));
276   }
277   return res.first->second;
278 }
279 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)280 StructMetadata<::some::valid::ns::AnotherException>::gen(ThriftMetadata& metadata) {
281   auto res = metadata.structs_ref()->emplace("module.AnotherException", ::apache::thrift::metadata::ThriftStruct{});
282   if (!res.second) {
283     return res.first->second;
284   }
285   ::apache::thrift::metadata::ThriftStruct& module_AnotherException = res.first->second;
286   module_AnotherException.name_ref() = "module.AnotherException";
287   module_AnotherException.is_union_ref() = false;
288   static const EncodedThriftField
289   module_AnotherException_fields[] = {
290     {1, "code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
291     {101, "req_code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
292     {2, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
293   };
294   for (const auto& f : module_AnotherException_fields) {
295     ::apache::thrift::metadata::ThriftField field;
296     field.id_ref() = f.id;
297     field.name_ref() = f.name;
298     field.is_optional_ref() = f.is_optional;
299     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
300     field.structured_annotations_ref() = f.structured_annotations;
301     module_AnotherException.fields_ref()->push_back(std::move(field));
302   }
303   return res.first->second;
304 }
305 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)306 StructMetadata<::some::valid::ns::containerStruct>::gen(ThriftMetadata& metadata) {
307   auto res = metadata.structs_ref()->emplace("module.containerStruct", ::apache::thrift::metadata::ThriftStruct{});
308   if (!res.second) {
309     return res.first->second;
310   }
311   ::apache::thrift::metadata::ThriftStruct& module_containerStruct = res.first->second;
312   module_containerStruct.name_ref() = "module.containerStruct";
313   module_containerStruct.is_union_ref() = false;
314   static const EncodedThriftField
315   module_containerStruct_fields[] = {
316     {1, "fieldA", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
317     {101, "req_fieldA", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
318     {201, "opt_fieldA", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
319     {2, "fieldB", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
320     {102, "req_fieldB", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
321     {202, "opt_fieldB", true, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)), std::vector<ThriftConstStruct>{}},
322     {3, "fieldC", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
323     {103, "req_fieldC", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
324     {203, "opt_fieldC", true, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
325     {4, "fieldD", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
326     {5, "fieldE", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
327     {105, "req_fieldE", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
328     {205, "opt_fieldE", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
329     {6, "fieldF", false, std::make_unique<List>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
330     {7, "fieldG", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)))), std::vector<ThriftConstStruct>{}},
331     {8, "fieldH", false, std::make_unique<List>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
332     {9, "fieldI", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector<ThriftConstStruct>{}},
333     {10, "fieldJ", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))), std::vector<ThriftConstStruct>{}},
334     {11, "fieldK", false, std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE))))), std::vector<ThriftConstStruct>{}},
335     {12, "fieldL", false, std::make_unique<Set>(std::make_unique<Set>(std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE)))), std::vector<ThriftConstStruct>{}},
336     {13, "fieldM", 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>{}},
337     {14, "fieldN", false, std::make_unique<Typedef>("module.simpleTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
338     {15, "fieldO", false, std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
339     {16, "fieldP", false, std::make_unique<List>(std::make_unique<Typedef>("module.mostComplexTypeDef", std::make_unique<List>(std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
340     {17, "fieldQ", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
341     {18, "fieldR", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
342     {118, "req_fieldR", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
343     {218, "opt_fieldR", true, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
344     {19, "fieldS", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
345     {21, "fieldT", false, std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA")), std::vector<ThriftConstStruct>{}},
346     {22, "fieldU", false, std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA")), std::vector<ThriftConstStruct>{}},
347     {23, "fieldV", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
348     {123, "req_fieldV", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
349     {223, "opt_fieldV", true, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
350     {24, "fieldW", false, std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct")), std::vector<ThriftConstStruct>{}},
351     {25, "fieldX", false, std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"), std::vector<ThriftConstStruct>{}},
352     {125, "req_fieldX", false, std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"), std::vector<ThriftConstStruct>{}},
353     {225, "opt_fieldX", true, std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"), std::vector<ThriftConstStruct>{}},
354     {26, "fieldY", false, std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion")), std::vector<ThriftConstStruct>{}},
355     {27, "fieldZ", false, std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
356     {28, "fieldAA", false, std::make_unique<List>(std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
357     {29, "fieldAB", false, std::make_unique<Map>(std::make_unique<Typedef>("module.IndirectionB", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}), std::make_unique<Typedef>("module.IndirectionC", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
358     {30, "fieldAC", false, std::make_unique<Typedef>("module.MyEnumB", std::make_unique<Enum< ::some::valid::ns::MyEnumB>>("module.MyEnumB"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
359     {31, "fieldAD", false, std::make_unique<Enum< ::a::different::ns::AnEnum>>("includes.AnEnum"), std::vector<ThriftConstStruct>{}},
360     {32, "fieldAE", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
361     {33, "fieldSD", false, std::make_unique<Typedef>("module.IndirectionD", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
362   };
363   for (const auto& f : module_containerStruct_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_containerStruct.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<::some::valid::ns::MyIncludedStruct>::gen(ThriftMetadata& metadata) {
376   auto res = metadata.structs_ref()->emplace("module.MyIncludedStruct", ::apache::thrift::metadata::ThriftStruct{});
377   if (!res.second) {
378     return res.first->second;
379   }
380   ::apache::thrift::metadata::ThriftStruct& module_MyIncludedStruct = res.first->second;
381   module_MyIncludedStruct.name_ref() = "module.MyIncludedStruct";
382   module_MyIncludedStruct.is_union_ref() = false;
383   static const EncodedThriftField
384   module_MyIncludedStruct_fields[] = {
385     {1, "MyIncludedInt", false, std::make_unique<Typedef>("includes.IncludedInt64", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
386     {2, "MyIncludedStruct", false, std::make_unique<Typedef>("module.AStruct", std::make_unique<Struct< ::a::different::ns::AStruct>>("includes.AStruct"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
387     {3, "ARefField", false, std::make_unique<Typedef>("module.AStruct", std::make_unique<Struct< ::a::different::ns::AStruct>>("includes.AStruct"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
388     {4, "ARequiredField", false, std::make_unique<Typedef>("module.AStruct", std::make_unique<Struct< ::a::different::ns::AStruct>>("includes.AStruct"), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
389   };
390   for (const auto& f : module_MyIncludedStruct_fields) {
391     ::apache::thrift::metadata::ThriftField field;
392     field.id_ref() = f.id;
393     field.name_ref() = f.name;
394     field.is_optional_ref() = f.is_optional;
395     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
396     field.structured_annotations_ref() = f.structured_annotations;
397     module_MyIncludedStruct.fields_ref()->push_back(std::move(field));
398   }
399   return res.first->second;
400 }
401 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)402 StructMetadata<::some::valid::ns::AnnotatedStruct>::gen(ThriftMetadata& metadata) {
403   auto res = metadata.structs_ref()->emplace("module.AnnotatedStruct", ::apache::thrift::metadata::ThriftStruct{});
404   if (!res.second) {
405     return res.first->second;
406   }
407   ::apache::thrift::metadata::ThriftStruct& module_AnnotatedStruct = res.first->second;
408   module_AnnotatedStruct.name_ref() = "module.AnnotatedStruct";
409   module_AnnotatedStruct.is_union_ref() = false;
410   static const EncodedThriftField
411   module_AnnotatedStruct_fields[] = {
412     {1, "no_annotation", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
413     {2, "cpp_unique_ref", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
414     {3, "cpp2_unique_ref", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
415     {4, "container_with_ref", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::vector<ThriftConstStruct>{}},
416     {5, "req_cpp_unique_ref", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
417     {6, "req_cpp2_unique_ref", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
418     {7, "req_container_with_ref", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
419     {8, "opt_cpp_unique_ref", true, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
420     {9, "opt_cpp2_unique_ref", true, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
421     {10, "opt_container_with_ref", true, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
422     {11, "ref_type_unique", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
423     {12, "ref_type_shared", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
424     {13, "ref_type_const", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE))), std::vector<ThriftConstStruct>{}},
425     {14, "req_ref_type_shared", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
426     {15, "req_ref_type_const", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
427     {16, "req_ref_type_unique", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
428     {17, "opt_ref_type_const", true, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
429     {18, "opt_ref_type_unique", true, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
430     {19, "opt_ref_type_shared", true, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
431     {20, "base_type", false, std::make_unique<Typedef>("module.CppFakeI32", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
432     {21, "list_type", false, std::make_unique<Typedef>("module.FollySmallVectorI64", std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
433     {22, "set_type", false, std::make_unique<Typedef>("module.SortedVectorSetString", std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
434     {23, "map_type", false, std::make_unique<Typedef>("module.FakeMap", std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
435     {24, "map_struct_type", false, std::make_unique<Typedef>("module.UnorderedMapStruct", std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct")), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
436     {25, "iobuf_type", false, std::make_unique<Typedef>("module.IOBuf", std::make_unique<Typedef>("module.IOBuf", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
437     {26, "iobuf_ptr", false, std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
438     {27, "list_i32_template", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
439     {28, "list_string_template", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
440     {29, "set_template", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
441     {30, "map_template", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}},
442     {31, "typedef_list_template", false, std::make_unique<Typedef>("module.std_list", std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
443     {32, "typedef_deque_template", false, std::make_unique<Typedef>("module.std_deque", std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
444     {33, "typedef_set_template", false, std::make_unique<Typedef>("module.folly_set", std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
445     {34, "typedef_map_template", false, std::make_unique<Typedef>("module.folly_map", std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
446     {35, "indirection_a", false, std::make_unique<Typedef>("module.IndirectionA", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
447     {36, "indirection_b", false, std::make_unique<List>(std::make_unique<Typedef>("module.IndirectionB", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
448     {37, "indirection_c", false, std::make_unique<Set>(std::make_unique<Typedef>("module.IndirectionC", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
449     {38, "iobuf_type_val", false, std::make_unique<Typedef>("module.IOBuf", std::make_unique<Typedef>("module.IOBuf", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
450     {39, "iobuf_ptr_val", false, std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
451     {40, "struct_struct", false, std::make_unique<Struct< ::some::valid::ns::containerStruct>>("module.containerStruct"), std::vector<ThriftConstStruct>{}},
452   };
453   for (const auto& f : module_AnnotatedStruct_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_AnnotatedStruct.fields_ref()->push_back(std::move(field));
461   }
462   return res.first->second;
463 }
464 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)465 StructMetadata<::some::valid::ns::ComplexContainerStruct>::gen(ThriftMetadata& metadata) {
466   auto res = metadata.structs_ref()->emplace("module.ComplexContainerStruct", ::apache::thrift::metadata::ThriftStruct{});
467   if (!res.second) {
468     return res.first->second;
469   }
470   ::apache::thrift::metadata::ThriftStruct& module_ComplexContainerStruct = res.first->second;
471   module_ComplexContainerStruct.name_ref() = "module.ComplexContainerStruct";
472   module_ComplexContainerStruct.is_union_ref() = false;
473   static const EncodedThriftField
474   module_ComplexContainerStruct_fields[] = {
475     {1, "map_of_iobufs", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Typedef>("module.IOBuf", std::make_unique<Typedef>("module.IOBuf", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
476     {2, "map_of_iobuf_ptrs", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
477   };
478   for (const auto& f : module_ComplexContainerStruct_fields) {
479     ::apache::thrift::metadata::ThriftField field;
480     field.id_ref() = f.id;
481     field.name_ref() = f.name;
482     field.is_optional_ref() = f.is_optional;
483     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
484     field.structured_annotations_ref() = f.structured_annotations;
485     module_ComplexContainerStruct.fields_ref()->push_back(std::move(field));
486   }
487   return res.first->second;
488 }
489 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)490 StructMetadata<::some::valid::ns::FloatStruct>::gen(ThriftMetadata& metadata) {
491   auto res = metadata.structs_ref()->emplace("module.FloatStruct", ::apache::thrift::metadata::ThriftStruct{});
492   if (!res.second) {
493     return res.first->second;
494   }
495   ::apache::thrift::metadata::ThriftStruct& module_FloatStruct = res.first->second;
496   module_FloatStruct.name_ref() = "module.FloatStruct";
497   module_FloatStruct.is_union_ref() = false;
498   static const EncodedThriftField
499   module_FloatStruct_fields[] = {
500     {1, "floatField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE), std::vector<ThriftConstStruct>{}},
501     {2, "doubleField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
502   };
503   for (const auto& f : module_FloatStruct_fields) {
504     ::apache::thrift::metadata::ThriftField field;
505     field.id_ref() = f.id;
506     field.name_ref() = f.name;
507     field.is_optional_ref() = f.is_optional;
508     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
509     field.structured_annotations_ref() = f.structured_annotations;
510     module_FloatStruct.fields_ref()->push_back(std::move(field));
511   }
512   return res.first->second;
513 }
514 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)515 StructMetadata<::some::valid::ns::FloatUnion>::gen(ThriftMetadata& metadata) {
516   auto res = metadata.structs_ref()->emplace("module.FloatUnion", ::apache::thrift::metadata::ThriftStruct{});
517   if (!res.second) {
518     return res.first->second;
519   }
520   ::apache::thrift::metadata::ThriftStruct& module_FloatUnion = res.first->second;
521   module_FloatUnion.name_ref() = "module.FloatUnion";
522   module_FloatUnion.is_union_ref() = true;
523   static const EncodedThriftField
524   module_FloatUnion_fields[] = {
525     {1, "floatSide", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE), std::vector<ThriftConstStruct>{}},
526     {2, "doubleSide", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
527   };
528   for (const auto& f : module_FloatUnion_fields) {
529     ::apache::thrift::metadata::ThriftField field;
530     field.id_ref() = f.id;
531     field.name_ref() = f.name;
532     field.is_optional_ref() = f.is_optional;
533     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
534     field.structured_annotations_ref() = f.structured_annotations;
535     module_FloatUnion.fields_ref()->push_back(std::move(field));
536   }
537   return res.first->second;
538 }
539 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)540 StructMetadata<::some::valid::ns::AllRequiredNoExceptMoveCtrStruct>::gen(ThriftMetadata& metadata) {
541   auto res = metadata.structs_ref()->emplace("module.AllRequiredNoExceptMoveCtrStruct", ::apache::thrift::metadata::ThriftStruct{});
542   if (!res.second) {
543     return res.first->second;
544   }
545   ::apache::thrift::metadata::ThriftStruct& module_AllRequiredNoExceptMoveCtrStruct = res.first->second;
546   module_AllRequiredNoExceptMoveCtrStruct.name_ref() = "module.AllRequiredNoExceptMoveCtrStruct";
547   module_AllRequiredNoExceptMoveCtrStruct.is_union_ref() = false;
548   static const EncodedThriftField
549   module_AllRequiredNoExceptMoveCtrStruct_fields[] = {
550     {1, "intField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
551   };
552   for (const auto& f : module_AllRequiredNoExceptMoveCtrStruct_fields) {
553     ::apache::thrift::metadata::ThriftField field;
554     field.id_ref() = f.id;
555     field.name_ref() = f.name;
556     field.is_optional_ref() = f.is_optional;
557     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
558     field.structured_annotations_ref() = f.structured_annotations;
559     module_AllRequiredNoExceptMoveCtrStruct.fields_ref()->push_back(std::move(field));
560   }
561   return res.first->second;
562 }
563 
gen(ThriftMetadata & metadata)564 void ExceptionMetadata<::some::valid::ns::AnException>::gen(ThriftMetadata& metadata) {
565   auto res = metadata.exceptions_ref()->emplace("module.AnException", ::apache::thrift::metadata::ThriftException{});
566   if (!res.second) {
567     return;
568   }
569   ::apache::thrift::metadata::ThriftException& module_AnException = res.first->second;
570   module_AnException.name_ref() = "module.AnException";
571   static const EncodedThriftField
572   module_AnException_fields[] = {
573     {1, "code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
574     {101, "req_code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
575     {2, "message2", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
576     {102, "req_message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
577     {3, "exception_list", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
578     {4, "exception_set", false, std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector<ThriftConstStruct>{}},
579     {5, "exception_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
580     {105, "req_exception_map", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
581     {6, "enum_field", false, std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"), std::vector<ThriftConstStruct>{}},
582     {7, "enum_container", false, std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA")), std::vector<ThriftConstStruct>{}},
583     {8, "a_struct", false, std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"), std::vector<ThriftConstStruct>{}},
584     {9, "a_set_struct", false, std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct")), std::vector<ThriftConstStruct>{}},
585     {10, "a_union_list", false, std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}},
586     {11, "union_typedef", false, std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
587     {19, "a_union_typedef_list", false, std::make_unique<List>(std::make_unique<Typedef>("module.unionTypeDef", std::make_unique<Set>(std::make_unique<Union< ::some::valid::ns::SimpleUnion>>("module.SimpleUnion")), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}},
588     {20, "MyCustomField", false, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
589     {21, "MyOptCustomField", true, std::make_unique<Typedef>("module.CustomProtocolType", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{}},
590   };
591   for (const auto& f : module_AnException_fields) {
592     ::apache::thrift::metadata::ThriftField field;
593     field.id_ref() = f.id;
594     field.name_ref() = f.name;
595     field.is_optional_ref() = f.is_optional;
596     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
597     module_AnException.fields_ref()->push_back(std::move(field));
598   }
599 }
gen(ThriftMetadata & metadata)600 void ExceptionMetadata<::some::valid::ns::AnotherException>::gen(ThriftMetadata& metadata) {
601   auto res = metadata.exceptions_ref()->emplace("module.AnotherException", ::apache::thrift::metadata::ThriftException{});
602   if (!res.second) {
603     return;
604   }
605   ::apache::thrift::metadata::ThriftException& module_AnotherException = res.first->second;
606   module_AnotherException.name_ref() = "module.AnotherException";
607   static const EncodedThriftField
608   module_AnotherException_fields[] = {
609     {1, "code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
610     {101, "req_code", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
611     {2, "message", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
612   };
613   for (const auto& f : module_AnotherException_fields) {
614     ::apache::thrift::metadata::ThriftField field;
615     field.id_ref() = f.id;
616     field.name_ref() = f.name;
617     field.is_optional_ref() = f.is_optional;
618     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
619     module_AnotherException.fields_ref()->push_back(std::move(field));
620   }
621 }
622 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)623 void ServiceMetadata<::some::valid::ns::EmptyServiceSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
624   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
625   DCHECK(self != nullptr);
626   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
627   ::apache::thrift::metadata::ThriftServiceContext context;
628   context.module_ref() = *self->module_ref();
629   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
630   response.context_ref() = std::move(context);
631 }
632 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)633 const ThriftServiceContextRef* ServiceMetadata<::some::valid::ns::EmptyServiceSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
634   (void) metadata;
635   ::apache::thrift::metadata::ThriftService module_EmptyService;
636   module_EmptyService.name_ref() = "module.EmptyService";
637   // We need to keep the index around because a reference or iterator could be invalidated.
638   auto selfIndex = services.size();
639   services.emplace_back();
640   ThriftServiceContextRef& context = services[selfIndex];
641   metadata.services_ref()->emplace("module.EmptyService", std::move(module_EmptyService));
642   context.service_name_ref() = "module.EmptyService";
643   ::apache::thrift::metadata::ThriftModuleContext module;
644   module.name_ref() = "module";
645   context.module_ref() = std::move(module);
646   return &context;
647 }
gen_noReturn(ThriftMetadata & metadata,ThriftService & service)648 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_noReturn(ThriftMetadata& metadata, ThriftService& service) {
649   ::apache::thrift::metadata::ThriftFunction func;
650   (void)metadata;
651   func.name_ref() = "noReturn";
652   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
653   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
654   func.is_oneway_ref() = false;
655   service.functions_ref()->push_back(std::move(func));
656 }
gen_boolReturn(ThriftMetadata & metadata,ThriftService & service)657 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_boolReturn(ThriftMetadata& metadata, ThriftService& service) {
658   ::apache::thrift::metadata::ThriftFunction func;
659   (void)metadata;
660   func.name_ref() = "boolReturn";
661   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
662   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
663   func.is_oneway_ref() = false;
664   service.functions_ref()->push_back(std::move(func));
665 }
gen_i16Return(ThriftMetadata & metadata,ThriftService & service)666 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i16Return(ThriftMetadata& metadata, ThriftService& service) {
667   ::apache::thrift::metadata::ThriftFunction func;
668   (void)metadata;
669   func.name_ref() = "i16Return";
670   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE);
671   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
672   func.is_oneway_ref() = false;
673   service.functions_ref()->push_back(std::move(func));
674 }
gen_i32Return(ThriftMetadata & metadata,ThriftService & service)675 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i32Return(ThriftMetadata& metadata, ThriftService& service) {
676   ::apache::thrift::metadata::ThriftFunction func;
677   (void)metadata;
678   func.name_ref() = "i32Return";
679   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
680   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
681   func.is_oneway_ref() = false;
682   service.functions_ref()->push_back(std::move(func));
683 }
gen_i64Return(ThriftMetadata & metadata,ThriftService & service)684 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i64Return(ThriftMetadata& metadata, ThriftService& service) {
685   ::apache::thrift::metadata::ThriftFunction func;
686   (void)metadata;
687   func.name_ref() = "i64Return";
688   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
689   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
690   func.is_oneway_ref() = false;
691   service.functions_ref()->push_back(std::move(func));
692 }
gen_floatReturn(ThriftMetadata & metadata,ThriftService & service)693 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_floatReturn(ThriftMetadata& metadata, ThriftService& service) {
694   ::apache::thrift::metadata::ThriftFunction func;
695   (void)metadata;
696   func.name_ref() = "floatReturn";
697   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE);
698   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
699   func.is_oneway_ref() = false;
700   service.functions_ref()->push_back(std::move(func));
701 }
gen_doubleReturn(ThriftMetadata & metadata,ThriftService & service)702 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_doubleReturn(ThriftMetadata& metadata, ThriftService& service) {
703   ::apache::thrift::metadata::ThriftFunction func;
704   (void)metadata;
705   func.name_ref() = "doubleReturn";
706   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE);
707   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
708   func.is_oneway_ref() = false;
709   service.functions_ref()->push_back(std::move(func));
710 }
gen_stringReturn(ThriftMetadata & metadata,ThriftService & service)711 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_stringReturn(ThriftMetadata& metadata, ThriftService& service) {
712   ::apache::thrift::metadata::ThriftFunction func;
713   (void)metadata;
714   func.name_ref() = "stringReturn";
715   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
716   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
717   func.is_oneway_ref() = false;
718   service.functions_ref()->push_back(std::move(func));
719 }
gen_binaryReturn(ThriftMetadata & metadata,ThriftService & service)720 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_binaryReturn(ThriftMetadata& metadata, ThriftService& service) {
721   ::apache::thrift::metadata::ThriftFunction func;
722   (void)metadata;
723   func.name_ref() = "binaryReturn";
724   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE);
725   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
726   func.is_oneway_ref() = false;
727   service.functions_ref()->push_back(std::move(func));
728 }
gen_mapReturn(ThriftMetadata & metadata,ThriftService & service)729 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_mapReturn(ThriftMetadata& metadata, ThriftService& service) {
730   ::apache::thrift::metadata::ThriftFunction func;
731   (void)metadata;
732   func.name_ref() = "mapReturn";
733   auto func_ret_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
734   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
735   func.is_oneway_ref() = false;
736   service.functions_ref()->push_back(std::move(func));
737 }
gen_simpleTypedefReturn(ThriftMetadata & metadata,ThriftService & service)738 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_simpleTypedefReturn(ThriftMetadata& metadata, ThriftService& service) {
739   ::apache::thrift::metadata::ThriftFunction func;
740   (void)metadata;
741   func.name_ref() = "simpleTypedefReturn";
742   auto func_ret_type = std::make_unique<Typedef>("module.simpleTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{});
743   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
744   func.is_oneway_ref() = false;
745   service.functions_ref()->push_back(std::move(func));
746 }
gen_complexTypedefReturn(ThriftMetadata & metadata,ThriftService & service)747 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_complexTypedefReturn(ThriftMetadata& metadata, ThriftService& service) {
748   ::apache::thrift::metadata::ThriftFunction func;
749   (void)metadata;
750   func.name_ref() = "complexTypedefReturn";
751   auto func_ret_type = std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{});
752   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
753   func.is_oneway_ref() = false;
754   service.functions_ref()->push_back(std::move(func));
755 }
gen_list_mostComplexTypedefReturn(ThriftMetadata & metadata,ThriftService & service)756 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_mostComplexTypedefReturn(ThriftMetadata& metadata, ThriftService& service) {
757   ::apache::thrift::metadata::ThriftFunction func;
758   (void)metadata;
759   func.name_ref() = "list_mostComplexTypedefReturn";
760   auto func_ret_type = std::make_unique<List>(std::make_unique<Typedef>("module.mostComplexTypeDef", std::make_unique<List>(std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}));
761   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
762   func.is_oneway_ref() = false;
763   service.functions_ref()->push_back(std::move(func));
764 }
gen_enumReturn(ThriftMetadata & metadata,ThriftService & service)765 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_enumReturn(ThriftMetadata& metadata, ThriftService& service) {
766   ::apache::thrift::metadata::ThriftFunction func;
767   (void)metadata;
768   func.name_ref() = "enumReturn";
769   auto func_ret_type = std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA");
770   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
771   func.is_oneway_ref() = false;
772   service.functions_ref()->push_back(std::move(func));
773 }
gen_list_EnumReturn(ThriftMetadata & metadata,ThriftService & service)774 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_EnumReturn(ThriftMetadata& metadata, ThriftService& service) {
775   ::apache::thrift::metadata::ThriftFunction func;
776   (void)metadata;
777   func.name_ref() = "list_EnumReturn";
778   auto func_ret_type = std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"));
779   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
780   func.is_oneway_ref() = false;
781   service.functions_ref()->push_back(std::move(func));
782 }
gen_structReturn(ThriftMetadata & metadata,ThriftService & service)783 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_structReturn(ThriftMetadata& metadata, ThriftService& service) {
784   ::apache::thrift::metadata::ThriftFunction func;
785   (void)metadata;
786   func.name_ref() = "structReturn";
787   auto func_ret_type = std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct");
788   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
789   func.is_oneway_ref() = false;
790   service.functions_ref()->push_back(std::move(func));
791 }
gen_set_StructReturn(ThriftMetadata & metadata,ThriftService & service)792 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_set_StructReturn(ThriftMetadata& metadata, ThriftService& service) {
793   ::apache::thrift::metadata::ThriftFunction func;
794   (void)metadata;
795   func.name_ref() = "set_StructReturn";
796   auto func_ret_type = std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"));
797   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
798   func.is_oneway_ref() = false;
799   service.functions_ref()->push_back(std::move(func));
800 }
gen_unionReturn(ThriftMetadata & metadata,ThriftService & service)801 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_unionReturn(ThriftMetadata& metadata, ThriftService& service) {
802   ::apache::thrift::metadata::ThriftFunction func;
803   (void)metadata;
804   func.name_ref() = "unionReturn";
805   auto func_ret_type = std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion");
806   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
807   func.is_oneway_ref() = false;
808   service.functions_ref()->push_back(std::move(func));
809 }
gen_list_UnionReturn(ThriftMetadata & metadata,ThriftService & service)810 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_UnionReturn(ThriftMetadata& metadata, ThriftService& service) {
811   ::apache::thrift::metadata::ThriftFunction func;
812   (void)metadata;
813   func.name_ref() = "list_UnionReturn";
814   auto func_ret_type = std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"));
815   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
816   func.is_oneway_ref() = false;
817   service.functions_ref()->push_back(std::move(func));
818 }
gen_readDataEb(ThriftMetadata & metadata,ThriftService & service)819 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_readDataEb(ThriftMetadata& metadata, ThriftService& service) {
820   ::apache::thrift::metadata::ThriftFunction func;
821   (void)metadata;
822   func.name_ref() = "readDataEb";
823   auto func_ret_type = std::make_unique<Typedef>("module.IOBuf", std::make_unique<Typedef>("module.IOBuf", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{});
824   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
825   ::apache::thrift::metadata::ThriftField module_ReturnService_readDataEb_size_1;
826   module_ReturnService_readDataEb_size_1.id_ref() = 1;
827   module_ReturnService_readDataEb_size_1.name_ref() = "size";
828   module_ReturnService_readDataEb_size_1.is_optional_ref() = false;
829   auto module_ReturnService_readDataEb_size_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
830   module_ReturnService_readDataEb_size_1_type->writeAndGenType(*module_ReturnService_readDataEb_size_1.type_ref(), metadata);
831   func.arguments_ref()->push_back(std::move(module_ReturnService_readDataEb_size_1));
832   func.is_oneway_ref() = false;
833   service.functions_ref()->push_back(std::move(func));
834 }
gen_readData(ThriftMetadata & metadata,ThriftService & service)835 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_readData(ThriftMetadata& metadata, ThriftService& service) {
836   ::apache::thrift::metadata::ThriftFunction func;
837   (void)metadata;
838   func.name_ref() = "readData";
839   auto func_ret_type = std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Typedef>("module.IOBufPtr", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector<ThriftConstStruct>{}), std::vector<ThriftConstStruct>{});
840   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
841   ::apache::thrift::metadata::ThriftField module_ReturnService_readData_size_1;
842   module_ReturnService_readData_size_1.id_ref() = 1;
843   module_ReturnService_readData_size_1.name_ref() = "size";
844   module_ReturnService_readData_size_1.is_optional_ref() = false;
845   auto module_ReturnService_readData_size_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
846   module_ReturnService_readData_size_1_type->writeAndGenType(*module_ReturnService_readData_size_1.type_ref(), metadata);
847   func.arguments_ref()->push_back(std::move(module_ReturnService_readData_size_1));
848   func.is_oneway_ref() = false;
849   service.functions_ref()->push_back(std::move(func));
850 }
851 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)852 void ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
853   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
854   DCHECK(self != nullptr);
855   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
856   ::apache::thrift::metadata::ThriftServiceContext context;
857   context.module_ref() = *self->module_ref();
858   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
859   response.context_ref() = std::move(context);
860 }
861 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)862 const ThriftServiceContextRef* ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
863   (void) metadata;
864   ::apache::thrift::metadata::ThriftService module_ReturnService;
865   module_ReturnService.name_ref() = "module.ReturnService";
866   static const ThriftFunctionGenerator functions[] = {
867     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_noReturn,
868     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_boolReturn,
869     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i16Return,
870     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i32Return,
871     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_i64Return,
872     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_floatReturn,
873     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_doubleReturn,
874     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_stringReturn,
875     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_binaryReturn,
876     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_mapReturn,
877     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_simpleTypedefReturn,
878     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_complexTypedefReturn,
879     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_mostComplexTypedefReturn,
880     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_enumReturn,
881     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_EnumReturn,
882     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_structReturn,
883     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_set_StructReturn,
884     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_unionReturn,
885     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_list_UnionReturn,
886     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_readDataEb,
887     ServiceMetadata<::some::valid::ns::ReturnServiceSvIf>::gen_readData,
888   };
889   for (auto& function_gen : functions) {
890     function_gen(metadata, module_ReturnService);
891   }
892   // We need to keep the index around because a reference or iterator could be invalidated.
893   auto selfIndex = services.size();
894   services.emplace_back();
895   ThriftServiceContextRef& context = services[selfIndex];
896   metadata.services_ref()->emplace("module.ReturnService", std::move(module_ReturnService));
897   context.service_name_ref() = "module.ReturnService";
898   ::apache::thrift::metadata::ThriftModuleContext module;
899   module.name_ref() = "module";
900   context.module_ref() = std::move(module);
901   return &context;
902 }
gen_void_ret_i16_param(ThriftMetadata & metadata,ThriftService & service)903 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_i16_param(ThriftMetadata& metadata, ThriftService& service) {
904   ::apache::thrift::metadata::ThriftFunction func;
905   (void)metadata;
906   func.name_ref() = "void_ret_i16_param";
907   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
908   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
909   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_i16_param_param1_1;
910   module_ParamService_void_ret_i16_param_param1_1.id_ref() = 1;
911   module_ParamService_void_ret_i16_param_param1_1.name_ref() = "param1";
912   module_ParamService_void_ret_i16_param_param1_1.is_optional_ref() = false;
913   auto module_ParamService_void_ret_i16_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE);
914   module_ParamService_void_ret_i16_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_i16_param_param1_1.type_ref(), metadata);
915   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_i16_param_param1_1));
916   func.is_oneway_ref() = false;
917   service.functions_ref()->push_back(std::move(func));
918 }
gen_void_ret_byte_i16_param(ThriftMetadata & metadata,ThriftService & service)919 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_byte_i16_param(ThriftMetadata& metadata, ThriftService& service) {
920   ::apache::thrift::metadata::ThriftFunction func;
921   (void)metadata;
922   func.name_ref() = "void_ret_byte_i16_param";
923   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
924   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
925   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_byte_i16_param_param1_1;
926   module_ParamService_void_ret_byte_i16_param_param1_1.id_ref() = 1;
927   module_ParamService_void_ret_byte_i16_param_param1_1.name_ref() = "param1";
928   module_ParamService_void_ret_byte_i16_param_param1_1.is_optional_ref() = false;
929   auto module_ParamService_void_ret_byte_i16_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE);
930   module_ParamService_void_ret_byte_i16_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_byte_i16_param_param1_1.type_ref(), metadata);
931   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_byte_i16_param_param1_1));
932   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_byte_i16_param_param2_2;
933   module_ParamService_void_ret_byte_i16_param_param2_2.id_ref() = 2;
934   module_ParamService_void_ret_byte_i16_param_param2_2.name_ref() = "param2";
935   module_ParamService_void_ret_byte_i16_param_param2_2.is_optional_ref() = false;
936   auto module_ParamService_void_ret_byte_i16_param_param2_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE);
937   module_ParamService_void_ret_byte_i16_param_param2_2_type->writeAndGenType(*module_ParamService_void_ret_byte_i16_param_param2_2.type_ref(), metadata);
938   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_byte_i16_param_param2_2));
939   func.is_oneway_ref() = false;
940   service.functions_ref()->push_back(std::move(func));
941 }
gen_void_ret_map_param(ThriftMetadata & metadata,ThriftService & service)942 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_param(ThriftMetadata& metadata, ThriftService& service) {
943   ::apache::thrift::metadata::ThriftFunction func;
944   (void)metadata;
945   func.name_ref() = "void_ret_map_param";
946   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
947   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
948   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_map_param_param1_1;
949   module_ParamService_void_ret_map_param_param1_1.id_ref() = 1;
950   module_ParamService_void_ret_map_param_param1_1.name_ref() = "param1";
951   module_ParamService_void_ret_map_param_param1_1.is_optional_ref() = false;
952   auto module_ParamService_void_ret_map_param_param1_1_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
953   module_ParamService_void_ret_map_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_map_param_param1_1.type_ref(), metadata);
954   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_map_param_param1_1));
955   func.is_oneway_ref() = false;
956   service.functions_ref()->push_back(std::move(func));
957 }
gen_void_ret_map_setlist_param(ThriftMetadata & metadata,ThriftService & service)958 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_setlist_param(ThriftMetadata& metadata, ThriftService& service) {
959   ::apache::thrift::metadata::ThriftFunction func;
960   (void)metadata;
961   func.name_ref() = "void_ret_map_setlist_param";
962   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
963   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
964   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_map_setlist_param_param1_1;
965   module_ParamService_void_ret_map_setlist_param_param1_1.id_ref() = 1;
966   module_ParamService_void_ret_map_setlist_param_param1_1.name_ref() = "param1";
967   module_ParamService_void_ret_map_setlist_param_param1_1.is_optional_ref() = false;
968   auto module_ParamService_void_ret_map_setlist_param_param1_1_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
969   module_ParamService_void_ret_map_setlist_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_map_setlist_param_param1_1.type_ref(), metadata);
970   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_map_setlist_param_param1_1));
971   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_map_setlist_param_param2_3;
972   module_ParamService_void_ret_map_setlist_param_param2_3.id_ref() = 3;
973   module_ParamService_void_ret_map_setlist_param_param2_3.name_ref() = "param2";
974   module_ParamService_void_ret_map_setlist_param_param2_3.is_optional_ref() = false;
975   auto module_ParamService_void_ret_map_setlist_param_param2_3_type = std::make_unique<Set>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)));
976   module_ParamService_void_ret_map_setlist_param_param2_3_type->writeAndGenType(*module_ParamService_void_ret_map_setlist_param_param2_3.type_ref(), metadata);
977   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_map_setlist_param_param2_3));
978   func.is_oneway_ref() = false;
979   service.functions_ref()->push_back(std::move(func));
980 }
gen_void_ret_map_typedef_param(ThriftMetadata & metadata,ThriftService & service)981 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_typedef_param(ThriftMetadata& metadata, ThriftService& service) {
982   ::apache::thrift::metadata::ThriftFunction func;
983   (void)metadata;
984   func.name_ref() = "void_ret_map_typedef_param";
985   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
986   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
987   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_map_typedef_param_param1_1;
988   module_ParamService_void_ret_map_typedef_param_param1_1.id_ref() = 1;
989   module_ParamService_void_ret_map_typedef_param_param1_1.name_ref() = "param1";
990   module_ParamService_void_ret_map_typedef_param_param1_1.is_optional_ref() = false;
991   auto module_ParamService_void_ret_map_typedef_param_param1_1_type = std::make_unique<Typedef>("module.simpleTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{});
992   module_ParamService_void_ret_map_typedef_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_map_typedef_param_param1_1.type_ref(), metadata);
993   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_map_typedef_param_param1_1));
994   func.is_oneway_ref() = false;
995   service.functions_ref()->push_back(std::move(func));
996 }
gen_void_ret_enum_param(ThriftMetadata & metadata,ThriftService & service)997 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_enum_param(ThriftMetadata& metadata, ThriftService& service) {
998   ::apache::thrift::metadata::ThriftFunction func;
999   (void)metadata;
1000   func.name_ref() = "void_ret_enum_param";
1001   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
1002   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1003   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_enum_param_param1_1;
1004   module_ParamService_void_ret_enum_param_param1_1.id_ref() = 1;
1005   module_ParamService_void_ret_enum_param_param1_1.name_ref() = "param1";
1006   module_ParamService_void_ret_enum_param_param1_1.is_optional_ref() = false;
1007   auto module_ParamService_void_ret_enum_param_param1_1_type = std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA");
1008   module_ParamService_void_ret_enum_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_enum_param_param1_1.type_ref(), metadata);
1009   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_enum_param_param1_1));
1010   func.is_oneway_ref() = false;
1011   service.functions_ref()->push_back(std::move(func));
1012 }
gen_void_ret_struct_param(ThriftMetadata & metadata,ThriftService & service)1013 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_struct_param(ThriftMetadata& metadata, ThriftService& service) {
1014   ::apache::thrift::metadata::ThriftFunction func;
1015   (void)metadata;
1016   func.name_ref() = "void_ret_struct_param";
1017   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
1018   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1019   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_struct_param_param1_1;
1020   module_ParamService_void_ret_struct_param_param1_1.id_ref() = 1;
1021   module_ParamService_void_ret_struct_param_param1_1.name_ref() = "param1";
1022   module_ParamService_void_ret_struct_param_param1_1.is_optional_ref() = false;
1023   auto module_ParamService_void_ret_struct_param_param1_1_type = std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct");
1024   module_ParamService_void_ret_struct_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_struct_param_param1_1.type_ref(), metadata);
1025   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_struct_param_param1_1));
1026   func.is_oneway_ref() = false;
1027   service.functions_ref()->push_back(std::move(func));
1028 }
gen_void_ret_listunion_param(ThriftMetadata & metadata,ThriftService & service)1029 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_listunion_param(ThriftMetadata& metadata, ThriftService& service) {
1030   ::apache::thrift::metadata::ThriftFunction func;
1031   (void)metadata;
1032   func.name_ref() = "void_ret_listunion_param";
1033   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
1034   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1035   ::apache::thrift::metadata::ThriftField module_ParamService_void_ret_listunion_param_param1_1;
1036   module_ParamService_void_ret_listunion_param_param1_1.id_ref() = 1;
1037   module_ParamService_void_ret_listunion_param_param1_1.name_ref() = "param1";
1038   module_ParamService_void_ret_listunion_param_param1_1.is_optional_ref() = false;
1039   auto module_ParamService_void_ret_listunion_param_param1_1_type = std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"));
1040   module_ParamService_void_ret_listunion_param_param1_1_type->writeAndGenType(*module_ParamService_void_ret_listunion_param_param1_1.type_ref(), metadata);
1041   func.arguments_ref()->push_back(std::move(module_ParamService_void_ret_listunion_param_param1_1));
1042   func.is_oneway_ref() = false;
1043   service.functions_ref()->push_back(std::move(func));
1044 }
gen_bool_ret_i32_i64_param(ThriftMetadata & metadata,ThriftService & service)1045 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_i32_i64_param(ThriftMetadata& metadata, ThriftService& service) {
1046   ::apache::thrift::metadata::ThriftFunction func;
1047   (void)metadata;
1048   func.name_ref() = "bool_ret_i32_i64_param";
1049   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
1050   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1051   ::apache::thrift::metadata::ThriftField module_ParamService_bool_ret_i32_i64_param_param1_1;
1052   module_ParamService_bool_ret_i32_i64_param_param1_1.id_ref() = 1;
1053   module_ParamService_bool_ret_i32_i64_param_param1_1.name_ref() = "param1";
1054   module_ParamService_bool_ret_i32_i64_param_param1_1.is_optional_ref() = false;
1055   auto module_ParamService_bool_ret_i32_i64_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1056   module_ParamService_bool_ret_i32_i64_param_param1_1_type->writeAndGenType(*module_ParamService_bool_ret_i32_i64_param_param1_1.type_ref(), metadata);
1057   func.arguments_ref()->push_back(std::move(module_ParamService_bool_ret_i32_i64_param_param1_1));
1058   ::apache::thrift::metadata::ThriftField module_ParamService_bool_ret_i32_i64_param_param2_3;
1059   module_ParamService_bool_ret_i32_i64_param_param2_3.id_ref() = 3;
1060   module_ParamService_bool_ret_i32_i64_param_param2_3.name_ref() = "param2";
1061   module_ParamService_bool_ret_i32_i64_param_param2_3.is_optional_ref() = false;
1062   auto module_ParamService_bool_ret_i32_i64_param_param2_3_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
1063   module_ParamService_bool_ret_i32_i64_param_param2_3_type->writeAndGenType(*module_ParamService_bool_ret_i32_i64_param_param2_3.type_ref(), metadata);
1064   func.arguments_ref()->push_back(std::move(module_ParamService_bool_ret_i32_i64_param_param2_3));
1065   func.is_oneway_ref() = false;
1066   service.functions_ref()->push_back(std::move(func));
1067 }
gen_bool_ret_map_param(ThriftMetadata & metadata,ThriftService & service)1068 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_map_param(ThriftMetadata& metadata, ThriftService& service) {
1069   ::apache::thrift::metadata::ThriftFunction func;
1070   (void)metadata;
1071   func.name_ref() = "bool_ret_map_param";
1072   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
1073   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1074   ::apache::thrift::metadata::ThriftField module_ParamService_bool_ret_map_param_param1_1;
1075   module_ParamService_bool_ret_map_param_param1_1.id_ref() = 1;
1076   module_ParamService_bool_ret_map_param_param1_1.name_ref() = "param1";
1077   module_ParamService_bool_ret_map_param_param1_1.is_optional_ref() = false;
1078   auto module_ParamService_bool_ret_map_param_param1_1_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
1079   module_ParamService_bool_ret_map_param_param1_1_type->writeAndGenType(*module_ParamService_bool_ret_map_param_param1_1.type_ref(), metadata);
1080   func.arguments_ref()->push_back(std::move(module_ParamService_bool_ret_map_param_param1_1));
1081   func.is_oneway_ref() = false;
1082   service.functions_ref()->push_back(std::move(func));
1083 }
gen_bool_ret_union_param(ThriftMetadata & metadata,ThriftService & service)1084 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_union_param(ThriftMetadata& metadata, ThriftService& service) {
1085   ::apache::thrift::metadata::ThriftFunction func;
1086   (void)metadata;
1087   func.name_ref() = "bool_ret_union_param";
1088   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
1089   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1090   ::apache::thrift::metadata::ThriftField module_ParamService_bool_ret_union_param_param1_1;
1091   module_ParamService_bool_ret_union_param_param1_1.id_ref() = 1;
1092   module_ParamService_bool_ret_union_param_param1_1.name_ref() = "param1";
1093   module_ParamService_bool_ret_union_param_param1_1.is_optional_ref() = false;
1094   auto module_ParamService_bool_ret_union_param_param1_1_type = std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion");
1095   module_ParamService_bool_ret_union_param_param1_1_type->writeAndGenType(*module_ParamService_bool_ret_union_param_param1_1.type_ref(), metadata);
1096   func.arguments_ref()->push_back(std::move(module_ParamService_bool_ret_union_param_param1_1));
1097   func.is_oneway_ref() = false;
1098   service.functions_ref()->push_back(std::move(func));
1099 }
gen_i64_ret_float_double_param(ThriftMetadata & metadata,ThriftService & service)1100 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_float_double_param(ThriftMetadata& metadata, ThriftService& service) {
1101   ::apache::thrift::metadata::ThriftFunction func;
1102   (void)metadata;
1103   func.name_ref() = "i64_ret_float_double_param";
1104   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
1105   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1106   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_float_double_param_param1_1;
1107   module_ParamService_i64_ret_float_double_param_param1_1.id_ref() = 1;
1108   module_ParamService_i64_ret_float_double_param_param1_1.name_ref() = "param1";
1109   module_ParamService_i64_ret_float_double_param_param1_1.is_optional_ref() = false;
1110   auto module_ParamService_i64_ret_float_double_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_FLOAT_TYPE);
1111   module_ParamService_i64_ret_float_double_param_param1_1_type->writeAndGenType(*module_ParamService_i64_ret_float_double_param_param1_1.type_ref(), metadata);
1112   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_float_double_param_param1_1));
1113   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_float_double_param_param2_3;
1114   module_ParamService_i64_ret_float_double_param_param2_3.id_ref() = 3;
1115   module_ParamService_i64_ret_float_double_param_param2_3.name_ref() = "param2";
1116   module_ParamService_i64_ret_float_double_param_param2_3.is_optional_ref() = false;
1117   auto module_ParamService_i64_ret_float_double_param_param2_3_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE);
1118   module_ParamService_i64_ret_float_double_param_param2_3_type->writeAndGenType(*module_ParamService_i64_ret_float_double_param_param2_3.type_ref(), metadata);
1119   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_float_double_param_param2_3));
1120   func.is_oneway_ref() = false;
1121   service.functions_ref()->push_back(std::move(func));
1122 }
gen_i64_ret_string_typedef_param(ThriftMetadata & metadata,ThriftService & service)1123 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_string_typedef_param(ThriftMetadata& metadata, ThriftService& service) {
1124   ::apache::thrift::metadata::ThriftFunction func;
1125   (void)metadata;
1126   func.name_ref() = "i64_ret_string_typedef_param";
1127   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
1128   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1129   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_string_typedef_param_param1_1;
1130   module_ParamService_i64_ret_string_typedef_param_param1_1.id_ref() = 1;
1131   module_ParamService_i64_ret_string_typedef_param_param1_1.name_ref() = "param1";
1132   module_ParamService_i64_ret_string_typedef_param_param1_1.is_optional_ref() = false;
1133   auto module_ParamService_i64_ret_string_typedef_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
1134   module_ParamService_i64_ret_string_typedef_param_param1_1_type->writeAndGenType(*module_ParamService_i64_ret_string_typedef_param_param1_1.type_ref(), metadata);
1135   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_string_typedef_param_param1_1));
1136   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_string_typedef_param_param2_3;
1137   module_ParamService_i64_ret_string_typedef_param_param2_3.id_ref() = 3;
1138   module_ParamService_i64_ret_string_typedef_param_param2_3.name_ref() = "param2";
1139   module_ParamService_i64_ret_string_typedef_param_param2_3.is_optional_ref() = false;
1140   auto module_ParamService_i64_ret_string_typedef_param_param2_3_type = std::make_unique<Set>(std::make_unique<Typedef>("module.mostComplexTypeDef", std::make_unique<List>(std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{})), std::vector<ThriftConstStruct>{}));
1141   module_ParamService_i64_ret_string_typedef_param_param2_3_type->writeAndGenType(*module_ParamService_i64_ret_string_typedef_param_param2_3.type_ref(), metadata);
1142   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_string_typedef_param_param2_3));
1143   func.is_oneway_ref() = false;
1144   service.functions_ref()->push_back(std::move(func));
1145 }
gen_i64_ret_i32_i32_i32_i32_i32_param(ThriftMetadata & metadata,ThriftService & service)1146 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_i32_i32_i32_i32_i32_param(ThriftMetadata& metadata, ThriftService& service) {
1147   ::apache::thrift::metadata::ThriftFunction func;
1148   (void)metadata;
1149   func.name_ref() = "i64_ret_i32_i32_i32_i32_i32_param";
1150   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
1151   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1152   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1;
1153   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1.id_ref() = 1;
1154   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1.name_ref() = "param1";
1155   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1.is_optional_ref() = false;
1156   auto module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1157   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1_type->writeAndGenType(*module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1.type_ref(), metadata);
1158   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param1_1));
1159   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2;
1160   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2.id_ref() = 2;
1161   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2.name_ref() = "param2";
1162   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2.is_optional_ref() = false;
1163   auto module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1164   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2_type->writeAndGenType(*module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2.type_ref(), metadata);
1165   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param2_2));
1166   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3;
1167   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3.id_ref() = 3;
1168   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3.name_ref() = "param3";
1169   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3.is_optional_ref() = false;
1170   auto module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1171   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3_type->writeAndGenType(*module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3.type_ref(), metadata);
1172   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param3_3));
1173   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4;
1174   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4.id_ref() = 4;
1175   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4.name_ref() = "param4";
1176   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4.is_optional_ref() = false;
1177   auto module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1178   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4_type->writeAndGenType(*module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4.type_ref(), metadata);
1179   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param4_4));
1180   ::apache::thrift::metadata::ThriftField module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5;
1181   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5.id_ref() = 5;
1182   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5.name_ref() = "param5";
1183   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5.is_optional_ref() = false;
1184   auto module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1185   module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5_type->writeAndGenType(*module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5.type_ref(), metadata);
1186   func.arguments_ref()->push_back(std::move(module_ParamService_i64_ret_i32_i32_i32_i32_i32_param_param5_5));
1187   func.is_oneway_ref() = false;
1188   service.functions_ref()->push_back(std::move(func));
1189 }
gen_double_ret_setstruct_param(ThriftMetadata & metadata,ThriftService & service)1190 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_double_ret_setstruct_param(ThriftMetadata& metadata, ThriftService& service) {
1191   ::apache::thrift::metadata::ThriftFunction func;
1192   (void)metadata;
1193   func.name_ref() = "double_ret_setstruct_param";
1194   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE);
1195   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1196   ::apache::thrift::metadata::ThriftField module_ParamService_double_ret_setstruct_param_param1_4;
1197   module_ParamService_double_ret_setstruct_param_param1_4.id_ref() = 4;
1198   module_ParamService_double_ret_setstruct_param_param1_4.name_ref() = "param1";
1199   module_ParamService_double_ret_setstruct_param_param1_4.is_optional_ref() = false;
1200   auto module_ParamService_double_ret_setstruct_param_param1_4_type = std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"));
1201   module_ParamService_double_ret_setstruct_param_param1_4_type->writeAndGenType(*module_ParamService_double_ret_setstruct_param_param1_4.type_ref(), metadata);
1202   func.arguments_ref()->push_back(std::move(module_ParamService_double_ret_setstruct_param_param1_4));
1203   func.is_oneway_ref() = false;
1204   service.functions_ref()->push_back(std::move(func));
1205 }
gen_string_ret_string_param(ThriftMetadata & metadata,ThriftService & service)1206 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_string_ret_string_param(ThriftMetadata& metadata, ThriftService& service) {
1207   ::apache::thrift::metadata::ThriftFunction func;
1208   (void)metadata;
1209   func.name_ref() = "string_ret_string_param";
1210   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
1211   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1212   ::apache::thrift::metadata::ThriftField module_ParamService_string_ret_string_param_param1_1;
1213   module_ParamService_string_ret_string_param_param1_1.id_ref() = 1;
1214   module_ParamService_string_ret_string_param_param1_1.name_ref() = "param1";
1215   module_ParamService_string_ret_string_param_param1_1.is_optional_ref() = false;
1216   auto module_ParamService_string_ret_string_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
1217   module_ParamService_string_ret_string_param_param1_1_type->writeAndGenType(*module_ParamService_string_ret_string_param_param1_1.type_ref(), metadata);
1218   func.arguments_ref()->push_back(std::move(module_ParamService_string_ret_string_param_param1_1));
1219   func.is_oneway_ref() = false;
1220   service.functions_ref()->push_back(std::move(func));
1221 }
gen_binary_ret_binary_param(ThriftMetadata & metadata,ThriftService & service)1222 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_binary_ret_binary_param(ThriftMetadata& metadata, ThriftService& service) {
1223   ::apache::thrift::metadata::ThriftFunction func;
1224   (void)metadata;
1225   func.name_ref() = "binary_ret_binary_param";
1226   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE);
1227   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1228   ::apache::thrift::metadata::ThriftField module_ParamService_binary_ret_binary_param_param1_1;
1229   module_ParamService_binary_ret_binary_param_param1_1.id_ref() = 1;
1230   module_ParamService_binary_ret_binary_param_param1_1.name_ref() = "param1";
1231   module_ParamService_binary_ret_binary_param_param1_1.is_optional_ref() = false;
1232   auto module_ParamService_binary_ret_binary_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE);
1233   module_ParamService_binary_ret_binary_param_param1_1_type->writeAndGenType(*module_ParamService_binary_ret_binary_param_param1_1.type_ref(), metadata);
1234   func.arguments_ref()->push_back(std::move(module_ParamService_binary_ret_binary_param_param1_1));
1235   func.is_oneway_ref() = false;
1236   service.functions_ref()->push_back(std::move(func));
1237 }
gen_map_ret_bool_param(ThriftMetadata & metadata,ThriftService & service)1238 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_map_ret_bool_param(ThriftMetadata& metadata, ThriftService& service) {
1239   ::apache::thrift::metadata::ThriftFunction func;
1240   (void)metadata;
1241   func.name_ref() = "map_ret_bool_param";
1242   auto func_ret_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
1243   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1244   ::apache::thrift::metadata::ThriftField module_ParamService_map_ret_bool_param_param1_1;
1245   module_ParamService_map_ret_bool_param_param1_1.id_ref() = 1;
1246   module_ParamService_map_ret_bool_param_param1_1.name_ref() = "param1";
1247   module_ParamService_map_ret_bool_param_param1_1.is_optional_ref() = false;
1248   auto module_ParamService_map_ret_bool_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
1249   module_ParamService_map_ret_bool_param_param1_1_type->writeAndGenType(*module_ParamService_map_ret_bool_param_param1_1.type_ref(), metadata);
1250   func.arguments_ref()->push_back(std::move(module_ParamService_map_ret_bool_param_param1_1));
1251   func.is_oneway_ref() = false;
1252   service.functions_ref()->push_back(std::move(func));
1253 }
gen_list_ret_map_setlist_param(ThriftMetadata & metadata,ThriftService & service)1254 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_list_ret_map_setlist_param(ThriftMetadata& metadata, ThriftService& service) {
1255   ::apache::thrift::metadata::ThriftFunction func;
1256   (void)metadata;
1257   func.name_ref() = "list_ret_map_setlist_param";
1258   auto func_ret_type = std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE));
1259   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1260   ::apache::thrift::metadata::ThriftField module_ParamService_list_ret_map_setlist_param_param1_1;
1261   module_ParamService_list_ret_map_setlist_param_param1_1.id_ref() = 1;
1262   module_ParamService_list_ret_map_setlist_param_param1_1.name_ref() = "param1";
1263   module_ParamService_list_ret_map_setlist_param_param1_1.is_optional_ref() = false;
1264   auto module_ParamService_list_ret_map_setlist_param_param1_1_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE)));
1265   module_ParamService_list_ret_map_setlist_param_param1_1_type->writeAndGenType(*module_ParamService_list_ret_map_setlist_param_param1_1.type_ref(), metadata);
1266   func.arguments_ref()->push_back(std::move(module_ParamService_list_ret_map_setlist_param_param1_1));
1267   ::apache::thrift::metadata::ThriftField module_ParamService_list_ret_map_setlist_param_param2_2;
1268   module_ParamService_list_ret_map_setlist_param_param2_2.id_ref() = 2;
1269   module_ParamService_list_ret_map_setlist_param_param2_2.name_ref() = "param2";
1270   module_ParamService_list_ret_map_setlist_param_param2_2.is_optional_ref() = false;
1271   auto module_ParamService_list_ret_map_setlist_param_param2_2_type = std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE));
1272   module_ParamService_list_ret_map_setlist_param_param2_2_type->writeAndGenType(*module_ParamService_list_ret_map_setlist_param_param2_2.type_ref(), metadata);
1273   func.arguments_ref()->push_back(std::move(module_ParamService_list_ret_map_setlist_param_param2_2));
1274   func.is_oneway_ref() = false;
1275   service.functions_ref()->push_back(std::move(func));
1276 }
gen_mapsetlistmapliststring_ret_listlistlist_param(ThriftMetadata & metadata,ThriftService & service)1277 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_mapsetlistmapliststring_ret_listlistlist_param(ThriftMetadata& metadata, ThriftService& service) {
1278   ::apache::thrift::metadata::ThriftFunction func;
1279   (void)metadata;
1280   func.name_ref() = "mapsetlistmapliststring_ret_listlistlist_param";
1281   auto func_ret_type = 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)));
1282   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1283   ::apache::thrift::metadata::ThriftField module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1;
1284   module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1.id_ref() = 1;
1285   module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1.name_ref() = "param1";
1286   module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1.is_optional_ref() = false;
1287   auto module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1_type = std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)))));
1288   module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1_type->writeAndGenType(*module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1.type_ref(), metadata);
1289   func.arguments_ref()->push_back(std::move(module_ParamService_mapsetlistmapliststring_ret_listlistlist_param_param1_1));
1290   func.is_oneway_ref() = false;
1291   service.functions_ref()->push_back(std::move(func));
1292 }
gen_typedef_ret_i32_param(ThriftMetadata & metadata,ThriftService & service)1293 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_typedef_ret_i32_param(ThriftMetadata& metadata, ThriftService& service) {
1294   ::apache::thrift::metadata::ThriftFunction func;
1295   (void)metadata;
1296   func.name_ref() = "typedef_ret_i32_param";
1297   auto func_ret_type = std::make_unique<Typedef>("module.simpleTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{});
1298   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1299   ::apache::thrift::metadata::ThriftField module_ParamService_typedef_ret_i32_param_param1_1;
1300   module_ParamService_typedef_ret_i32_param_param1_1.id_ref() = 1;
1301   module_ParamService_typedef_ret_i32_param_param1_1.name_ref() = "param1";
1302   module_ParamService_typedef_ret_i32_param_param1_1.is_optional_ref() = false;
1303   auto module_ParamService_typedef_ret_i32_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1304   module_ParamService_typedef_ret_i32_param_param1_1_type->writeAndGenType(*module_ParamService_typedef_ret_i32_param_param1_1.type_ref(), metadata);
1305   func.arguments_ref()->push_back(std::move(module_ParamService_typedef_ret_i32_param_param1_1));
1306   func.is_oneway_ref() = false;
1307   service.functions_ref()->push_back(std::move(func));
1308 }
gen_listtypedef_ret_typedef_param(ThriftMetadata & metadata,ThriftService & service)1309 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listtypedef_ret_typedef_param(ThriftMetadata& metadata, ThriftService& service) {
1310   ::apache::thrift::metadata::ThriftFunction func;
1311   (void)metadata;
1312   func.name_ref() = "listtypedef_ret_typedef_param";
1313   auto func_ret_type = std::make_unique<List>(std::make_unique<Typedef>("module.simpleTypeDef", std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}));
1314   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1315   ::apache::thrift::metadata::ThriftField module_ParamService_listtypedef_ret_typedef_param_param1_1;
1316   module_ParamService_listtypedef_ret_typedef_param_param1_1.id_ref() = 1;
1317   module_ParamService_listtypedef_ret_typedef_param_param1_1.name_ref() = "param1";
1318   module_ParamService_listtypedef_ret_typedef_param_param1_1.is_optional_ref() = false;
1319   auto module_ParamService_listtypedef_ret_typedef_param_param1_1_type = std::make_unique<Typedef>("module.complexStructTypeDef", std::make_unique<List>(std::make_unique<Map>(std::make_unique<Struct< ::some::valid::ns::Empty>>("module.Empty"), std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"))), std::vector<ThriftConstStruct>{});
1320   module_ParamService_listtypedef_ret_typedef_param_param1_1_type->writeAndGenType(*module_ParamService_listtypedef_ret_typedef_param_param1_1.type_ref(), metadata);
1321   func.arguments_ref()->push_back(std::move(module_ParamService_listtypedef_ret_typedef_param_param1_1));
1322   func.is_oneway_ref() = false;
1323   service.functions_ref()->push_back(std::move(func));
1324 }
gen_enum_ret_double_param(ThriftMetadata & metadata,ThriftService & service)1325 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_enum_ret_double_param(ThriftMetadata& metadata, ThriftService& service) {
1326   ::apache::thrift::metadata::ThriftFunction func;
1327   (void)metadata;
1328   func.name_ref() = "enum_ret_double_param";
1329   auto func_ret_type = std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA");
1330   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1331   ::apache::thrift::metadata::ThriftField module_ParamService_enum_ret_double_param_param1_3;
1332   module_ParamService_enum_ret_double_param_param1_3.id_ref() = 3;
1333   module_ParamService_enum_ret_double_param_param1_3.name_ref() = "param1";
1334   module_ParamService_enum_ret_double_param_param1_3.is_optional_ref() = false;
1335   auto module_ParamService_enum_ret_double_param_param1_3_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE);
1336   module_ParamService_enum_ret_double_param_param1_3_type->writeAndGenType(*module_ParamService_enum_ret_double_param_param1_3.type_ref(), metadata);
1337   func.arguments_ref()->push_back(std::move(module_ParamService_enum_ret_double_param_param1_3));
1338   func.is_oneway_ref() = false;
1339   service.functions_ref()->push_back(std::move(func));
1340 }
gen_enum_ret_double_enum_param(ThriftMetadata & metadata,ThriftService & service)1341 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_enum_ret_double_enum_param(ThriftMetadata& metadata, ThriftService& service) {
1342   ::apache::thrift::metadata::ThriftFunction func;
1343   (void)metadata;
1344   func.name_ref() = "enum_ret_double_enum_param";
1345   auto func_ret_type = std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA");
1346   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1347   ::apache::thrift::metadata::ThriftField module_ParamService_enum_ret_double_enum_param_param1_3;
1348   module_ParamService_enum_ret_double_enum_param_param1_3.id_ref() = 3;
1349   module_ParamService_enum_ret_double_enum_param_param1_3.name_ref() = "param1";
1350   module_ParamService_enum_ret_double_enum_param_param1_3.is_optional_ref() = false;
1351   auto module_ParamService_enum_ret_double_enum_param_param1_3_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE);
1352   module_ParamService_enum_ret_double_enum_param_param1_3_type->writeAndGenType(*module_ParamService_enum_ret_double_enum_param_param1_3.type_ref(), metadata);
1353   func.arguments_ref()->push_back(std::move(module_ParamService_enum_ret_double_enum_param_param1_3));
1354   ::apache::thrift::metadata::ThriftField module_ParamService_enum_ret_double_enum_param_param2_5;
1355   module_ParamService_enum_ret_double_enum_param_param2_5.id_ref() = 5;
1356   module_ParamService_enum_ret_double_enum_param_param2_5.name_ref() = "param2";
1357   module_ParamService_enum_ret_double_enum_param_param2_5.is_optional_ref() = false;
1358   auto module_ParamService_enum_ret_double_enum_param_param2_5_type = std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA");
1359   module_ParamService_enum_ret_double_enum_param_param2_5_type->writeAndGenType(*module_ParamService_enum_ret_double_enum_param_param2_5.type_ref(), metadata);
1360   func.arguments_ref()->push_back(std::move(module_ParamService_enum_ret_double_enum_param_param2_5));
1361   func.is_oneway_ref() = false;
1362   service.functions_ref()->push_back(std::move(func));
1363 }
gen_listenum_ret_map_param(ThriftMetadata & metadata,ThriftService & service)1364 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listenum_ret_map_param(ThriftMetadata& metadata, ThriftService& service) {
1365   ::apache::thrift::metadata::ThriftFunction func;
1366   (void)metadata;
1367   func.name_ref() = "listenum_ret_map_param";
1368   auto func_ret_type = std::make_unique<List>(std::make_unique<Enum< ::some::valid::ns::MyEnumA>>("module.MyEnumA"));
1369   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1370   ::apache::thrift::metadata::ThriftField module_ParamService_listenum_ret_map_param_param1_1;
1371   module_ParamService_listenum_ret_map_param_param1_1.id_ref() = 1;
1372   module_ParamService_listenum_ret_map_param_param1_1.name_ref() = "param1";
1373   module_ParamService_listenum_ret_map_param_param1_1.is_optional_ref() = false;
1374   auto module_ParamService_listenum_ret_map_param_param1_1_type = std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE));
1375   module_ParamService_listenum_ret_map_param_param1_1_type->writeAndGenType(*module_ParamService_listenum_ret_map_param_param1_1.type_ref(), metadata);
1376   func.arguments_ref()->push_back(std::move(module_ParamService_listenum_ret_map_param_param1_1));
1377   func.is_oneway_ref() = false;
1378   service.functions_ref()->push_back(std::move(func));
1379 }
gen_struct_ret_i16_param(ThriftMetadata & metadata,ThriftService & service)1380 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_struct_ret_i16_param(ThriftMetadata& metadata, ThriftService& service) {
1381   ::apache::thrift::metadata::ThriftFunction func;
1382   (void)metadata;
1383   func.name_ref() = "struct_ret_i16_param";
1384   auto func_ret_type = std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct");
1385   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1386   ::apache::thrift::metadata::ThriftField module_ParamService_struct_ret_i16_param_param1_1;
1387   module_ParamService_struct_ret_i16_param_param1_1.id_ref() = 1;
1388   module_ParamService_struct_ret_i16_param_param1_1.name_ref() = "param1";
1389   module_ParamService_struct_ret_i16_param_param1_1.is_optional_ref() = false;
1390   auto module_ParamService_struct_ret_i16_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE);
1391   module_ParamService_struct_ret_i16_param_param1_1_type->writeAndGenType(*module_ParamService_struct_ret_i16_param_param1_1.type_ref(), metadata);
1392   func.arguments_ref()->push_back(std::move(module_ParamService_struct_ret_i16_param_param1_1));
1393   func.is_oneway_ref() = false;
1394   service.functions_ref()->push_back(std::move(func));
1395 }
gen_setstruct_ret_set_param(ThriftMetadata & metadata,ThriftService & service)1396 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_setstruct_ret_set_param(ThriftMetadata& metadata, ThriftService& service) {
1397   ::apache::thrift::metadata::ThriftFunction func;
1398   (void)metadata;
1399   func.name_ref() = "setstruct_ret_set_param";
1400   auto func_ret_type = std::make_unique<Set>(std::make_unique<Struct< ::some::valid::ns::MyStruct>>("module.MyStruct"));
1401   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1402   ::apache::thrift::metadata::ThriftField module_ParamService_setstruct_ret_set_param_param1_8;
1403   module_ParamService_setstruct_ret_set_param_param1_8.id_ref() = 8;
1404   module_ParamService_setstruct_ret_set_param_param1_8.name_ref() = "param1";
1405   module_ParamService_setstruct_ret_set_param_param1_8.is_optional_ref() = false;
1406   auto module_ParamService_setstruct_ret_set_param_param1_8_type = std::make_unique<Set>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE));
1407   module_ParamService_setstruct_ret_set_param_param1_8_type->writeAndGenType(*module_ParamService_setstruct_ret_set_param_param1_8.type_ref(), metadata);
1408   func.arguments_ref()->push_back(std::move(module_ParamService_setstruct_ret_set_param_param1_8));
1409   func.is_oneway_ref() = false;
1410   service.functions_ref()->push_back(std::move(func));
1411 }
gen_union_ret_i32_i32_param(ThriftMetadata & metadata,ThriftService & service)1412 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_union_ret_i32_i32_param(ThriftMetadata& metadata, ThriftService& service) {
1413   ::apache::thrift::metadata::ThriftFunction func;
1414   (void)metadata;
1415   func.name_ref() = "union_ret_i32_i32_param";
1416   auto func_ret_type = std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion");
1417   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1418   ::apache::thrift::metadata::ThriftField module_ParamService_union_ret_i32_i32_param_param1_4;
1419   module_ParamService_union_ret_i32_i32_param_param1_4.id_ref() = 4;
1420   module_ParamService_union_ret_i32_i32_param_param1_4.name_ref() = "param1";
1421   module_ParamService_union_ret_i32_i32_param_param1_4.is_optional_ref() = false;
1422   auto module_ParamService_union_ret_i32_i32_param_param1_4_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1423   module_ParamService_union_ret_i32_i32_param_param1_4_type->writeAndGenType(*module_ParamService_union_ret_i32_i32_param_param1_4.type_ref(), metadata);
1424   func.arguments_ref()->push_back(std::move(module_ParamService_union_ret_i32_i32_param_param1_4));
1425   ::apache::thrift::metadata::ThriftField module_ParamService_union_ret_i32_i32_param_param2_2;
1426   module_ParamService_union_ret_i32_i32_param_param2_2.id_ref() = 2;
1427   module_ParamService_union_ret_i32_i32_param_param2_2.name_ref() = "param2";
1428   module_ParamService_union_ret_i32_i32_param_param2_2.is_optional_ref() = false;
1429   auto module_ParamService_union_ret_i32_i32_param_param2_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE);
1430   module_ParamService_union_ret_i32_i32_param_param2_2_type->writeAndGenType(*module_ParamService_union_ret_i32_i32_param_param2_2.type_ref(), metadata);
1431   func.arguments_ref()->push_back(std::move(module_ParamService_union_ret_i32_i32_param_param2_2));
1432   func.is_oneway_ref() = false;
1433   service.functions_ref()->push_back(std::move(func));
1434 }
gen_listunion_string_param(ThriftMetadata & metadata,ThriftService & service)1435 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listunion_string_param(ThriftMetadata& metadata, ThriftService& service) {
1436   ::apache::thrift::metadata::ThriftFunction func;
1437   (void)metadata;
1438   func.name_ref() = "listunion_string_param";
1439   auto func_ret_type = std::make_unique<List>(std::make_unique<Union< ::some::valid::ns::ComplexUnion>>("module.ComplexUnion"));
1440   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
1441   ::apache::thrift::metadata::ThriftField module_ParamService_listunion_string_param_param1_1;
1442   module_ParamService_listunion_string_param_param1_1.id_ref() = 1;
1443   module_ParamService_listunion_string_param_param1_1.name_ref() = "param1";
1444   module_ParamService_listunion_string_param_param1_1.is_optional_ref() = false;
1445   auto module_ParamService_listunion_string_param_param1_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
1446   module_ParamService_listunion_string_param_param1_1_type->writeAndGenType(*module_ParamService_listunion_string_param_param1_1.type_ref(), metadata);
1447   func.arguments_ref()->push_back(std::move(module_ParamService_listunion_string_param_param1_1));
1448   func.is_oneway_ref() = false;
1449   service.functions_ref()->push_back(std::move(func));
1450 }
1451 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)1452 void ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
1453   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
1454   DCHECK(self != nullptr);
1455   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
1456   ::apache::thrift::metadata::ThriftServiceContext context;
1457   context.module_ref() = *self->module_ref();
1458   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
1459   response.context_ref() = std::move(context);
1460 }
1461 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)1462 const ThriftServiceContextRef* ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
1463   (void) metadata;
1464   ::apache::thrift::metadata::ThriftService module_ParamService;
1465   module_ParamService.name_ref() = "module.ParamService";
1466   static const ThriftFunctionGenerator functions[] = {
1467     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_i16_param,
1468     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_byte_i16_param,
1469     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_param,
1470     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_setlist_param,
1471     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_map_typedef_param,
1472     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_enum_param,
1473     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_struct_param,
1474     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_void_ret_listunion_param,
1475     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_i32_i64_param,
1476     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_map_param,
1477     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_bool_ret_union_param,
1478     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_float_double_param,
1479     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_string_typedef_param,
1480     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_i64_ret_i32_i32_i32_i32_i32_param,
1481     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_double_ret_setstruct_param,
1482     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_string_ret_string_param,
1483     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_binary_ret_binary_param,
1484     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_map_ret_bool_param,
1485     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_list_ret_map_setlist_param,
1486     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_mapsetlistmapliststring_ret_listlistlist_param,
1487     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_typedef_ret_i32_param,
1488     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listtypedef_ret_typedef_param,
1489     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_enum_ret_double_param,
1490     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_enum_ret_double_enum_param,
1491     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listenum_ret_map_param,
1492     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_struct_ret_i16_param,
1493     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_setstruct_ret_set_param,
1494     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_union_ret_i32_i32_param,
1495     ServiceMetadata<::some::valid::ns::ParamServiceSvIf>::gen_listunion_string_param,
1496   };
1497   for (auto& function_gen : functions) {
1498     function_gen(metadata, module_ParamService);
1499   }
1500   // We need to keep the index around because a reference or iterator could be invalidated.
1501   auto selfIndex = services.size();
1502   services.emplace_back();
1503   ThriftServiceContextRef& context = services[selfIndex];
1504   metadata.services_ref()->emplace("module.ParamService", std::move(module_ParamService));
1505   context.service_name_ref() = "module.ParamService";
1506   ::apache::thrift::metadata::ThriftModuleContext module;
1507   module.name_ref() = "module";
1508   context.module_ref() = std::move(module);
1509   return &context;
1510 }
1511 } // namespace md
1512 } // namespace detail
1513 } // namespace thrift
1514 } // namespace apache
1515