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/frozen-struct/gen-cpp2/module_metadata.h"
9 
10 namespace apache {
11 namespace thrift {
12 namespace detail {
13 namespace md {
14 using ThriftMetadata = ::apache::thrift::metadata::ThriftMetadata;
15 using ThriftPrimitiveType = ::apache::thrift::metadata::ThriftPrimitiveType;
16 using ThriftType = ::apache::thrift::metadata::ThriftType;
17 using ThriftService = ::apache::thrift::metadata::ThriftService;
18 using ThriftServiceContext = ::apache::thrift::metadata::ThriftServiceContext;
19 using ThriftFunctionGenerator = void (*)(ThriftMetadata&, ThriftService&);
20 
gen(ThriftMetadata & metadata)21 void EnumMetadata<::some::ns::EnumB>::gen(ThriftMetadata& metadata) {
22   auto res = metadata.enums_ref()->emplace("module.EnumB", ::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.EnumB";
28   using EnumTraits = TEnumTraits<::some::ns::EnumB>;
29   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
30     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
31   }
32 }
33 
34 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)35 StructMetadata<::some::ns::ModuleA>::gen(ThriftMetadata& metadata) {
36   auto res = metadata.structs_ref()->emplace("module.ModuleA", ::apache::thrift::metadata::ThriftStruct{});
37   if (!res.second) {
38     return res.first->second;
39   }
40   ::apache::thrift::metadata::ThriftStruct& module_ModuleA = res.first->second;
41   module_ModuleA.name_ref() = "module.ModuleA";
42   module_ModuleA.is_union_ref() = false;
43   static const EncodedThriftField
44   module_ModuleA_fields[] = {
45     {1, "i32Field", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
46     {2, "strField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
47     {3, "listField", false, std::make_unique<List>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I16_TYPE)), std::vector<ThriftConstStruct>{}},
48     {4, "mapField", false, std::make_unique<Map>(std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector<ThriftConstStruct>{}},
49     {5, "inclAField", false, std::make_unique<Struct< ::some::ns::IncludedA>>("include1.IncludedA"), std::vector<ThriftConstStruct>{}},
50     {6, "inclBField", false, std::make_unique<Struct< ::some::ns::IncludedB>>("include2.IncludedB"), std::vector<ThriftConstStruct>{}},
51   };
52   for (const auto& f : module_ModuleA_fields) {
53     ::apache::thrift::metadata::ThriftField field;
54     field.id_ref() = f.id;
55     field.name_ref() = f.name;
56     field.is_optional_ref() = f.is_optional;
57     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
58     field.structured_annotations_ref() = f.structured_annotations;
59     module_ModuleA.fields_ref()->push_back(std::move(field));
60   }
61   return res.first->second;
62 }
63 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)64 StructMetadata<::some::ns::ModuleB>::gen(ThriftMetadata& metadata) {
65   auto res = metadata.structs_ref()->emplace("module.ModuleB", ::apache::thrift::metadata::ThriftStruct{});
66   if (!res.second) {
67     return res.first->second;
68   }
69   ::apache::thrift::metadata::ThriftStruct& module_ModuleB = res.first->second;
70   module_ModuleB.name_ref() = "module.ModuleB";
71   module_ModuleB.is_union_ref() = false;
72   static const EncodedThriftField
73   module_ModuleB_fields[] = {
74     {1, "i32Field", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector<ThriftConstStruct>{}},
75     {2, "inclEnumB", false, std::make_unique<Enum< ::some::ns::EnumB>>("module.EnumB"), std::vector<ThriftConstStruct>{}},
76   };
77   for (const auto& f : module_ModuleB_fields) {
78     ::apache::thrift::metadata::ThriftField field;
79     field.id_ref() = f.id;
80     field.name_ref() = f.name;
81     field.is_optional_ref() = f.is_optional;
82     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
83     field.structured_annotations_ref() = f.structured_annotations;
84     module_ModuleB.fields_ref()->push_back(std::move(field));
85   }
86   return res.first->second;
87 }
88 
89 } // namespace md
90 } // namespace detail
91 } // namespace thrift
92 } // namespace apache
93