diff options
Diffstat (limited to 'src/common/Utilities')
-rw-r--r-- | src/common/Utilities/Util.cpp | 21 | ||||
-rw-r--r-- | src/common/Utilities/Util.h | 13 |
2 files changed, 27 insertions, 7 deletions
diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp index 511e4b99684..ad98bd5e491 100644 --- a/src/common/Utilities/Util.cpp +++ b/src/common/Utilities/Util.cpp @@ -21,6 +21,7 @@ #include "IpAddress.h" #include "StringConvert.h" #include "StringFormat.h" +#include <boost/core/demangle.hpp> #include <utf8.h> #include <algorithm> #include <iomanip> @@ -831,19 +832,25 @@ void Trinity::Impl::HexStrToByteArray(std::string_view str, uint8* out, size_t o } } -bool StringEqualI(std::string_view str1, std::string_view str2) +bool StringEqualI(std::string_view a, std::string_view b) { - return std::equal(str1.begin(), str1.end(), str2.begin(), str2.end(), - [](char a, char b) - { - return std::tolower(a) == std::tolower(b); - }); + return std::equal(a.begin(), a.end(), b.begin(), b.end(), [](char c1, char c2) { return std::tolower(c1) == std::tolower(c2); }); } bool StringContainsStringI(std::string_view haystack, std::string_view needle) { return haystack.end() != - std::search(haystack.begin(), haystack.end(), needle.begin(), needle.end(), [](char c1, char c2) { return std::toupper(c1) == std::toupper(c2); }); + std::search(haystack.begin(), haystack.end(), needle.begin(), needle.end(), [](char c1, char c2) { return std::tolower(c1) == std::tolower(c2); }); +} + +bool StringCompareLessI(std::string_view a, std::string_view b) +{ + return std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end(), [](char c1, char c2) { return std::tolower(c1) < std::tolower(c2); }); +} + +std::string GetTypeName(std::type_info const& info) +{ + return boost::core::demangle(info.name()); } float DegToRad(float degrees) diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 61f3d17acf8..8a24981c837 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -25,6 +25,7 @@ #include <array> #include <string> #include <string_view> +#include <typeinfo> #include <utility> #include <vector> @@ -377,6 +378,12 @@ inline bool ValueContainsStringI(std::pair<T, std::string_view> const& haystack, { return StringContainsStringI(haystack.second, needle); } +TC_COMMON_API bool StringCompareLessI(std::string_view a, std::string_view b); + +struct StringCompareLessI_T +{ + bool operator()(std::string_view a, std::string_view b) const { return StringCompareLessI(a, b); } +}; // simple class for not-modifyable list template <typename T> @@ -599,6 +606,12 @@ Ret* Coalesce(T1* first, T*... rest) return static_cast<Ret*>(first); } +TC_COMMON_API std::string GetTypeName(std::type_info const&); +template <typename T> +std::string GetTypeName() { return GetTypeName(typeid(T)); } +template <typename T> +std::enable_if_t<!std::is_same_v<std::decay_t<T>, std::type_info>, std::string> GetTypeName(T&& v) { return GetTypeName(typeid(v)); } + template<typename T> struct NonDefaultConstructible { |