Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dosbox-staging/dosbox-staging.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkcgen <kcgen@users.noreply.github.com>2022-10-22 06:08:38 +0300
committerkcgen <1557255+kcgen@users.noreply.github.com>2022-10-22 21:15:34 +0300
commitc5aaba38b64daf6d05548aa9b1110de0cc10474d (patch)
tree60894a8f0515a139715e7f94ee57471e5802139b
parent04401fc0270091cde34672ba097c2cb40af14fbc (diff)
Add unsigned input handling to clamp_to_ functions
-rw-r--r--include/math_utils.h21
1 files changed, 9 insertions, 12 deletions
diff --git a/include/math_utils.h b/include/math_utils.h
index 81fce34a6..9bc994efb 100644
--- a/include/math_utils.h
+++ b/include/math_utils.h
@@ -130,28 +130,25 @@ constexpr T1 left_shift_signed(T1 value, T2 amount)
template <typename T>
int8_t clamp_to_int8(const T val)
{
- const auto tmp = std::clamp(val,
- static_cast<T>(INT8_MIN),
- static_cast<T>(INT8_MAX));
- return static_cast<int8_t>(tmp);
+ constexpr auto min_val = static_cast<T>(std::is_signed<T>{} ? INT8_MIN : 0);
+ constexpr auto max_val = static_cast<T>(INT8_MAX);
+ return static_cast<int8_t>(std::clamp(val, min_val, max_val));
}
template <typename T>
int16_t clamp_to_int16(const T val)
{
- const auto tmp = std::clamp(val,
- static_cast<T>(INT16_MIN),
- static_cast<T>(INT16_MAX));
- return static_cast<int16_t>(tmp);
+ constexpr auto min_val = static_cast<T>(std::is_signed<T>{} ? INT16_MIN : 0);
+ constexpr auto max_val = static_cast<T>(INT16_MAX);
+ return static_cast<int16_t>(std::clamp(val, min_val, max_val));
}
template <typename T>
int32_t clamp_to_int32(const T val)
{
- const auto tmp = std::clamp(val,
- static_cast<T>(INT32_MIN),
- static_cast<T>(INT32_MAX));
- return static_cast<int32_t>(tmp);
+ constexpr auto min_val = static_cast<T>(std::is_signed<T>{} ? INT32_MIN : 0);
+ constexpr auto max_val = static_cast<T>(INT32_MAX);
+ return static_cast<int32_t>(std::clamp(val, min_val, max_val));
}
inline float decibel_to_gain(const float decibel)