/** * Autogenerated by Thrift for thrift/compiler/test/fixtures/adapter/src/module.thrift * * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING * @generated @nocommit */ #include #include "thrift/compiler/test/fixtures/adapter/gen-cpp2/module_metadata.h" // some of these functions can be so large that the compiler gives up optimizing // them - and issues a warning which may be treated as an error! // // these functions are so rarely called that it is probably okay for them not to // be optimized in practice FOLLY_CLANG_DISABLE_WARNING("-Wignored-optimization-argument") namespace apache { namespace thrift { namespace detail { namespace md { using ThriftMetadata = ::apache::thrift::metadata::ThriftMetadata; using ThriftPrimitiveType = ::apache::thrift::metadata::ThriftPrimitiveType; using ThriftType = ::apache::thrift::metadata::ThriftType; using ThriftService = ::apache::thrift::metadata::ThriftService; using ThriftServiceContext = ::apache::thrift::metadata::ThriftServiceContext; using ThriftFunctionGenerator = void (*)(ThriftMetadata&, ThriftService&); void EnumMetadata<::facebook::thrift::test::Color>::gen(ThriftMetadata& metadata) { auto res = metadata.enums()->emplace("module.Color", ::apache::thrift::metadata::ThriftEnum{}); if (!res.second) { return; } ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second; enum_metadata.name() = "module.Color"; using EnumTraits = TEnumTraits<::facebook::thrift::test::Color>; for (std::size_t i = 0; i != EnumTraits::size; ++i) { enum_metadata.elements()->emplace(static_cast(EnumTraits::values[i]), EnumTraits::names[i]); } } void EnumMetadata<::facebook::thrift::test::ThriftAdaptedEnum>::gen(ThriftMetadata& metadata) { auto res = metadata.enums()->emplace("module.ThriftAdaptedEnum", ::apache::thrift::metadata::ThriftEnum{}); if (!res.second) { return; } ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second; enum_metadata.name() = "module.ThriftAdaptedEnum"; using EnumTraits = TEnumTraits<::facebook::thrift::test::ThriftAdaptedEnum>; for (std::size_t i = 0; i != EnumTraits::size; ++i) { enum_metadata.elements()->emplace(static_cast(EnumTraits::values[i]), EnumTraits::names[i]); } } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::MyAnnotation>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.MyAnnotation", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_MyAnnotation = res.first->second; module_MyAnnotation.name() = "module.MyAnnotation"; module_MyAnnotation.is_union() = false; static const auto* const module_MyAnnotation_fields = new std::array{ { { 1, "signature", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ }}, { 2, "color", false, std::make_unique>("module.Color"), std::vector{ }}, }}; for (const auto& f : *module_MyAnnotation_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_MyAnnotation.fields()->push_back(std::move(field)); } module_MyAnnotation.structured_annotations()->push_back(*cvStruct("python.Adapter", { {"name", cvString("my.module.Adapter2") }, {"typeHint", cvString("my.another.module.AdaptedType2[]") } }).cv_struct_ref()); module_MyAnnotation.structured_annotations()->push_back(*cvStruct("scope.Transitive", { }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Foo>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Foo", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Foo = res.first->second; module_Foo.name() = "module.Foo"; module_Foo.is_union() = false; static const auto* const module_Foo_fields = new std::array{ { { 1, "intField", false, std::make_unique("module.i32_5137", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 2, "optionalIntField", true, std::make_unique("module.i32_5137", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 3, "intFieldWithDefault", false, std::make_unique("module.i32_5137", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 4, "setField", false, std::make_unique("module.SetWithAdapter", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }}, { 5, "optionalSetField", true, std::make_unique("module.SetWithAdapter", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }}, { 6, "mapField", false, std::make_unique("module.map_string_ListWithElemAdapter_withAdapter_8454", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique("module.ListWithElemAdapter_withAdapter_2312", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter", std::make_unique(std::make_unique("module.StringWithAdapter", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter3") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), }}, { 7, "optionalMapField", true, std::make_unique("module.map_string_ListWithElemAdapter_withAdapter_8454", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique("module.ListWithElemAdapter_withAdapter_2312", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter", std::make_unique(std::make_unique("module.StringWithAdapter", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter3") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), }}, { 8, "binaryField", false, std::make_unique("module.binary_5673", std::make_unique(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), }}, { 9, "longField", false, std::make_unique("module.MyI64", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("module.MyAnnotation", { {"signature", cvString("MyI64") }, {"color", cvInteger(2) } }).cv_struct_ref(), }), std::vector{ }}, { 10, "adaptedLongField", false, std::make_unique("module.MyI64", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("module.MyAnnotation", { {"signature", cvString("MyI64") }, {"color", cvInteger(2) } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("python.Adapter", { {"name", cvString("my.Adapter3") }, {"typeHint", cvString("my.AdaptedType3[]") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }}, { 11, "doubleAdaptedField", false, std::make_unique("module.DoubleTypedefI64", std::make_unique("module.MyI64", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("module.MyAnnotation", { {"signature", cvString("MyI64") }, {"color", cvInteger(2) } }).cv_struct_ref(), }), std::vector{ }), std::vector{ }}, }}; for (const auto& f : *module_Foo_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Foo.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Baz>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Baz", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Baz = res.first->second; module_Baz.name() = "module.Baz"; module_Baz.is_union() = true; static const auto* const module_Baz_fields = new std::array{ { { 1, "intField", false, std::make_unique("module.i32_5137", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 4, "setField", false, std::make_unique("module.SetWithAdapter", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }}, { 6, "mapField", false, std::make_unique("module.map_string_ListWithElemAdapter_withAdapter_8454", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::make_unique("module.ListWithElemAdapter_withAdapter_2312", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter_withAdapter", std::make_unique("module.ListWithElemAdapter", std::make_unique(std::make_unique("module.StringWithAdapter", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ })), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter3") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter3") } }).cv_struct_ref(), }}, { 8, "binaryField", false, std::make_unique("module.binary_5673", std::make_unique(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 9, "longField", false, std::make_unique("module.MyI64", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("module.MyAnnotation", { {"signature", cvString("MyI64") }, {"color", cvInteger(2) } }).cv_struct_ref(), }), std::vector{ }}, }}; for (const auto& f : *module_Baz_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Baz.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Bar>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Bar", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Bar = res.first->second; module_Bar.name() = "module.Bar"; module_Bar.is_union() = false; static const auto* const module_Bar_fields = new std::array{ { { 1, "structField", false, std::make_unique("module.Foo_6868", std::make_unique("module.Foo", std::make_unique>("module.Foo"), std::vector{ }), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") }, {"adaptedType", cvString("::my::Cpp::Type1") } }).cv_struct_ref(), }}, { 2, "optionalStructField", true, std::make_unique("module.Foo_3943", std::make_unique("module.Foo", std::make_unique>("module.Foo"), std::vector{ }), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 3, "structListField", false, std::make_unique(std::make_unique("module.FooWithAdapter_9317", std::make_unique("module.FooWithAdapter", std::make_unique("module.FooWithAdapter", std::make_unique>("module.Foo"), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ })), std::vector{ }}, { 4, "optionalStructListField", true, std::make_unique(std::make_unique("module.FooWithAdapter_9317", std::make_unique("module.FooWithAdapter", std::make_unique("module.FooWithAdapter", std::make_unique>("module.Foo"), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ })), std::vector{ }}, { 5, "unionField", false, std::make_unique("module.Baz_7352", std::make_unique("module.Baz", std::make_unique>("module.Baz"), std::vector{ }), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 6, "optionalUnionField", true, std::make_unique("module.Baz_7352", std::make_unique("module.Baz", std::make_unique>("module.Baz"), std::vector{ }), std::vector{ }), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }}, { 7, "adaptedStructField", false, std::make_unique>("module.DirectlyAdapted"), std::vector{ }}, }}; for (const auto& f : *module_Bar_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Bar.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::DirectlyAdapted>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.DirectlyAdapted", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_DirectlyAdapted = res.first->second; module_DirectlyAdapted.name() = "module.DirectlyAdapted"; module_DirectlyAdapted.is_union() = false; static const auto* const module_DirectlyAdapted_fields = new std::array{ { { 1, "field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }}, }}; for (const auto& f : *module_DirectlyAdapted_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_DirectlyAdapted.fields()->push_back(std::move(field)); } module_DirectlyAdapted.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter") } }).cv_struct_ref()); module_DirectlyAdapted.structured_annotations()->push_back(*cvStruct("python.Adapter", { {"name", cvString("my.module.Adapter") }, {"typeHint", cvString("my.another.module.AdaptedType") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::IndependentDirectlyAdapted>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.IndependentDirectlyAdapted", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_IndependentDirectlyAdapted = res.first->second; module_IndependentDirectlyAdapted.name() = "module.IndependentDirectlyAdapted"; module_IndependentDirectlyAdapted.is_union() = false; static const auto* const module_IndependentDirectlyAdapted_fields = new std::array{ { { 1, "field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }}, }}; for (const auto& f : *module_IndependentDirectlyAdapted_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_IndependentDirectlyAdapted.fields()->push_back(std::move(field)); } module_IndependentDirectlyAdapted.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter") }, {"adaptedType", cvString("::my::Type") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::StructWithFieldAdapter>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.StructWithFieldAdapter", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_StructWithFieldAdapter = res.first->second; module_StructWithFieldAdapter.name() = "module.StructWithFieldAdapter"; module_StructWithFieldAdapter.is_union() = false; static const auto* const module_StructWithFieldAdapter_fields = new std::array{ { { 1, "field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("python.Adapter", { {"name", cvString("my.Adapter1") }, {"typeHint", cvString("my.AdaptedType1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1<>") } }).cv_struct_ref(), }}, { 2, "shared_field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Ref", { {"type", cvInteger(1) } }).cv_struct_ref(), }}, { 3, "opt_shared_field", true, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Ref", { {"type", cvInteger(1) } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1<>") } }).cv_struct_ref(), }}, { 4, "opt_boxed_field", true, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("thrift.Box", { }).cv_struct_ref(), }}, }}; for (const auto& f : *module_StructWithFieldAdapter_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_StructWithFieldAdapter.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::TerseAdaptedFields>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.TerseAdaptedFields", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_TerseAdaptedFields = res.first->second; module_TerseAdaptedFields.name() = "module.TerseAdaptedFields"; module_TerseAdaptedFields.is_union() = false; static const auto* const module_TerseAdaptedFields_fields = new std::array{ { { 1, "int_field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("thrift.TerseWrite", { }).cv_struct_ref(), }}, { 2, "string_field", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("thrift.TerseWrite", { }).cv_struct_ref(), }}, { 3, "set_field", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("thrift.TerseWrite", { }).cv_struct_ref(), }}, }}; for (const auto& f : *module_TerseAdaptedFields_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_TerseAdaptedFields.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::B>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.B", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_B = res.first->second; module_B.name() = "module.B"; module_B.is_union() = false; static const auto* const module_B_fields = new std::array{ { { 1, "a", false, std::make_unique("module.AdaptedA", std::make_unique>("module.A"), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter") } }).cv_struct_ref(), }), std::vector{ }}, }}; for (const auto& f : *module_B_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_B.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::A>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.A", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_A = res.first->second; module_A.name() = "module.A"; module_A.is_union() = false; return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Config>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Config", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Config = res.first->second; module_Config.name() = "module.Config"; module_Config.is_union() = false; static const auto* const module_Config_fields = new std::array{ { { 1, "path", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ }}, }}; for (const auto& f : *module_Config_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Config.fields()->push_back(std::move(field)); } module_Config.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("MyVarAdapter") } }).cv_struct_ref()); module_Config.structured_annotations()->push_back(*cvStruct("python.Adapter", { {"name", cvString("my.ConfigAdapter") }, {"typeHint", cvString("my.ConfiguredVar[]") } }).cv_struct_ref()); module_Config.structured_annotations()->push_back(*cvStruct("scope.Transitive", { }).cv_struct_ref()); module_Config.structured_annotations()->push_back(*cvStruct("thrift.Experimental", { }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::MyStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.MyStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_MyStruct = res.first->second; module_MyStruct.name() = "module.MyStruct"; module_MyStruct.is_union() = false; static const auto* const module_MyStruct_fields = new std::array{ { { 1, "field", false, std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ }}, { 2, "set_string", false, std::make_unique("module.SetWithAdapter", std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE)), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter2") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }), std::vector{ }}, }}; for (const auto& f : *module_MyStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_MyStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::AdaptTestStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AdaptTestStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AdaptTestStruct = res.first->second; module_AdaptTestStruct.name() = "module.AdaptTestStruct"; module_AdaptTestStruct.is_union() = false; static const auto* const module_AdaptTestStruct_fields = new std::array{ { { 1, "delay", false, std::make_unique("module.DurationMs", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdaptTestMsAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 2, "custom", false, std::make_unique("module.CustomProtocolType", std::make_unique("module.IOBuf", std::make_unique(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector{ *cvStruct("cpp.Type", { {"name", cvString("::folly::IOBuf") } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::CustomProtocolAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 3, "timeout", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdaptTestMsAdapter") } }).cv_struct_ref(), }}, { 4, "data", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdapterWithContext") } }).cv_struct_ref(), }}, { 5, "meta", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ }}, { 6, "indirectionString", false, std::make_unique("module.IndirectionString", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::IndirectionAdapter<::apache::thrift::test::IndirectionString>") } }).cv_struct_ref(), }), std::vector{ }}, { 7, "string_data", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdapterWithContext") } }).cv_struct_ref(), }}, { 8, "double_wrapped_bool", false, std::make_unique("module.AdaptedBool", std::make_unique(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }}, { 9, "double_wrapped_integer", false, std::make_unique("module.AdaptedInteger", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdapterWithContext") } }).cv_struct_ref(), }}, { 10, "binary_data", false, std::make_unique(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdapterWithContext") } }).cv_struct_ref(), }}, }}; for (const auto& f : *module_AdaptTestStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AdaptTestStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::AdaptTemplatedTestStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AdaptTemplatedTestStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AdaptTemplatedTestStruct = res.first->second; module_AdaptTemplatedTestStruct.name() = "module.AdaptTemplatedTestStruct"; module_AdaptTemplatedTestStruct.is_union() = false; static const auto* const module_AdaptTemplatedTestStruct_fields = new std::array{ { { 1, "adaptedBool", false, std::make_unique("module.AdaptedBool", std::make_unique(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 2, "adaptedByte", false, std::make_unique("module.AdaptedByte", std::make_unique(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 3, "adaptedShort", false, std::make_unique("module.AdaptedShort", std::make_unique(ThriftPrimitiveType::THRIFT_I16_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 4, "adaptedInteger", false, std::make_unique("module.AdaptedInteger", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 5, "adaptedLong", false, std::make_unique("module.AdaptedLong", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 6, "adaptedDouble", false, std::make_unique("module.AdaptedDouble", std::make_unique(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 7, "adaptedString", false, std::make_unique("module.AdaptedString", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 8, "adaptedList", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }}, { 9, "adaptedSet", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }}, { 10, "adaptedMap", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }}, { 11, "adaptedBoolDefault", false, std::make_unique("module.AdaptedBool", std::make_unique(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 12, "adaptedByteDefault", false, std::make_unique("module.AdaptedByte", std::make_unique(ThriftPrimitiveType::THRIFT_BYTE_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 13, "adaptedShortDefault", false, std::make_unique("module.AdaptedShort", std::make_unique(ThriftPrimitiveType::THRIFT_I16_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 14, "adaptedIntegerDefault", false, std::make_unique("module.AdaptedInteger", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 15, "adaptedLongDefault", false, std::make_unique("module.AdaptedLong", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 16, "adaptedDoubleDefault", false, std::make_unique("module.AdaptedDouble", std::make_unique(ThriftPrimitiveType::THRIFT_DOUBLE_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 17, "adaptedStringDefault", false, std::make_unique("module.AdaptedString", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 18, "adaptedEnum", false, std::make_unique("module.AdaptedEnum", std::make_unique>("module.ThriftAdaptedEnum"), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::StaticCastAdapter<::apache::thrift::test::basic::AdaptedEnum, ::apache::thrift::test::basic::ThriftAdaptedEnum>") } }).cv_struct_ref(), }), std::vector{ }}, { 19, "adaptedListDefault", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::fbthrift_adapters::test::TestAdapter") } }).cv_struct_ref(), }}, { 20, "adaptedSetDefault", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::fbthrift_adapters::test::TestAdapter") } }).cv_struct_ref(), }}, { 21, "adaptedMapDefault", false, std::make_unique(std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE)), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::fbthrift_adapters::test::TestAdapter") } }).cv_struct_ref(), }}, { 22, "doubleTypedefBool", false, std::make_unique("module.DoubleTypedefBool", std::make_unique("module.AdaptedBool", std::make_unique(ThriftPrimitiveType::THRIFT_BOOL_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ }}, }}; for (const auto& f : *module_AdaptTemplatedTestStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AdaptTemplatedTestStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::AdaptTemplatedNestedTestStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AdaptTemplatedNestedTestStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AdaptTemplatedNestedTestStruct = res.first->second; module_AdaptTemplatedNestedTestStruct.name() = "module.AdaptTemplatedNestedTestStruct"; module_AdaptTemplatedNestedTestStruct.is_union() = false; static const auto* const module_AdaptTemplatedNestedTestStruct_fields = new std::array{ { { 1, "adaptedStruct", false, std::make_unique>("module.AdaptTemplatedTestStruct"), std::vector{ }}, }}; for (const auto& f : *module_AdaptTemplatedNestedTestStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AdaptTemplatedNestedTestStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::ThriftAdaptTestUnion>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AdaptTestUnion", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AdaptTestUnion = res.first->second; module_AdaptTestUnion.name() = "module.AdaptTestUnion"; module_AdaptTestUnion.is_union() = true; static const auto* const module_AdaptTestUnion_fields = new std::array{ { { 1, "delay", false, std::make_unique("module.DurationMs", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::AdaptTestMsAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 2, "custom", false, std::make_unique("module.CustomProtocolType", std::make_unique("module.IOBuf", std::make_unique(ThriftPrimitiveType::THRIFT_BINARY_TYPE), std::vector{ *cvStruct("cpp.Type", { {"name", cvString("::folly::IOBuf") } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::CustomProtocolAdapter") } }).cv_struct_ref(), }), std::vector{ }}, }}; for (const auto& f : *module_AdaptTestUnion_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AdaptTestUnion.fields()->push_back(std::move(field)); } module_AdaptTestUnion.structured_annotations()->push_back(*cvStruct("cpp.Name", { {"value", cvString("ThriftAdaptTestUnion") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::ThriftAdaptedStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AdaptedStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AdaptedStruct = res.first->second; module_AdaptedStruct.name() = "module.AdaptedStruct"; module_AdaptedStruct.is_union() = false; static const auto* const module_AdaptedStruct_fields = new std::array{ { { 1, "data", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ }}, }}; for (const auto& f : *module_AdaptedStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AdaptedStruct.fields()->push_back(std::move(field)); } module_AdaptedStruct.structured_annotations()->push_back(*cvStruct("cpp.Name", { {"value", cvString("ThriftAdaptedStruct") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::DirectlyAdaptedStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.DirectlyAdaptedStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_DirectlyAdaptedStruct = res.first->second; module_DirectlyAdaptedStruct.name() = "module.DirectlyAdaptedStruct"; module_DirectlyAdaptedStruct.is_union() = false; static const auto* const module_DirectlyAdaptedStruct_fields = new std::array{ { { 1, "data", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ }}, }}; for (const auto& f : *module_DirectlyAdaptedStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_DirectlyAdaptedStruct.fields()->push_back(std::move(field)); } module_DirectlyAdaptedStruct.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::StructFieldAdaptedStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.StructFieldAdaptedStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_StructFieldAdaptedStruct = res.first->second; module_StructFieldAdaptedStruct.name() = "module.StructFieldAdaptedStruct"; module_StructFieldAdaptedStruct.is_union() = false; static const auto* const module_StructFieldAdaptedStruct_fields = new std::array{ { { 1, "adaptedStruct", false, std::make_unique>("module.AdaptedStruct"), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }}, { 2, "adaptedTypedef", false, std::make_unique("module.AdaptedTypedef", std::make_unique>("module.AdaptedStruct"), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 3, "directlyAdapted", false, std::make_unique>("module.DirectlyAdaptedStruct"), std::vector{ }}, { 4, "typedefOfAdapted", false, std::make_unique("module.TypedefOfDirect", std::make_unique>("module.DirectlyAdaptedStruct"), std::vector{ }), std::vector{ }}, }}; for (const auto& f : *module_StructFieldAdaptedStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_StructFieldAdaptedStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::CircularAdaptee>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.CircularAdaptee", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_CircularAdaptee = res.first->second; module_CircularAdaptee.name() = "module.CircularAdaptee"; module_CircularAdaptee.is_union() = false; static const auto* const module_CircularAdaptee_fields = new std::array{ { { 1, "field", false, std::make_unique>("module.CircularStruct"), std::vector{ }}, }}; for (const auto& f : *module_CircularAdaptee_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_CircularAdaptee.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::CircularStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.CircularStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_CircularStruct = res.first->second; module_CircularStruct.name() = "module.CircularStruct"; module_CircularStruct.is_union() = false; static const auto* const module_CircularStruct_fields = new std::array{ { { 1, "field", true, std::make_unique("module.AdaptedCircularAdaptee", std::make_unique>("module.CircularAdaptee"), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::MemberAccessAdapter") }, {"adaptedType", cvString("::apache::thrift::test::TaggedWrapper") } }).cv_struct_ref(), }), std::vector{ *cvStruct("cpp.Ref", { {"type", cvInteger(0) } }).cv_struct_ref(), }}, }}; for (const auto& f : *module_CircularStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_CircularStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::ReorderedStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.ReorderedStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_ReorderedStruct = res.first->second; module_ReorderedStruct.name() = "module.ReorderedStruct"; module_ReorderedStruct.is_union() = false; static const auto* const module_ReorderedStruct_fields = new std::array{ { { 1, "reordered_dependent_adapted", false, std::make_unique>("module.DeclaredAfterStruct"), std::vector{ *cvStruct("cpp.Ref", { {"type", cvInteger(0) } }).cv_struct_ref(), }}, }}; for (const auto& f : *module_ReorderedStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_ReorderedStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::DeclaredAfterStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.DeclaredAfterStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_DeclaredAfterStruct = res.first->second; module_DeclaredAfterStruct.name() = "module.DeclaredAfterStruct"; module_DeclaredAfterStruct.is_union() = false; module_DeclaredAfterStruct.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::IdentityAdapter") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::UnderlyingRenamedStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.RenamedStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_RenamedStruct = res.first->second; module_RenamedStruct.name() = "module.RenamedStruct"; module_RenamedStruct.is_union() = false; static const auto* const module_RenamedStruct_fields = new std::array{ { { 1, "data", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ }}, }}; for (const auto& f : *module_RenamedStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_RenamedStruct.fields()->push_back(std::move(field)); } module_RenamedStruct.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") }, {"underlyingName", cvString("UnderlyingRenamedStruct") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::UnderlyingSameNamespaceStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.SameNamespaceStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_SameNamespaceStruct = res.first->second; module_SameNamespaceStruct.name() = "module.SameNamespaceStruct"; module_SameNamespaceStruct.is_union() = false; static const auto* const module_SameNamespaceStruct_fields = new std::array{ { { 1, "data", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ }}, }}; for (const auto& f : *module_SameNamespaceStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_SameNamespaceStruct.fields()->push_back(std::move(field)); } module_SameNamespaceStruct.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") }, {"underlyingName", cvString("UnderlyingSameNamespaceStruct") }, {"extraNamespace", cvString("") } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::HeapAllocated>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.HeapAllocated", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_HeapAllocated = res.first->second; module_HeapAllocated.name() = "module.HeapAllocated"; module_HeapAllocated.is_union() = false; module_HeapAllocated.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::MoveOnlyAdapter") }, {"moveOnly", cvBool(true) } }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::MoveOnly>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.MoveOnly", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_MoveOnly = res.first->second; module_MoveOnly.name() = "module.MoveOnly"; module_MoveOnly.is_union() = false; static const auto* const module_MoveOnly_fields = new std::array{ { { 1, "ptr", false, std::make_unique>("module.HeapAllocated"), std::vector{ }}, }}; for (const auto& f : *module_MoveOnly_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_MoveOnly.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::AlsoMoveOnly>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.AlsoMoveOnly", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_AlsoMoveOnly = res.first->second; module_AlsoMoveOnly.name() = "module.AlsoMoveOnly"; module_AlsoMoveOnly.is_union() = false; static const auto* const module_AlsoMoveOnly_fields = new std::array{ { { 1, "ptr", false, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::MoveOnlyAdapter") }, {"moveOnly", cvBool(true) } }).cv_struct_ref(), }}, }}; for (const auto& f : *module_AlsoMoveOnly_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_AlsoMoveOnly.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::ApplyAdapter>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.ApplyAdapter", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_ApplyAdapter = res.first->second; module_ApplyAdapter.name() = "module.ApplyAdapter"; module_ApplyAdapter.is_union() = false; module_ApplyAdapter.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::TemplatedTestAdapter") } }).cv_struct_ref()); module_ApplyAdapter.structured_annotations()->push_back(*cvStruct("scope.Transitive", { }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::detail::TransitiveAdapted>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.TransitiveAdapted", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_TransitiveAdapted = res.first->second; module_TransitiveAdapted.name() = "module.TransitiveAdapted"; module_TransitiveAdapted.is_union() = false; module_TransitiveAdapted.structured_annotations()->push_back(*cvStruct("module.ApplyAdapter", { }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::CountingStruct>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.CountingStruct", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_CountingStruct = res.first->second; module_CountingStruct.name() = "module.CountingStruct"; module_CountingStruct.is_union() = false; static const auto* const module_CountingStruct_fields = new std::array{ { { 1, "regularInt", true, std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::CountingAdapter") } }).cv_struct_ref(), }}, { 2, "countingInt", true, std::make_unique("module.CountingInt", std::make_unique(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::CountingAdapter") } }).cv_struct_ref(), }), std::vector{ }}, { 3, "regularString", true, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::CountingAdapter") } }).cv_struct_ref(), }}, }}; for (const auto& f : *module_CountingStruct_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_CountingStruct.fields()->push_back(std::move(field)); } return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Person>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Person", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Person = res.first->second; module_Person.name() = "module.Person"; module_Person.is_union() = false; static const auto* const module_Person_fields = new std::array{ { { 1, "name", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ }}, }}; for (const auto& f : *module_Person_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Person.fields()->push_back(std::move(field)); } module_Person.structured_annotations()->push_back(*cvStruct("cpp.Adapter", { {"name", cvString("::apache::thrift::test::VariableAdapter") } }).cv_struct_ref()); module_Person.structured_annotations()->push_back(*cvStruct("scope.Transitive", { }).cv_struct_ref()); return res.first->second; } const ::apache::thrift::metadata::ThriftStruct& StructMetadata<::facebook::thrift::test::Person2>::gen(ThriftMetadata& metadata) { auto res = metadata.structs()->emplace("module.Person2", ::apache::thrift::metadata::ThriftStruct{}); if (!res.second) { return res.first->second; } ::apache::thrift::metadata::ThriftStruct& module_Person2 = res.first->second; module_Person2.name() = "module.Person2"; module_Person2.is_union() = false; static const auto* const module_Person2_fields = new std::array{ { { 1, "name", false, std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ }}, }}; for (const auto& f : *module_Person2_fields) { ::apache::thrift::metadata::ThriftField field; field.id() = f.id; field.name() = f.name; field.is_optional() = f.is_optional; f.metadata_type_interface->writeAndGenType(*field.type(), metadata); field.structured_annotations() = f.structured_annotations; module_Person2.fields()->push_back(std::move(field)); } return res.first->second; } void ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::Service>>::gen_func([[maybe_unused]] ThriftMetadata& metadata, ThriftService& service) { ::apache::thrift::metadata::ThriftFunction func; func.name() = "func"; auto func_ret_type = std::make_unique("module.MyI32_4873", std::make_unique("module.MyI32", std::make_unique("module.MyI32", std::make_unique(ThriftPrimitiveType::THRIFT_I32_TYPE), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ }); func_ret_type->writeAndGenType(*func.return_type(), metadata); ::apache::thrift::metadata::ThriftField module_Service_func_arg1_1; module_Service_func_arg1_1.id() = 1; module_Service_func_arg1_1.name() = "arg1"; module_Service_func_arg1_1.is_optional() = false; auto module_Service_func_arg1_1_type = std::make_unique("module.StringWithAdapter_7208", std::make_unique("module.StringWithAdapter", std::make_unique("module.StringWithAdapter", std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector{ *cvStruct("hack.Adapter", { {"name", cvString("\\Adapter1") } }).cv_struct_ref(), *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), *cvStruct("rust.Adapter", { {"name", cvString("::my::Adapter1") } }).cv_struct_ref(), }), std::vector{ }), std::vector{ }); module_Service_func_arg1_1_type->writeAndGenType(*module_Service_func_arg1_1.type(), metadata); func.arguments()->push_back(std::move(module_Service_func_arg1_1)); ::apache::thrift::metadata::ThriftField module_Service_func_arg2_2; module_Service_func_arg2_2.id() = 2; module_Service_func_arg2_2.name() = "arg2"; module_Service_func_arg2_2.is_optional() = false; module_Service_func_arg2_2.structured_annotations() = { *cvStruct("cpp.Adapter", { {"name", cvString("::my::Adapter2") } }).cv_struct_ref(), }; auto module_Service_func_arg2_2_type = std::make_unique(ThriftPrimitiveType::THRIFT_STRING_TYPE); module_Service_func_arg2_2_type->writeAndGenType(*module_Service_func_arg2_2.type(), metadata); func.arguments()->push_back(std::move(module_Service_func_arg2_2)); ::apache::thrift::metadata::ThriftField module_Service_func_arg3_3; module_Service_func_arg3_3.id() = 3; module_Service_func_arg3_3.name() = "arg3"; module_Service_func_arg3_3.is_optional() = false; auto module_Service_func_arg3_3_type = std::make_unique>("module.Foo"); module_Service_func_arg3_3_type->writeAndGenType(*module_Service_func_arg3_3.type(), metadata); func.arguments()->push_back(std::move(module_Service_func_arg3_3)); func.is_oneway() = false; service.functions()->push_back(std::move(func)); } void ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::Service>>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) { const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata(), *response.services()); DCHECK(self != nullptr); // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata. ::apache::thrift::metadata::ThriftServiceContext context; context.module() = *self->module(); context.service_info() = response.metadata()->services()->at(*self->service_name()); response.context() = std::move(context); } const ThriftServiceContextRef* ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::Service>>::genRecurse([[maybe_unused]] ThriftMetadata& metadata, std::vector& services) { ::apache::thrift::metadata::ThriftService module_Service; module_Service.name() = "module.Service"; static const ThriftFunctionGenerator functions[] = { ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::Service>>::gen_func, }; for (auto& function_gen : functions) { function_gen(metadata, module_Service); } // We need to keep the index around because a reference or iterator could be invalidated. auto selfIndex = services.size(); services.emplace_back(); ThriftServiceContextRef& context = services[selfIndex]; metadata.services()->emplace("module.Service", std::move(module_Service)); context.service_name() = "module.Service"; ::apache::thrift::metadata::ThriftModuleContext module; module.name() = "module"; context.module() = std::move(module); return &context; } void ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::gen_count([[maybe_unused]] ThriftMetadata& metadata, ThriftService& service) { ::apache::thrift::metadata::ThriftFunction func; func.name() = "count"; auto func_ret_type = std::make_unique>("module.CountingStruct"); func_ret_type->writeAndGenType(*func.return_type(), metadata); func.is_oneway() = false; service.functions()->push_back(std::move(func)); } void ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::gen_adaptedTypes([[maybe_unused]] ThriftMetadata& metadata, ThriftService& service) { ::apache::thrift::metadata::ThriftFunction func; func.name() = "adaptedTypes"; auto func_ret_type = std::make_unique>("module.HeapAllocated"); func_ret_type->writeAndGenType(*func.return_type(), metadata); ::apache::thrift::metadata::ThriftField module_AdapterService_adaptedTypes_arg_1; module_AdapterService_adaptedTypes_arg_1.id() = 1; module_AdapterService_adaptedTypes_arg_1.name() = "arg"; module_AdapterService_adaptedTypes_arg_1.is_optional() = false; auto module_AdapterService_adaptedTypes_arg_1_type = std::make_unique>("module.HeapAllocated"); module_AdapterService_adaptedTypes_arg_1_type->writeAndGenType(*module_AdapterService_adaptedTypes_arg_1.type(), metadata); func.arguments()->push_back(std::move(module_AdapterService_adaptedTypes_arg_1)); func.is_oneway() = false; service.functions()->push_back(std::move(func)); } void ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) { const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata(), *response.services()); DCHECK(self != nullptr); // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata. ::apache::thrift::metadata::ThriftServiceContext context; context.module() = *self->module(); context.service_info() = response.metadata()->services()->at(*self->service_name()); response.context() = std::move(context); } const ThriftServiceContextRef* ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::genRecurse([[maybe_unused]] ThriftMetadata& metadata, std::vector& services) { ::apache::thrift::metadata::ThriftService module_AdapterService; module_AdapterService.name() = "module.AdapterService"; static const ThriftFunctionGenerator functions[] = { ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::gen_count, ServiceMetadata<::apache::thrift::ServiceHandler<::facebook::thrift::test::AdapterService>>::gen_adaptedTypes, }; for (auto& function_gen : functions) { function_gen(metadata, module_AdapterService); } // We need to keep the index around because a reference or iterator could be invalidated. auto selfIndex = services.size(); services.emplace_back(); ThriftServiceContextRef& context = services[selfIndex]; metadata.services()->emplace("module.AdapterService", std::move(module_AdapterService)); context.service_name() = "module.AdapterService"; ::apache::thrift::metadata::ThriftModuleContext module; module.name() = "module"; context.module() = std::move(module); return &context; } } // namespace md } // namespace detail } // namespace thrift } // namespace apache