]> granicus.if.org Git - llvm/commitdiff
[ADT] Add a version of llvm::join() that takes a range.
authorZachary Turner <zturner@google.com>
Tue, 21 Mar 2017 19:35:05 +0000 (19:35 +0000)
committerZachary Turner <zturner@google.com>
Tue, 21 Mar 2017 19:35:05 +0000 (19:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298427 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringExtras.h
unittests/ADT/StringRefTest.cpp

index 488748a5f60548af3118c8e44c0f961b0f487b16..8214782bfe800e3a3c00605d5dfeecd0a0aeb6a5 100644 (file)
@@ -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+=()
index 614ec5d59e6f7f66d37a12688a0768c7850492a5..bd9387837df40db42d2df27ba7d02ae787706d61 100644 (file)
@@ -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);
 }