mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-07-22 16:57:12 +02:00
Implement a helper function to clamp a value between the ranges of another type.
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#include <vcmp.h>
|
||||
@@ -225,6 +226,25 @@ template< typename T > inline T Clamp(T val, T min, T max)
|
||||
return val < min ? min : (val > max ? max : val);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Force a value to be the boundaries of the specified type.
|
||||
*/
|
||||
template< typename T, typename U > inline U ClampL(T val)
|
||||
{
|
||||
// Is the specified value bellow the minimum?
|
||||
if (val < std::numeric_limits< U >::min())
|
||||
{
|
||||
return std::numeric_limits< U >::min();
|
||||
}
|
||||
// Is the specified value above the maximum?
|
||||
else if (val > std::numeric_limits< U >::max())
|
||||
{
|
||||
return std::numeric_limits< U >::max();
|
||||
}
|
||||
// Return the value as is
|
||||
return static_cast< U >(val);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* Compute the next power of two for the specified number.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user