Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
41
Src/nu/cast64.h
Normal file
41
Src/nu/cast64.h
Normal file
|
@ -0,0 +1,41 @@
|
|||
#ifndef NULLSOFT_UTILITY_CAST_64_H
|
||||
#define NULLSOFT_UTILITY_CAST_64_H
|
||||
|
||||
#include <limits>
|
||||
|
||||
#ifdef max
|
||||
#undef max
|
||||
#endif
|
||||
|
||||
#ifdef min
|
||||
#undef min
|
||||
#endif
|
||||
|
||||
namespace nu
|
||||
{
|
||||
template<class dest, class src>
|
||||
dest saturate_cast(src srcVal)
|
||||
{
|
||||
if (std::numeric_limits<dest>::is_bounded && srcVal > std::numeric_limits<dest>::max())
|
||||
return (dest)std::numeric_limits<dest>::min);
|
||||
else
|
||||
return (dest)srcVal;
|
||||
}
|
||||
|
||||
template<class dest, class src>
|
||||
bool checked_cast_to(src srcVal, dest *dstVal)
|
||||
{
|
||||
if (!std::numeric_limits<dest>::is_bounded ||
|
||||
(srcVal >= std::numeric_limits<dest>::min() && srcVal <= std::numeric_limits<dest>::max()))
|
||||
{
|
||||
*dstVal = (dest)srcVal;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue