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

#pragma once

#include <thrift/lib/cpp2/gen/module_types_h.h>

namespace apache::thrift {
namespace ident {
struct name;
struct tag;
} // namespace ident
namespace detail {
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_tag
#define APACHE_THRIFT_ACCESSOR_tag
APACHE_THRIFT_DEFINE_ACCESSOR(tag);
#endif
} // namespace detail
} // namespace apache::thrift

// BEGIN declare_enums
// END declare_enums
// BEGIN forward_declare
namespace facebook::thrift::annotation::go {
class Name;
class Tag;
class MinimizePadding;
class UseReflectCodec;
} // namespace facebook::thrift::annotation::go
// END forward_declare
namespace apache::thrift::detail::annotation {
} // namespace apache::thrift::detail::annotation

namespace apache::thrift::detail::qualifier {
} // namespace apache::thrift::detail::qualifier

// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace facebook::thrift::annotation::go {
using ::apache::thrift::detail::operator!=;
using ::apache::thrift::detail::operator>;
using ::apache::thrift::detail::operator<=;
using ::apache::thrift::detail::operator>=;


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/go.thrift", "name": "Name", "kind": "struct" } */
class Name final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/go/Name";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "go";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Name;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Name();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Name(apache::thrift::FragileConstructor, ::std::string name__arg);

  Name(Name&&) noexcept;

  Name(const Name& src);


  Name& operator=(Name&&) noexcept;
  Name& operator=(const Name& src);

  ~Name();

 private:
  ::std::string __fbthrift_field_name;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Name&) const;
  bool operator<(const Name&) const;

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::std::string& get_name() const& {
    return __fbthrift_field_name;
  }

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::std::string get_name() && {
    return static_cast<::std::string&&>(__fbthrift_field_name);
  }

  /** Glean { "field": "name" } */
  template <typename T_Name_name_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::std::string& set_name(T_Name_name_struct_setter&& name_) {
    name_ref() = std::forward<T_Name_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Name>;
  friend void swap(Name& a, Name& b);
};

template <class Protocol_>
unsigned long Name::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/go.thrift", "name": "Tag", "kind": "struct" } */
class Tag final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/go/Tag";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "go";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::tag
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Tag;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  Tag();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Tag(apache::thrift::FragileConstructor, ::std::string tag__arg);

  Tag(Tag&&) noexcept;

  Tag(const Tag& src);


  Tag& operator=(Tag&&) noexcept;
  Tag& operator=(const Tag& src);

  ~Tag();

 private:
  ::std::string __fbthrift_field_tag;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Tag&) const;
  bool operator<(const Tag&) const;

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> tag_ref() const& {
    return {this->__fbthrift_field_tag, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> tag_ref() & {
    return {this->__fbthrift_field_tag, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> tag_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_tag), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> tag() const& {
    return {this->__fbthrift_field_tag, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> tag() & {
    return {this->__fbthrift_field_tag, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> tag() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_tag), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "tag" } */
  [[deprecated("Use `FOO.tag().value()` instead of `FOO.get_tag()`")]]
  const ::std::string& get_tag() const& {
    return __fbthrift_field_tag;
  }

  /** Glean { "field": "tag" } */
  [[deprecated("Use `FOO.tag().value()` instead of `FOO.get_tag()`")]]
  ::std::string get_tag() && {
    return static_cast<::std::string&&>(__fbthrift_field_tag);
  }

  /** Glean { "field": "tag" } */
  template <typename T_Tag_tag_struct_setter = ::std::string>
  [[deprecated("Use `FOO.tag() = BAR` instead of `FOO.set_tag(BAR)`")]]
  ::std::string& set_tag(T_Tag_tag_struct_setter&& tag_) {
    tag_ref() = std::forward<T_Tag_tag_struct_setter>(tag_);
    return __fbthrift_field_tag;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Tag>;
  friend void swap(Tag& a, Tag& b);
};

template <class Protocol_>
unsigned long Tag::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/go.thrift", "name": "MinimizePadding", "kind": "struct" } */
class MinimizePadding final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/go/MinimizePadding";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "go";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = MinimizePadding;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  MinimizePadding() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  MinimizePadding(apache::thrift::FragileConstructor);

  MinimizePadding(MinimizePadding&&) = default;

  MinimizePadding(const MinimizePadding&) = default;


  MinimizePadding& operator=(MinimizePadding&&) = default;

  MinimizePadding& operator=(const MinimizePadding&) = default;

 public:

  bool operator==(const MinimizePadding&) const;
  bool operator<(const MinimizePadding&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<MinimizePadding>;
  friend void swap(MinimizePadding& a, MinimizePadding& b);
};

template <class Protocol_>
unsigned long MinimizePadding::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.12.15.00/thrift/annotation/go.thrift", "name": "UseReflectCodec", "kind": "struct" } */
class UseReflectCodec final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = false;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static constexpr folly::cstring_view __fbthrift_thrift_uri = "facebook.com/thrift/annotation/go/UseReflectCodec";
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "go";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = UseReflectCodec;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;


 public:

  UseReflectCodec() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  UseReflectCodec(apache::thrift::FragileConstructor);

  UseReflectCodec(UseReflectCodec&&) = default;

  UseReflectCodec(const UseReflectCodec&) = default;


  UseReflectCodec& operator=(UseReflectCodec&&) = default;

  UseReflectCodec& operator=(const UseReflectCodec&) = default;

 public:

  bool operator==(const UseReflectCodec&) const;
  bool operator<(const UseReflectCodec&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<UseReflectCodec>;
  friend void swap(UseReflectCodec& a, UseReflectCodec& b);
};

template <class Protocol_>
unsigned long UseReflectCodec::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


} // namespace facebook::thrift::annotation::go

namespace apache::thrift::detail {
template <> struct TSchemaAssociation<::facebook::thrift::annotation::go::Name, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 2821754607911973766;
  static constexpr ::std::string_view definitionKey = {"\xd0\x5f\x16\xb0\x9f\x35\x68\x82\xec\x98\xb4\xd4\x0f\xe2\xc8\x6c", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::go::Tag, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 2821754607911973766;
  static constexpr ::std::string_view definitionKey = {"\x0e\xd9\x46\x78\x59\x14\x1f\x8f\x14\x68\xdf\x53\x51\xe0\x15\x42", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::go::MinimizePadding, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 2821754607911973766;
  static constexpr ::std::string_view definitionKey = {"\xbf\x6f\xaa\x0b\xf5\x56\x42\x09\x32\x8c\x24\x13\xe2\xc5\xf0\xee", 16};
};
template <> struct TSchemaAssociation<::facebook::thrift::annotation::go::UseReflectCodec, false> {
  static constexpr ::folly::Range<const ::std::string_view*>(*bundle)() = nullptr;
  static constexpr int64_t programId = 2821754607911973766;
  static constexpr ::std::string_view definitionKey = {"\x39\x7c\x7d\xc6\x05\xcc\x67\xff\x3c\xf2\x26\xb4\x00\xc6\xfd\xcc", 16};
};
} // namespace apache::thrift::detail
