/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.01.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/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 { 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,
};



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

namespace std {
template<> struct hash<::apache::thrift::type::BaseTypeEnum> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::type::BaseTypeEnum> {};
} // 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; }
};


}} // 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 { 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::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
