From f2bbef8a4e12e05190a68dfe410cff3e4b1eb13f Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Sat, 8 Aug 2015 11:09:41 +0300 Subject: [PATCH 24/27] Build fixes for GCC 5.X --- nall/bit.hpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/nall/bit.hpp b/nall/bit.hpp index 67a35ad6..11d9d8de 100755 --- a/nall/bit.hpp +++ b/nall/bit.hpp @@ -8,18 +8,27 @@ namespace nall { } template constexpr inline unsigned uclip(const unsigned x) { - enum { m = (1U << (bits - 1)) + ((1U << (bits - 1)) - 1) }; - return (x & m); + return x & ((1U << (bits - 1)) + ((1U << (bits - 1)) - 1)); + } + + template constexpr inline signed sclamp_b() { + return 1U << (bits - 1); + } + + template constexpr inline signed sclamp_m() { + return (1U << (bits - 1)) - 1; } template constexpr inline signed sclamp(const signed x) { - enum { b = 1U << (bits - 1), m = (1U << (bits - 1)) - 1 }; - return (x > m) ? m : (x < -b) ? -b : x; + return (x > sclamp_m()) ? sclamp_m() : (x < -sclamp_b()) ? -sclamp_b() : x; + } + + template constexpr inline signed sclip_m() { + return (1U << (bits)) - 1; } template constexpr inline signed sclip(const signed x) { - enum { b = 1U << (bits - 1), m = (1U << bits) - 1 }; - return ((x & m) ^ b) - b; + return ((x & sclip_m()) ^ sclamp_b()) - sclamp_b(); } namespace bit { -- 2.15.0.rc1