Author: manx
Date: Fri Mar 15 12:45:47 2024
New Revision: 20341
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20341
Log:
Merged revision(s) 20330 from trunk/OpenMPT:
[Ref] mpt/base/numeric.hpp: Add mpt::saturate_align_up.
........
Modified:
branches/OpenMPT-1.30/ (props changed)
branches/OpenMPT-1.30/src/mpt/base/numeric.hpp
Modified: branches/OpenMPT-1.30/src/mpt/base/numeric.hpp
==============================================================================
--- branches/OpenMPT-1.30/src/mpt/base/numeric.hpp Fri Mar 15 12:44:11 2024 (r20340)
+++ branches/OpenMPT-1.30/src/mpt/base/numeric.hpp Fri Mar 15 12:45:47 2024 (r20341)
@@ -80,6 +80,16 @@
return (x / target) * target;
}
+// rounds x up to multiples of target or saturation of T
+template <typename T>
+constexpr T saturate_align_up(T x, T target) {
+ if (x > (std::numeric_limits<T>::max() - (target - 1))) {
+ return std::numeric_limits<T>::max();
+ }
+ T result = ((x + (target - 1)) / target) * target;
+ return result;
+}
+
// Returns sign of a number (-1 for negative numbers, 1 for positive numbers, 0 for 0)
template <class T>
constexpr int signum(T value) {
|