diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2021-03-07 12:55:53 -0800 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2021-03-07 13:54:13 -0800 |
| commit | fa124e657f62863ec1f03a8da230602d358abc9f (patch) | |
| tree | 131e53456baeb20b8f23430e83f3c31856e4206c /Source/Core | |
| parent | 72a6fff36c42989c71765012e26285943085b8c5 (diff) | |
EnumFormatter: fix signed/unsigned comparison warnings
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Common/EnumFormatter.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/Source/Core/Common/EnumFormatter.h b/Source/Core/Common/EnumFormatter.h index 2ca1bb114e..3f8d4d598b 100644 --- a/Source/Core/Common/EnumFormatter.h +++ b/Source/Core/Common/EnumFormatter.h @@ -60,22 +60,23 @@ public: template <typename FormatContext> auto format(const T& e, FormatContext& ctx) { - const auto value = static_cast<std::underlying_type_t<T>>(e); + const auto value_s = static_cast<std::underlying_type_t<T>>(e); // Possibly signed + const auto value_u = static_cast<std::make_unsigned_t<T>>(value_s); // Always unsigned + const bool has_name = value_s >= 0 && value_u < size && m_names[value_u] != nullptr; if (!formatting_for_shader) { - if (value >= 0 && value < size && m_names[value] != nullptr) - return fmt::format_to(ctx.out(), "{} ({})", m_names[value], value); + if (has_name) + return fmt::format_to(ctx.out(), "{} ({})", m_names[value_u], value_s); else - return fmt::format_to(ctx.out(), "Invalid ({})", value); + return fmt::format_to(ctx.out(), "Invalid ({})", value_s); } else { - if (value >= 0 && value < size && m_names[value] != nullptr) - return fmt::format_to(ctx.out(), "{:#x}u /* {} */", value, m_names[value]); + if (has_name) + return fmt::format_to(ctx.out(), "{:#x}u /* {} */", value_u, m_names[value_u]); else - return fmt::format_to(ctx.out(), "{:#x}u /* Invalid */", - static_cast<std::make_unsigned_t<T>>(value)); + return fmt::format_to(ctx.out(), "{:#x}u /* Invalid */", value_u); } } |
