mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 02:32:36 +01:00
Simplify umax
Add operator less and conversion operator.
This commit is contained in:
parent
b1736b6411
commit
5724d2d4c7
@ -138,7 +138,7 @@ bool cfg::try_to_uint64(u64* out, const std::string& value, u64 min, u64 max)
|
||||
|
||||
bool cfg::try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) func, const std::string& value)
|
||||
{
|
||||
u64 max = -1;
|
||||
u64 max = umax;
|
||||
|
||||
for (u64 i = 0;; i++)
|
||||
{
|
||||
|
@ -530,7 +530,7 @@ static std::basic_string<u32> apply_modification(const patch_engine::patch_info&
|
||||
|
||||
auto ptr = dst + offset;
|
||||
|
||||
u32 resval = -1;
|
||||
u32 resval = umax;
|
||||
|
||||
switch (p.type)
|
||||
{
|
||||
|
@ -7,8 +7,6 @@
|
||||
#include <algorithm>
|
||||
#include "util/asm.hpp"
|
||||
|
||||
static const usz size_dropped = -1;
|
||||
|
||||
/*
|
||||
C-style format parser. Appends formatted string to `out`, returns number of characters written.
|
||||
`out`: mutable reference to std::string, std::vector<char> or other compatible container
|
||||
@ -43,7 +41,7 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
|
||||
const auto drop_sequence = [&]
|
||||
{
|
||||
out.insert(out.end(), fmt - ctx.size, fmt);
|
||||
ctx.size = size_dropped;
|
||||
ctx.size = umax;
|
||||
};
|
||||
|
||||
const auto read_decimal = [&](uint result) -> uint
|
||||
@ -143,7 +141,7 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
|
||||
ctx = {0};
|
||||
out.push_back(ch);
|
||||
}
|
||||
else if (ctx.size == size_dropped)
|
||||
else if (ctx.size == umax)
|
||||
{
|
||||
out.push_back(ch);
|
||||
}
|
||||
@ -694,7 +692,7 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
|
||||
}
|
||||
|
||||
// Handle unfinished sequence
|
||||
if (ctx.size && ctx.size != size_dropped)
|
||||
if (ctx.size && ctx.size != umax)
|
||||
{
|
||||
fmt--, drop_sequence();
|
||||
}
|
||||
|
@ -480,39 +480,25 @@ struct get_int_impl<16>
|
||||
};
|
||||
|
||||
// Return magic value for any unsigned type
|
||||
constexpr inline struct umax_helper
|
||||
constexpr struct umax_impl_t
|
||||
{
|
||||
constexpr umax_helper() noexcept = default;
|
||||
|
||||
template <typename T> requires (std::is_unsigned_v<std::common_type_t<T>>) || (std::is_same_v<std::common_type_t<T>, u128>)
|
||||
friend constexpr bool operator==(const umax_helper&, const T& rhs)
|
||||
constexpr bool operator==(const T& rhs) const
|
||||
{
|
||||
return rhs == static_cast<std::common_type_t<T>>(-1);
|
||||
}
|
||||
|
||||
#if __cpp_impl_three_way_comparison >= 201711 && !__INTELLISENSE__
|
||||
#else
|
||||
template <typename T> requires (std::is_unsigned_v<std::common_type_t<T>>) || (std::is_same_v<std::common_type_t<T>, u128>)
|
||||
friend constexpr bool operator==(const T& lhs, const umax_helper&)
|
||||
constexpr bool operator<(const T& rhs) const
|
||||
{
|
||||
return lhs == static_cast<std::common_type_t<T>>(-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __cpp_impl_three_way_comparison >= 201711
|
||||
#else
|
||||
template <typename T> requires (std::is_unsigned_v<std::common_type_t<T>>) || (std::is_same_v<std::common_type_t<T>, u128>)
|
||||
friend constexpr bool operator!=(const umax_helper&, const T& rhs)
|
||||
{
|
||||
return rhs != static_cast<std::common_type_t<T>>(-1);
|
||||
return rhs < static_cast<std::common_type_t<T>>(-1);
|
||||
}
|
||||
|
||||
template <typename T> requires (std::is_unsigned_v<std::common_type_t<T>>) || (std::is_same_v<std::common_type_t<T>, u128>)
|
||||
friend constexpr bool operator!=(const T& lhs, const umax_helper&)
|
||||
constexpr operator T() const
|
||||
{
|
||||
return lhs != static_cast<std::common_type_t<T>>(-1);
|
||||
return static_cast<std::common_type_t<T>>(-1);
|
||||
}
|
||||
#endif
|
||||
} umax;
|
||||
|
||||
enum class f16 : u16{};
|
||||
|
Loading…
Reference in New Issue
Block a user