/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_fbthrift/fbthrift/work/fbthrift-2022.08.08.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/cpp2/type/Tag.h>

#include "thrift/lib/thrift/gen-cpp2/type_rep_types.h"
#include "thrift/annotation/gen-cpp2/cpp_types.h"
#include "thrift/annotation/gen-cpp2/thrift_types.h"
#include <thrift/lib/cpp2/type/BaseType.h>
#include <thrift/lib/cpp2/type/Protocol.h>
#include <thrift/lib/cpp2/type/Type.h>
#include <thrift/lib/cpp2/type/UniversalHashAlgorithm.h>

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

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,
};



enum class UniversalHashAlgorithmEnum {
  Sha2_256 = 2,
};



}}} // apache::thrift::type

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

namespace apache { namespace thrift {


template <> struct TEnumDataStorage<::apache::thrift::type::BaseTypeEnum>;

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<folly::StringPiece const*> const names;

  static bool findName(type value, folly::StringPiece* out) noexcept;
  static bool findValue(folly::StringPiece name, type* out) noexcept;

#if FOLLY_HAS_STRING_VIEW
  static bool findName(type value, std::string_view* out) noexcept {
    folly::StringPiece outp;
    return findName(value, &outp) && ((*out = outp), true);
  }
#endif
  static char const* findName(type value) noexcept {
    folly::StringPiece ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::Void; }
  static constexpr type max() { return type::Map; }
};


template <> struct TEnumDataStorage<::apache::thrift::type::UniversalHashAlgorithmEnum>;

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

  static constexpr std::size_t const size = 1;
  static folly::Range<type const*> const values;
  static folly::Range<folly::StringPiece const*> const names;

  static bool findName(type value, folly::StringPiece* out) noexcept;
  static bool findValue(folly::StringPiece name, type* out) noexcept;

#if FOLLY_HAS_STRING_VIEW
  static bool findName(type value, std::string_view* out) noexcept {
    folly::StringPiece outp;
    return findName(value, &outp) && ((*out = outp), true);
  }
#endif
  static char const* findName(type value) noexcept {
    folly::StringPiece ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::Sha2_256; }
  static constexpr type max() { return type::Sha2_256; }
};


}} // apache::thrift

namespace apache { namespace thrift { namespace type {

using _BaseTypeEnum_EnumMapFactory = apache::thrift::detail::TEnumMapFactory<BaseTypeEnum>;
#ifndef ANDROID
[[deprecated("use apache::thrift::util::enumNameSafe, apache::thrift::util::enumName, or apache::thrift::TEnumTraits")]]
extern const _BaseTypeEnum_EnumMapFactory::ValuesToNamesMapType _BaseTypeEnum_VALUES_TO_NAMES;
[[deprecated("use apache::thrift::TEnumTraits")]]
extern const _BaseTypeEnum_EnumMapFactory::NamesToValuesMapType _BaseTypeEnum_NAMES_TO_VALUES;
#endif
using _UniversalHashAlgorithmEnum_EnumMapFactory = apache::thrift::detail::TEnumMapFactory<UniversalHashAlgorithmEnum>;
#ifndef ANDROID
[[deprecated("use apache::thrift::util::enumNameSafe, apache::thrift::util::enumName, or apache::thrift::TEnumTraits")]]
extern const _UniversalHashAlgorithmEnum_EnumMapFactory::ValuesToNamesMapType _UniversalHashAlgorithmEnum_VALUES_TO_NAMES;
[[deprecated("use apache::thrift::TEnumTraits")]]
extern const _UniversalHashAlgorithmEnum_EnumMapFactory::NamesToValuesMapType _UniversalHashAlgorithmEnum_NAMES_TO_VALUES;
#endif
}}} // apache::thrift::type

// END declare_enums
// BEGIN forward_declare

// END forward_declare
// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace apache { namespace thrift { namespace type {
using ::apache::thrift::detail::operator!=;
using ::apache::thrift::detail::operator>;
using ::apache::thrift::detail::operator<=;
using ::apache::thrift::detail::operator>=;

typedef ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::StaticCastAdapter<::apache::thrift::type::BaseType, ::apache::thrift::type::BaseTypeEnum>, ::apache::thrift::type::BaseTypeEnum> BaseType;
typedef ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::StaticCastAdapter<::apache::thrift::type::UniversalHashAlgorithm, ::apache::thrift::type::UniversalHashAlgorithmEnum>, ::apache::thrift::type::UniversalHashAlgorithmEnum> UniversalHashAlgorithm;
typedef ::apache::thrift::type::DurationStruct Duration;
typedef ::apache::thrift::type::TimeStruct Time;
typedef ::apache::thrift::type::TimeStruct Timestamp;
typedef ::apache::thrift::type::FractionStruct Fraction;
typedef ::apache::thrift::type::FractionStruct SimpleFraction;
typedef ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::InlineAdapter<::apache::thrift::type::Protocol>, ::apache::thrift::type::ProtocolUnion> Protocol;
typedef ::apache::thrift::adapt_detail::adapted_t<::apache::thrift::InlineAdapter<::apache::thrift::type::Type>, ::apache::thrift::type::TypeStruct> Type;
typedef ::std::vector<::apache::thrift::type::TypeStruct> TypeList;

}}} // apache::thrift::type
