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

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

namespace test_placementofattributes {
extern "C" const fidl_type_t test_placementofattributes_ExampleEnumTable;
}  // namespace test_placementofattributes
size_t
fidl::internal::DisplayError<::test_placementofattributes::ExampleEnum>::Format(
    const ::test_placementofattributes::ExampleEnum& value, char* destination,
    size_t capacity) {
  const char* name = [&]() -> const char* {
    switch (static_cast<uint32_t>(value)) {
      case 1u:
        return "MEMBER";
      default:
        return nullptr;
    }
  }();
  return ::fidl::internal::FormatApplicationError(
      static_cast<uint32_t>(value), name,
      &::test_placementofattributes::
          test_placementofattributes_ExampleEnumTable,
      destination, capacity);
}
