diff options
author | Zachary Turner <zturner@google.com> | 2017-03-21 19:35:05 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2017-03-21 19:35:05 +0000 |
commit | f4bbdc2953920acf9a22da876b5e4d025667cded (patch) | |
tree | b65f7d3ab38ed298339e3459080bdbae870a57c3 /llvm | |
parent | 665b89bac544a9b2fe7703999df00d6f2fbb7546 (diff) | |
download | bcm5719-llvm-f4bbdc2953920acf9a22da876b5e4d025667cded.tar.gz bcm5719-llvm-f4bbdc2953920acf9a22da876b5e4d025667cded.zip |
[ADT] Add a version of llvm::join() that takes a range.
llvm-svn: 298427
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/ADT/StringExtras.h | 7 | ||||
-rw-r--r-- | llvm/unittests/ADT/StringRefTest.cpp | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/StringExtras.h b/llvm/include/llvm/ADT/StringExtras.h index 488748a5f60..8214782bfe8 100644 --- a/llvm/include/llvm/ADT/StringExtras.h +++ b/llvm/include/llvm/ADT/StringExtras.h @@ -234,6 +234,13 @@ inline std::string join(IteratorT Begin, IteratorT End, StringRef Separator) { return detail::join_impl(Begin, End, Separator, tag()); } +/// Joins the strings in the range [R.begin(), R.end()), adding Separator +/// between the elements. +template <typename Range> +inline std::string join(Range &&R, StringRef Separator) { + return join(R.begin(), R.end(), Separator); +} + /// Joins the strings in the parameter pack \p Items, adding \p Separator /// between the elements. All arguments must be implicitly convertible to /// std::string, or there should be an overload of std::string::operator+=() diff --git a/llvm/unittests/ADT/StringRefTest.cpp b/llvm/unittests/ADT/StringRefTest.cpp index 614ec5d59e6..bd9387837df 100644 --- a/llvm/unittests/ADT/StringRefTest.cpp +++ b/llvm/unittests/ADT/StringRefTest.cpp @@ -899,6 +899,8 @@ TEST(StringRefTest, joinStrings) { EXPECT_TRUE(v2_join2); bool v2_join3 = join(v2.begin(), v2.end(), "::") == join_result3; EXPECT_TRUE(v2_join3); + v2_join3 = join(v2, "::") == join_result3; + EXPECT_TRUE(v2_join3); } |