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

#include <fidl/test.handlesintypes/cpp/common_types.h>

namespace test_handlesintypes {
extern "C" const fidl_type_t test_handlesintypes_obj_typeTable;
}  // namespace test_handlesintypes
size_t fidl::internal::DisplayError<::test_handlesintypes::ObjType>::Format(
    const ::test_handlesintypes::ObjType& value, char* destination,
    size_t capacity) {
  const char* name = [&]() -> const char* {
    switch (static_cast<uint32_t>(value)) {
      case 0u:
        return "NONE";
      case 3u:
        return "VMO";
      default:
        return nullptr;
    }
  }();
  return ::fidl::internal::FormatApplicationError(
      static_cast<uint32_t>(value), name,
      &::test_handlesintypes::test_handlesintypes_obj_typeTable, destination,
      capacity);
}
