/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.04.00/thrift/lib/thrift/type.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>
#include "thrift/lib/thrift/gen-cpp2/type_rep_types.h"
#include <thrift/lib/cpp2/type/BaseType.h>
#include <thrift/lib/cpp2/type/Protocol.h>
#include <thrift/lib/cpp2/type/Type.h>

// BEGIN declare_enums
namespace apache::thrift::type {

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.04.00/thrift/lib/thrift/type.thrift", "name": "BaseTypeEnum", "kind": "enum" } */
enum class BaseTypeEnum {
  Void = 0,
  Bool = 1,
  Byte = 2,
  I16 = 3,
  I32 = 4,
  I64 = 5,
  Float = 6,
  Double = 7,
  String = 8,
  Binary = 9,
  Enum = 10,
  Struct = 11,
  Union = 12,
  Exception = 13,
  List = 14,
  Set = 15,
  Map = 16,
};

} // namespace apache::thrift::type

template<> struct std::hash<::apache::thrift::type::BaseTypeEnum> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::type::BaseTypeEnum> {};

namespace apache::thrift {

template <> struct TEnumTraits<::apache::thrift::type::BaseTypeEnum> {
  using type = ::apache::thrift::type::BaseTypeEnum;

  static constexpr std::size_t const size = 17;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "BaseTypeEnum";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "type";
  }

  FOLLY_ERASE static constexpr std::string_view __fbthrift_thrift_uri() noexcept {
    return "facebook.com/thrift/type/BaseTypeEnum";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::Void; }
  static constexpr type max() { return type::Map; }
};

} // namespace apache::thrift
// END declare_enums
// BEGIN forward_declare
// 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 apache::thrift::type {
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.08.04.00/thrift/lib/thrift/type.thrift", "name": "BaseType", "kind": "typedef" } */
using BaseType = ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::StaticCastAdapter<::apache::thrift::type::BaseType, ::apache::thrift::type::BaseTypeEnum>, ::apache::thrift::type::BaseTypeEnum>;
/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.04.00/thrift/lib/thrift/type.thrift", "name": "Protocol", "kind": "typedef" } */
using Protocol = ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::InlineAdapter<::apache::thrift::type::Protocol>, ::apache::thrift::type::ProtocolUnion>;
/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.04.00/thrift/lib/thrift/type.thrift", "name": "Type", "kind": "typedef" } */
using Type = ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::InlineAdapter<::apache::thrift::type::Type>, ::apache::thrift::type::TypeStruct>;
/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.04.00/thrift/lib/thrift/type.thrift", "name": "TypeList", "kind": "typedef" } */
using TypeList = ::std::vector<::apache::thrift::type::TypeStruct>;

} // namespace apache::thrift::type

namespace apache::thrift::detail {
template <> struct TSchemaAssociation<::apache::thrift::type::BaseTypeEnum, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 2083638719225300506;
  static constexpr ::std::string_view definitionKey = {"\xf2\x3a\x56\xd3\xab\xce\xc5\x40\x95\xbc\x73\x88\xfa\x2b\x06\xf5", 16};
};
} // namespace apache::thrift::detail
