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/constants/gen-cpp2/module_metadata.h"
9 
10 namespace apache {
11 namespace thrift {
12 namespace detail {
13 namespace md {
14 using ThriftMetadata = ::apache::thrift::metadata::ThriftMetadata;
15 using ThriftPrimitiveType = ::apache::thrift::metadata::ThriftPrimitiveType;
16 using ThriftType = ::apache::thrift::metadata::ThriftType;
17 using ThriftService = ::apache::thrift::metadata::ThriftService;
18 using ThriftServiceContext = ::apache::thrift::metadata::ThriftServiceContext;
19 using ThriftFunctionGenerator = void (*)(ThriftMetadata&, ThriftService&);
20 
gen(ThriftMetadata & metadata)21 void EnumMetadata<::cpp2::EmptyEnum>::gen(ThriftMetadata& metadata) {
22   auto res = metadata.enums_ref()->emplace("module.EmptyEnum", ::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.EmptyEnum";
28   using EnumTraits = TEnumTraits<::cpp2::EmptyEnum>;
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<::cpp2::City>::gen(ThriftMetadata& metadata) {
34   auto res = metadata.enums_ref()->emplace("module.City", ::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.City";
40   using EnumTraits = TEnumTraits<::cpp2::City>;
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<::cpp2::Company>::gen(ThriftMetadata& metadata) {
46   auto res = metadata.enums_ref()->emplace("module.Company", ::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.Company";
52   using EnumTraits = TEnumTraits<::cpp2::Company>;
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 }
57 
58 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)59 StructMetadata<::cpp2::Internship>::gen(ThriftMetadata& metadata) {
60   auto res = metadata.structs_ref()->emplace("module.Internship", ::apache::thrift::metadata::ThriftStruct{});
61   if (!res.second) {
62     return res.first->second;
63   }
64   ::apache::thrift::metadata::ThriftStruct& module_Internship = res.first->second;
65   module_Internship.name_ref() = "module.Internship";
66   module_Internship.is_union_ref() = false;
67   static const EncodedThriftField
68   module_Internship_fields[] = {
69     {1, "weeks", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
70     {2, "title", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
71     {3, "employer", true, std::make_unique<Enum< ::cpp2::Company>>("module.Company"), std::vector<ThriftConstStruct>{}},
72     {4, "compensation", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
73     {5, "school", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
74   };
75   for (const auto& f : module_Internship_fields) {
76     ::apache::thrift::metadata::ThriftField field;
77     field.id_ref() = f.id;
78     field.name_ref() = f.name;
79     field.is_optional_ref() = f.is_optional;
80     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
81     field.structured_annotations_ref() = f.structured_annotations;
82     module_Internship.fields_ref()->push_back(std::move(field));
83   }
84   return res.first->second;
85 }
86 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)87 StructMetadata<::cpp2::Range>::gen(ThriftMetadata& metadata) {
88   auto res = metadata.structs_ref()->emplace("module.Range", ::apache::thrift::metadata::ThriftStruct{});
89   if (!res.second) {
90     return res.first->second;
91   }
92   ::apache::thrift::metadata::ThriftStruct& module_Range = res.first->second;
93   module_Range.name_ref() = "module.Range";
94   module_Range.is_union_ref() = false;
95   static const EncodedThriftField
96   module_Range_fields[] = {
97     {1, "min", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
98     {2, "max", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
99   };
100   for (const auto& f : module_Range_fields) {
101     ::apache::thrift::metadata::ThriftField field;
102     field.id_ref() = f.id;
103     field.name_ref() = f.name;
104     field.is_optional_ref() = f.is_optional;
105     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
106     field.structured_annotations_ref() = f.structured_annotations;
107     module_Range.fields_ref()->push_back(std::move(field));
108   }
109   return res.first->second;
110 }
111 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)112 StructMetadata<::cpp2::struct1>::gen(ThriftMetadata& metadata) {
113   auto res = metadata.structs_ref()->emplace("module.struct1", ::apache::thrift::metadata::ThriftStruct{});
114   if (!res.second) {
115     return res.first->second;
116   }
117   ::apache::thrift::metadata::ThriftStruct& module_struct1 = res.first->second;
118   module_struct1.name_ref() = "module.struct1";
119   module_struct1.is_union_ref() = false;
120   static const EncodedThriftField
121   module_struct1_fields[] = {
122     {1, "a", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
123     {2, "b", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
124   };
125   for (const auto& f : module_struct1_fields) {
126     ::apache::thrift::metadata::ThriftField field;
127     field.id_ref() = f.id;
128     field.name_ref() = f.name;
129     field.is_optional_ref() = f.is_optional;
130     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
131     field.structured_annotations_ref() = f.structured_annotations;
132     module_struct1.fields_ref()->push_back(std::move(field));
133   }
134   return res.first->second;
135 }
136 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)137 StructMetadata<::cpp2::struct2>::gen(ThriftMetadata& metadata) {
138   auto res = metadata.structs_ref()->emplace("module.struct2", ::apache::thrift::metadata::ThriftStruct{});
139   if (!res.second) {
140     return res.first->second;
141   }
142   ::apache::thrift::metadata::ThriftStruct& module_struct2 = res.first->second;
143   module_struct2.name_ref() = "module.struct2";
144   module_struct2.is_union_ref() = false;
145   static const EncodedThriftField
146   module_struct2_fields[] = {
147     {1, "a", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
148     {2, "b", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
149     {3, "c", false, std::make_unique<Struct< ::cpp2::struct1>>("module.struct1"), std::vector<ThriftConstStruct>{}},
150     {4, "d", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
151   };
152   for (const auto& f : module_struct2_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_struct2.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<::cpp2::struct3>::gen(ThriftMetadata& metadata) {
165   auto res = metadata.structs_ref()->emplace("module.struct3", ::apache::thrift::metadata::ThriftStruct{});
166   if (!res.second) {
167     return res.first->second;
168   }
169   ::apache::thrift::metadata::ThriftStruct& module_struct3 = res.first->second;
170   module_struct3.name_ref() = "module.struct3";
171   module_struct3.is_union_ref() = false;
172   static const EncodedThriftField
173   module_struct3_fields[] = {
174     {1, "a", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
175     {2, "b", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
176     {3, "c", false, std::make_unique<Struct< ::cpp2::struct2>>("module.struct2"), std::vector<ThriftConstStruct>{}},
177   };
178   for (const auto& f : module_struct3_fields) {
179     ::apache::thrift::metadata::ThriftField field;
180     field.id_ref() = f.id;
181     field.name_ref() = f.name;
182     field.is_optional_ref() = f.is_optional;
183     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
184     field.structured_annotations_ref() = f.structured_annotations;
185     module_struct3.fields_ref()->push_back(std::move(field));
186   }
187   return res.first->second;
188 }
189 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)190 StructMetadata<::cpp2::struct4>::gen(ThriftMetadata& metadata) {
191   auto res = metadata.structs_ref()->emplace("module.struct4", ::apache::thrift::metadata::ThriftStruct{});
192   if (!res.second) {
193     return res.first->second;
194   }
195   ::apache::thrift::metadata::ThriftStruct& module_struct4 = res.first->second;
196   module_struct4.name_ref() = "module.struct4";
197   module_struct4.is_union_ref() = false;
198   static const EncodedThriftField
199   module_struct4_fields[] = {
200     {1, "a", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
201     {2, "b", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
202     {3, "c", true, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector<ThriftConstStruct>{}},
203   };
204   for (const auto& f : module_struct4_fields) {
205     ::apache::thrift::metadata::ThriftField field;
206     field.id_ref() = f.id;
207     field.name_ref() = f.name;
208     field.is_optional_ref() = f.is_optional;
209     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
210     field.structured_annotations_ref() = f.structured_annotations;
211     module_struct4.fields_ref()->push_back(std::move(field));
212   }
213   return res.first->second;
214 }
215 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)216 StructMetadata<::cpp2::union1>::gen(ThriftMetadata& metadata) {
217   auto res = metadata.structs_ref()->emplace("module.union1", ::apache::thrift::metadata::ThriftStruct{});
218   if (!res.second) {
219     return res.first->second;
220   }
221   ::apache::thrift::metadata::ThriftStruct& module_union1 = res.first->second;
222   module_union1.name_ref() = "module.union1";
223   module_union1.is_union_ref() = true;
224   static const EncodedThriftField
225   module_union1_fields[] = {
226     {1, "i", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
227     {2, "d", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
228   };
229   for (const auto& f : module_union1_fields) {
230     ::apache::thrift::metadata::ThriftField field;
231     field.id_ref() = f.id;
232     field.name_ref() = f.name;
233     field.is_optional_ref() = f.is_optional;
234     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
235     field.structured_annotations_ref() = f.structured_annotations;
236     module_union1.fields_ref()->push_back(std::move(field));
237   }
238   return res.first->second;
239 }
240 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)241 StructMetadata<::cpp2::union2>::gen(ThriftMetadata& metadata) {
242   auto res = metadata.structs_ref()->emplace("module.union2", ::apache::thrift::metadata::ThriftStruct{});
243   if (!res.second) {
244     return res.first->second;
245   }
246   ::apache::thrift::metadata::ThriftStruct& module_union2 = res.first->second;
247   module_union2.name_ref() = "module.union2";
248   module_union2.is_union_ref() = true;
249   static const EncodedThriftField
250   module_union2_fields[] = {
251     {1, "i", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
252     {2, "d", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector<ThriftConstStruct>{}},
253     {3, "s", false, std::make_unique<Struct< ::cpp2::struct1>>("module.struct1"), std::vector<ThriftConstStruct>{}},
254     {4, "u", false, std::make_unique<Union< ::cpp2::union1>>("module.union1"), std::vector<ThriftConstStruct>{}},
255   };
256   for (const auto& f : module_union2_fields) {
257     ::apache::thrift::metadata::ThriftField field;
258     field.id_ref() = f.id;
259     field.name_ref() = f.name;
260     field.is_optional_ref() = f.is_optional;
261     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
262     field.structured_annotations_ref() = f.structured_annotations;
263     module_union2.fields_ref()->push_back(std::move(field));
264   }
265   return res.first->second;
266 }
267 
268 } // namespace md
269 } // namespace detail
270 } // namespace thrift
271 } // namespace apache
272