summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2021-03-07 12:55:53 -0800
committerPokechu22 <Pokechu022@gmail.com>2021-03-07 13:54:13 -0800
commitfa124e657f62863ec1f03a8da230602d358abc9f (patch)
tree131e53456baeb20b8f23430e83f3c31856e4206c /Source/Core
parent72a6fff36c42989c71765012e26285943085b8c5 (diff)
EnumFormatter: fix signed/unsigned comparison warnings
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/EnumFormatter.h17
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);
}
}