diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/common_funcs.h | 42 | ||||
-rw-r--r-- | src/common/file_util.cpp | 2 | ||||
-rw-r--r-- | src/common/file_util.h | 2 | ||||
-rw-r--r-- | src/common/misc.cpp | 16 | ||||
-rw-r--r-- | src/common/string_util.cpp | 12 | ||||
-rw-r--r-- | src/common/string_util.h | 3 | ||||
-rw-r--r-- | src/common/swap.h | 100 |
7 files changed, 60 insertions, 117 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index 995938d0b..93f1c0044 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -4,6 +4,8 @@ #pragma once +#include <string> + #if !defined(ARCHITECTURE_x86_64) && !defined(ARCHITECTURE_ARM) #include <cstdlib> // for exit #endif @@ -36,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 @@ -80,17 +48,13 @@ __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. // Call directly after the command or use the error num. // This function might change the error code. // Defined in Misc.cpp. -const char* GetLastErrorMsg(); +std::string GetLastErrorMsg(); namespace Common { diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index bf955386c..c882ab39f 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp @@ -592,7 +592,7 @@ std::string GetBundleDirectory() { #endif #ifdef _WIN32 -std::string& GetExeDirectory() { +const std::string& GetExeDirectory() { static std::string exe_path; if (exe_path.empty()) { wchar_t wchar_exe_path[2048]; diff --git a/src/common/file_util.h b/src/common/file_util.h index 026c84d94..1f38b1560 100644 --- a/src/common/file_util.h +++ b/src/common/file_util.h @@ -133,7 +133,7 @@ std::string GetBundleDirectory(); #endif #ifdef _WIN32 -std::string& GetExeDirectory(); +const std::string& GetExeDirectory(); std::string AppDataRoamingDirectory(); #endif diff --git a/src/common/misc.cpp b/src/common/misc.cpp index 7be2235b0..217a87098 100644 --- a/src/common/misc.cpp +++ b/src/common/misc.cpp @@ -4,34 +4,28 @@ #include <cstddef> #ifdef _WIN32 -#include <windows.h> +#include <Windows.h> #else #include <cerrno> #include <cstring> #endif -// Neither Android nor OS X support TLS -#if defined(__APPLE__) || (ANDROID && __clang__) -#define __thread -#endif +#include "common/common_funcs.h" // Generic function to get last error message. // Call directly after the command or use the error num. // This function might change the error code. -const char* GetLastErrorMsg() { +std::string GetLastErrorMsg() { static const size_t buff_size = 255; + char err_str[buff_size]; #ifdef _WIN32 - static __declspec(thread) char err_str[buff_size] = {}; - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), err_str, buff_size, nullptr); #else - static __thread char err_str[buff_size] = {}; - // Thread safe (XSI-compliant) strerror_r(errno, err_str, buff_size); #endif - return err_str; + return std::string(err_str, buff_size); } diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 0027888c7..f3ad3d68a 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -34,18 +34,6 @@ std::string ToUpper(std::string str) { return str; } -// faster than sscanf -bool AsciiToHex(const char* _szValue, u32& result) { - char* endptr = nullptr; - const u32 value = strtoul(_szValue, &endptr, 16); - - if (!endptr || *endptr) - return false; - - result = value; - return true; -} - // For Debugging. Read out an u8 array. std::string ArrayToString(const u8* data, size_t size, int line_len, bool spaces) { std::ostringstream oss; diff --git a/src/common/string_util.h b/src/common/string_util.h index 1f5a383cb..daa071f83 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -57,9 +57,6 @@ static bool TryParse(const std::string& str, N* const output) { return false; } -// TODO: kill this -bool AsciiToHex(const char* _szValue, u32& result); - std::string TabsToSpaces(int tab_size, const std::string& in); void SplitString(const std::string& str, char delim, std::vector<std::string>& output); 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 |