/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/lib/thrift/schema.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated @nocommit
 */
#pragma once

#include "thrift/lib/thrift/gen-cpp2/schema_metadata.h"
#include <thrift/lib/cpp2/visitation/for_each.h>

namespace apache {
namespace thrift {
namespace detail {

template <>
struct ForEachField<::apache::thrift::type::Annotation> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).fields_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::StructuredAnnotation> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).type_ref()...);
    f(1, static_cast<T&&>(t).fields_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::DecodedUri> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).scheme_ref()...);
    f(1, static_cast<T&&>(t).domain_ref()...);
    f(2, static_cast<T&&>(t).path_ref()...);
    f(3, static_cast<T&&>(t).query_ref()...);
    f(4, static_cast<T&&>(t).fragment_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::DefinitionAttrs> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).name_ref()...);
    f(1, static_cast<T&&>(t).uri_ref()...);
    f(2, static_cast<T&&>(t).structuredAnnotations_ref()...);
    f(3, static_cast<T&&>(t).annotations_ref()...);
    f(4, static_cast<T&&>(t).annotationsByKey_ref()...);
    f(5, static_cast<T&&>(t).unstructuredAnnotations_ref()...);
    f(6, static_cast<T&&>(t).docs_ref()...);
    f(7, static_cast<T&&>(t).sourceRange_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::SourceRange> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).programId_ref()...);
    f(1, static_cast<T&&>(t).beginLine_ref()...);
    f(2, static_cast<T&&>(t).beginColumn_ref()...);
    f(3, static_cast<T&&>(t).endLine_ref()...);
    f(4, static_cast<T&&>(t).endColumn_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::DocBlock> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).contents_ref()...);
    f(1, static_cast<T&&>(t).sourceRange_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::InterfaceRef> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).uri_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::EnumValue> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).value_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Enum> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).values_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Field> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).id_ref()...);
    f(1, static_cast<T&&>(t).qualifier_ref()...);
    f(2, static_cast<T&&>(t).type_ref()...);
    f(3, static_cast<T&&>(t).attrs_ref()...);
    f(4, static_cast<T&&>(t).customDefault_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Struct> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).fields_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Union> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).fields_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Exception> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).fields_ref()...);
    f(2, static_cast<T&&>(t).safety_ref()...);
    f(3, static_cast<T&&>(t).kind_ref()...);
    f(4, static_cast<T&&>(t).blame_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Paramlist> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).fields_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Stream> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).payload_ref()...);
    f(1, static_cast<T&&>(t).exceptions_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Sink> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).payload_ref()...);
    f(1, static_cast<T&&>(t).clientExceptions_ref()...);
    f(2, static_cast<T&&>(t).finalResponse_ref()...);
    f(3, static_cast<T&&>(t).serverExceptions_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Interaction> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).functions_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::ReturnType> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).thriftType_ref()...);
    f(1, static_cast<T&&>(t).streamType_ref()...);
    f(2, static_cast<T&&>(t).sinkType_ref()...);
    f(3, static_cast<T&&>(t).interactionType_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Function> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).qualifier_ref()...);
    f(1, static_cast<T&&>(t).returnTypes_ref()...);
    f(2, static_cast<T&&>(t).attrs_ref()...);
    f(3, static_cast<T&&>(t).paramlist_ref()...);
    f(4, static_cast<T&&>(t).exceptions_ref()...);
    f(5, static_cast<T&&>(t).returnType_ref()...);
    f(6, static_cast<T&&>(t).streamOrSink_ref()...);
    f(7, static_cast<T&&>(t).interactionType_ref()...);
    f(8, static_cast<T&&>(t).isPerforms_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Service> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).functions_ref()...);
    f(2, static_cast<T&&>(t).baseService_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Const> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).type_ref()...);
    f(2, static_cast<T&&>(t).value_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Typedef> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).type_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Definition> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).structDef_ref()...);
    f(1, static_cast<T&&>(t).unionDef_ref()...);
    f(2, static_cast<T&&>(t).exceptionDef_ref()...);
    f(3, static_cast<T&&>(t).enumDef_ref()...);
    f(4, static_cast<T&&>(t).typedefDef_ref()...);
    f(5, static_cast<T&&>(t).constDef_ref()...);
    f(6, static_cast<T&&>(t).serviceDef_ref()...);
    f(7, static_cast<T&&>(t).interactionDef_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Program> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).attrs_ref()...);
    f(1, static_cast<T&&>(t).id_ref()...);
    f(2, static_cast<T&&>(t).includes_ref()...);
    f(3, static_cast<T&&>(t).definitions_ref()...);
    f(4, static_cast<T&&>(t).definitionKeys_ref()...);
    f(5, static_cast<T&&>(t).path_ref()...);
    f(6, static_cast<T&&>(t).languageIncludes_ref()...);
    f(7, static_cast<T&&>(t).namespaces_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::Schema> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).programs_ref()...);
    f(1, static_cast<T&&>(t).values_ref()...);
    f(2, static_cast<T&&>(t).valuesMap_ref()...);
    f(3, static_cast<T&&>(t).definitions_ref()...);
    f(4, static_cast<T&&>(t).definitionsMap_ref()...);
    f(5, static_cast<T&&>(t).sources_ref()...);
    f(6, static_cast<T&&>(t).identifierSourceRanges_ref()...);
    f(7, static_cast<T&&>(t).includeSourceRanges_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::SourceInfo> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).fileName_ref()...);
    f(1, static_cast<T&&>(t).languageIncludes_ref()...);
    f(2, static_cast<T&&>(t).namespaces_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::IdentifierRef> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).range_ref()...);
    f(1, static_cast<T&&>(t).uri_ref()...);
    f(2, static_cast<T&&>(t).enumValue_ref()...);
  }
};

template <>
struct ForEachField<::apache::thrift::type::IncludeRef> {
  template <typename F, typename... T>
  void operator()([[maybe_unused]] F&& f, [[maybe_unused]] T&&... t) const {
    f(0, static_cast<T&&>(t).range_ref()...);
    f(1, static_cast<T&&>(t).target_ref()...);
  }
};
} // namespace detail
} // namespace thrift
} // namespace apache
