diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/common_funcs.h | 38 | ||||
-rw-r--r-- | src/common/swap.h | 100 |
2 files changed, 50 insertions, 88 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index 042c2c2aa..93f1c0044 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -38,40 +38,6 @@ #define Crash() exit(1) #endif -// GCC 4.8 defines all the rotate functions now -// Small issue with GCC's lrotl/lrotr intrinsics is they are still 32bit while we require 64bit -#ifdef _rotl -#define rotl _rotl -#else -inline u32 rotl(u32 x, int shift) { - shift &= 31; - if (!shift) - return x; - return (x << shift) | (x >> (32 - shift)); -} -#endif - -#ifdef _rotr -#define rotr _rotr -#else -inline u32 rotr(u32 x, int shift) { - shift &= 31; - if (!shift) - return x; - return (x >> shift) | (x << (32 - shift)); -} -#endif - -inline u64 _rotl64(u64 x, unsigned int shift) { - unsigned int n = shift % 64; - return (x << n) | (x >> (64 - n)); -} - -inline u64 _rotr64(u64 x, unsigned int shift) { - unsigned int n = shift % 64; - return (x >> n) | (x << (64 - n)); -} - #else // _MSC_VER // Locale Cross-Compatibility @@ -82,10 +48,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void); } #define Crash() DebugBreak() -// cstdlib provides these on MSVC -#define rotr _rotr -#define rotl _rotl - #endif // _MSC_VER ndef // Generic function to get last error message. diff --git a/src/common/swap.h b/src/common/swap.h index f025f7450..fc7af4280 100644 --- a/src/common/swap.h +++ b/src/common/swap.h @@ -167,7 +167,7 @@ inline double swapd(double f) { template <typename T, typename F> struct swap_struct_t { - typedef swap_struct_t<T, F> swapped_t; + using swapped_t = swap_struct_t; protected: T value = T(); @@ -177,7 +177,7 @@ protected: } public: - T const swap() const { + T swap() const { return swap(value); } swap_struct_t() = default; @@ -185,39 +185,39 @@ public: template <typename S> swapped_t& operator=(const S& source) { - value = swap((T)source); + value = swap(static_cast<T>(source)); return *this; } operator s8() const { - return (s8)swap(); + return static_cast<s8>(swap()); } operator u8() const { - return (u8)swap(); + return static_cast<u8>(swap()); } operator s16() const { - return (s16)swap(); + return static_cast<s16>(swap()); } operator u16() const { - return (u16)swap(); + return static_cast<u16>(swap()); } operator s32() const { - return (s32)swap(); + return static_cast<s32>(swap()); } operator u32() const { - return (u32)swap(); + return static_cast<u32>(swap()); } operator s64() const { - return (s64)swap(); + return static_cast<s64>(swap()); } operator u64() const { - return (u64)swap(); + return static_cast<u64>(swap()); } operator float() const { - return (float)swap(); + return static_cast<float>(swap()); } operator double() const { - return (double)swap(); + return static_cast<double>(swap()); } // +v @@ -253,7 +253,7 @@ public: } template <typename S> swapped_t operator+(const S& i) const { - return swap() + (T)i; + return swap() + static_cast<T>(i); } // v - 5 swapped_t operator-(const swapped_t& i) const { @@ -261,7 +261,7 @@ public: } template <typename S> swapped_t operator-(const S& i) const { - return swap() - (T)i; + return swap() - static_cast<T>(i); } // v += 5 @@ -271,7 +271,7 @@ public: } template <typename S> swapped_t& operator+=(const S& i) { - value = swap(swap() + (T)i); + value = swap(swap() + static_cast<T>(i)); return *this; } // v -= 5 @@ -281,7 +281,7 @@ public: } template <typename S> swapped_t& operator-=(const S& i) { - value = swap(swap() - (T)i); + value = swap(swap() - static_cast<T>(i)); return *this; } @@ -541,7 +541,7 @@ S operator&(const S& i, const swap_struct_t<T, F> v) { template <typename S, typename T, typename F> S operator&(const swap_struct_t<T, F> v, const S& i) { - return (S)(v.swap() & i); + return static_cast<S>(v.swap() & i); } // Comparaison @@ -606,51 +606,51 @@ struct swap_double_t { }; #if COMMON_LITTLE_ENDIAN -typedef u32 u32_le; -typedef u16 u16_le; -typedef u64 u64_le; +using u16_le = u16; +using u32_le = u32; +using u64_le = u64; -typedef s32 s32_le; -typedef s16 s16_le; -typedef s64 s64_le; +using s16_le = s16; +using s32_le = s32; +using s64_le = s64; -typedef float float_le; -typedef double double_le; +using float_le = float; +using double_le = double; -typedef swap_struct_t<u64, swap_64_t<u64>> u64_be; -typedef swap_struct_t<s64, swap_64_t<s64>> s64_be; +using u64_be = swap_struct_t<u64, swap_64_t<u64>>; +using s64_be = swap_struct_t<s64, swap_64_t<s64>>; -typedef swap_struct_t<u32, swap_32_t<u32>> u32_be; -typedef swap_struct_t<s32, swap_32_t<s32>> s32_be; +using u32_be = swap_struct_t<u32, swap_32_t<u32>>; +using s32_be = swap_struct_t<s32, swap_32_t<s32>>; -typedef swap_struct_t<u16, swap_16_t<u16>> u16_be; -typedef swap_struct_t<s16, swap_16_t<s16>> s16_be; +using u16_be = swap_struct_t<u16, swap_16_t<u16>>; +using s16_be = swap_struct_t<s16, swap_16_t<s16>>; -typedef swap_struct_t<float, swap_float_t<float>> float_be; -typedef swap_struct_t<double, swap_double_t<double>> double_be; +using float_be = swap_struct_t<float, swap_float_t<float>>; +using double_be = swap_struct_t<double, swap_double_t<double>>; #else -typedef swap_struct_t<u64, swap_64_t<u64>> u64_le; -typedef swap_struct_t<s64, swap_64_t<s64>> s64_le; +using u64_le = swap_struct_t<u64, swap_64_t<u64>>; +using s64_le = swap_struct_t<s64, swap_64_t<s64>>; -typedef swap_struct_t<u32, swap_32_t<u32>> u32_le; -typedef swap_struct_t<s32, swap_32_t<s32>> s32_le; +using u32_le = swap_struct_t<u32, swap_32_t<u32>>; +using s32_le = swap_struct_t<s32, swap_32_t<s32>>; -typedef swap_struct_t<u16, swap_16_t<u16>> u16_le; -typedef swap_struct_t<s16, swap_16_t<s16>> s16_le; +using u16_le = swap_struct_t<u16, swap_16_t<u16>>; +using s16_le = swap_struct_t<s16, swap_16_t<s16>>; -typedef swap_struct_t<float, swap_float_t<float>> float_le; -typedef swap_struct_t<double, swap_double_t<double>> double_le; +using float_le = swap_struct_t<float, swap_float_t<float>>; +using double_le = swap_struct_t<double, swap_double_t<double>>; -typedef u32 u32_be; -typedef u16 u16_be; -typedef u64 u64_be; +using u16_be = u16; +using u32_be = u32; +using u64_be = u64; -typedef s32 s32_be; -typedef s16 s16_be; -typedef s64 s64_be; +using s16_be = s16; +using s32_be = s32; +using s64_be = s64; -typedef float float_be; -typedef double double_be; +using float_be = float; +using double_be = double; #endif |