aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-09-12 19:42:10 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-05 23:42:15 +0100
commit378691aaa286822ee20e0428d278f2bca6e7438e (patch)
tree82ee5ee5466dc5a593ab7aef9875c89e675dc63e /src/common
parent7d0586812a8e7d17f901d9e01af424c4a4ff6bc7 (diff)
[3.3.5] Core/ChatCommands: Show error messages from argument parsers (PR #25443)
(cherry picked from commit 75f9e7396e35360f3016cc0cb21e72e20f5d96d5)
Diffstat (limited to 'src/common')
-rw-r--r--src/common/Define.h3
-rw-r--r--src/common/Utilities/Util.cpp21
-rw-r--r--src/common/Utilities/Util.h13
3 files changed, 30 insertions, 7 deletions
diff --git a/src/common/Define.h b/src/common/Define.h
index 1e73dd3069c..b43dfbf610c 100644
--- a/src/common/Define.h
+++ b/src/common/Define.h
@@ -144,6 +144,9 @@
#define SZFMTD "%" PRIuPTR
+#define STRING_VIEW_FMT "%.*s"
+#define STRING_VIEW_FMT_ARG(str) static_cast<int>((str).length()), (str).data()
+
typedef int64_t int64;
typedef int32_t int32;
typedef int16_t int16;
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
{