// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#pragma once

#include <lib/fidl/cpp/wire/internal/display_error.h>
#include <lib/fidl/cpp/wire/traits.h>
#include <lib/stdcompat/optional.h>

#include <cinttypes>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

namespace test_handlesintypes {

enum class ObjType : uint32_t {

  kNone = 0u,

  kVmo = 3u,
};

}  // namespace test_handlesintypes

template <>
struct fidl::internal::DisplayError<::test_handlesintypes::ObjType> {
  static size_t Format(const ::test_handlesintypes::ObjType& value, char* destination, size_t capacity);
};

namespace fidl {

constexpr inline auto ToUnderlying(::test_handlesintypes::ObjType value) -> uint32_t {
  return static_cast<uint32_t>(value);
}

template <>
struct IsFidlType<::test_handlesintypes::ObjType> : public std::true_type {};
template <>
struct ContainsHandle<::test_handlesintypes::ObjType> : public std::false_type {};

#pragma clang diagnostic pop

}  // namespace fidl
