Index: src/shared/Utils.h |
diff --git a/src/shared/Utils.h b/src/shared/Utils.h |
index befdf237aafeef59f39becbb1daa86fdbb64af9a..26d8581d91e41ff32fe13121d5983fbc4e4b729a 100644 |
--- a/src/shared/Utils.h |
+++ b/src/shared/Utils.h |
@@ -56,7 +56,35 @@ std::wstring ToUtf16String(const std::string& str); |
std::vector<std::wstring> ToUtf16Strings(const std::vector<std::string>& value); |
std::wstring GetDllDir(); |
std::wstring GetAppDataPath(); |
-void ReplaceString(std::wstring& input, const std::wstring placeholder, const std::wstring replacement); |
+ |
+template<typename T> |
+void ReplaceString(T& input, const T& placeholder, const T& replacement) |
Eric
2015/02/26 16:14:10
We want to be able to use type inference for this
|
+{ |
+ auto replaceStart = input.find(placeholder); |
+ if (replaceStart != T::npos) |
+ { |
+ input.replace(replaceStart, placeholder.length(), replacement); |
+ } |
+} |
+ |
+template <typename T> |
+T ASCIIStringToLower(const T& text) |
Eric
2015/02/26 16:14:10
We could take the opportunity to rename this "Asci
|
+{ |
+ T textlower; |
+ std::transform(text.begin(), text.end(), std::back_inserter(textlower), |
+ [](T::value_type ch) |
+ { |
+ return std::tolower(ch, std::locale()); |
+ } |
+ ); |
+ return textlower; |
+} |
+ |
+template<typename T> |
+bool BeginsWith(const T& value, const T& prefix) |
+{ |
+ return value.compare(0, prefix.length(), prefix) == 0; |
+} |
Eric
2015/02/26 16:14:10
Here are the unit tests I had previously, adapted
Eric
2015/02/26 16:14:10
I wrote a version of this last summer in the giant
|
template<class T> |
T TrimString(T text) |