diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-04-01 01:38:32 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-04-01 01:38:32 -0700 |
| commit | aae15bd468c9b94118dc7d93c4c4a9856912bcc3 (patch) | |
| tree | 8608cce391ad27e3da1448ed1d82f2b4cc86f51a /toolsrc/include | |
| parent | 74f788d04f2ff8ce66302b6be401ec9b7e85a42f (diff) | |
| download | vcpkg-aae15bd468c9b94118dc7d93c4c4a9856912bcc3.tar.gz vcpkg-aae15bd468c9b94118dc7d93c4c4a9856912bcc3.zip | |
[vcpkg] Collapse join() overloads into a single template.
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/vcpkg_Strings.h | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/toolsrc/include/vcpkg_Strings.h b/toolsrc/include/vcpkg_Strings.h index b84cc943f..e0ad51a8e 100644 --- a/toolsrc/include/vcpkg_Strings.h +++ b/toolsrc/include/vcpkg_Strings.h @@ -74,15 +74,18 @@ namespace vcpkg::Strings std::string ascii_to_lowercase(const std::string& input); - template <class T, class Transformer> - std::string join(const std::string& delimiter, const std::vector<T>& v, Transformer transformer) + template <class T, class Transformer, class CharType> + std::basic_string<CharType> join( + const CharType* delimiter, + const std::vector<T>& v, + Transformer transformer) { if (v.empty()) { - return std::string(); + return std::basic_string<CharType>(); } - std::string output; + std::basic_string<CharType> output; size_t size = v.size(); output.append(transformer(v.at(0))); @@ -95,34 +98,14 @@ namespace vcpkg::Strings return output; } - - std::string join(const std::string& delimiter, const std::vector<std::string>& v); - - template <class T, class Transformer> - std::wstring wjoin(const std::wstring& delimiter, const std::vector<T>& v, Transformer transformer) + template <class T, class CharType> + std::basic_string<CharType> join( + const CharType* delimiter, + const std::vector<T>& v) { - if (v.empty()) - { - return std::wstring(); - } - - std::wstring output; - size_t size = v.size(); - - output.append(transformer(v.at(0))); - - for (size_t i = 1; i < size; ++i) - { - output.append(delimiter); - output.append(transformer(v.at(i))); - } - - return output; + return join(delimiter, v, [](const T& x) -> const T&{ return x; }); } - std::wstring wjoin(const std::wstring& delimiter, const std::vector<std::wstring>& v); - - void trim(std::string* s); std::string trimmed(const std::string& s); |
