aboutsummaryrefslogtreecommitdiff
path: root/src/common/Utilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Utilities')
-rw-r--r--src/common/Utilities/FuzzyFind.h7
-rw-r--r--src/common/Utilities/SmartEnum.h1
-rw-r--r--src/common/Utilities/Util.h9
3 files changed, 13 insertions, 4 deletions
diff --git a/src/common/Utilities/FuzzyFind.h b/src/common/Utilities/FuzzyFind.h
index 9b70fc7cb39..a402c60c1cc 100644
--- a/src/common/Utilities/FuzzyFind.h
+++ b/src/common/Utilities/FuzzyFind.h
@@ -19,15 +19,16 @@
#define TRINITY_FUZZYFIND_H
#include <map>
-#include <string>
#include <type_traits>
+struct StringContainsStringI_T;
+
namespace Trinity
{
namespace Containers
{
- template <typename Container, typename NeedleContainer, typename ContainsOperator = bool(std::string const&, std::string const&), typename T = void>
- auto FuzzyFindIn(Container const& container, NeedleContainer const& needles, ContainsOperator const& contains = StringContainsStringI, int(*bonus)(decltype((*std::begin(std::declval<Container>())))) = nullptr)
+ template <typename Container, typename NeedleContainer, typename ContainsOperator = StringContainsStringI_T, typename T = void>
+ auto FuzzyFindIn(Container const& container, NeedleContainer const& needles, ContainsOperator const& contains = {}, int(*bonus)(decltype((*std::begin(std::declval<Container>())))) = nullptr)
{
using IteratorResult = decltype((*std::begin(container)));
using MappedType = std::conditional_t<std::is_reference_v<IteratorResult>, std::reference_wrapper<std::remove_reference_t<IteratorResult>>, IteratorResult>;
diff --git a/src/common/Utilities/SmartEnum.h b/src/common/Utilities/SmartEnum.h
index 3c58d433406..ae915f31694 100644
--- a/src/common/Utilities/SmartEnum.h
+++ b/src/common/Utilities/SmartEnum.h
@@ -18,6 +18,7 @@
#ifndef TRINITY_SMARTENUM_H
#define TRINITY_SMARTENUM_H
+#include "Define.h"
#include "IteratorPair.h"
#include <iterator>
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index e3c63e0e968..9f65fd9b163 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -458,9 +458,16 @@ inline std::vector<uint8> HexStrToByteVector(std::string_view str, bool reverse
TC_COMMON_API float DegToRad(float degrees);
TC_COMMON_API bool StringEqualI(std::string_view str1, std::string_view str2);
-inline bool StringStartsWith(std::string_view haystack, std::string_view needle) { return (haystack.substr(0, needle.length()) == needle); }
+inline bool StringStartsWith(std::string_view haystack, std::string_view needle) { return haystack.starts_with(needle); }
inline bool StringStartsWithI(std::string_view haystack, std::string_view needle) { return StringEqualI(haystack.substr(0, needle.length()), needle); }
+
TC_COMMON_API bool StringContainsStringI(std::string_view haystack, std::string_view needle);
+
+struct StringContainsStringI_T
+{
+ bool operator()(std::string_view haystack, std::string_view needle) const { return StringContainsStringI(haystack, needle); }
+};
+
TC_COMMON_API bool StringCompareLessI(std::string_view a, std::string_view b);
struct StringCompareLessI_T