Title: [222039] trunk
Revision
222039
Author
commit-qu...@webkit.org
Date
2017-09-14 11:56:11 -0700 (Thu, 14 Sep 2017)

Log Message

Allow WTF::map to take function as parameter
https://bugs.webkit.org/show_bug.cgi?id=176909

Patch by Youenn Fablet <you...@apple.com> on 2017-09-14
Reviewed by Jer Noble.

Source/WTF:

* wtf/Vector.h:
(WTF::map):

Tools:

* TestWebKitAPI/Tests/WTF/Vector.cpp:
(TestWebKitAPI::multiplyByTwo):
(TestWebKitAPI::TEST):
(TestWebKitAPI::multiplyByTwoMoveOnly):

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (222038 => 222039)


--- trunk/Source/WTF/ChangeLog	2017-09-14 18:33:26 UTC (rev 222038)
+++ trunk/Source/WTF/ChangeLog	2017-09-14 18:56:11 UTC (rev 222039)
@@ -1,3 +1,13 @@
+2017-09-14  Youenn Fablet  <you...@apple.com>
+
+        Allow WTF::map to take function as parameter
+        https://bugs.webkit.org/show_bug.cgi?id=176909
+
+        Reviewed by Jer Noble.
+
+        * wtf/Vector.h:
+        (WTF::map):
+
 2017-09-13  Youenn Fablet  <you...@apple.com>
 
         Add a lambda-based map for Vectors

Modified: trunk/Source/WTF/wtf/Vector.h (222038 => 222039)


--- trunk/Source/WTF/wtf/Vector.h	2017-09-14 18:33:26 UTC (rev 222038)
+++ trunk/Source/WTF/wtf/Vector.h	2017-09-14 18:56:11 UTC (rev 222039)
@@ -1585,9 +1585,9 @@
 };
 
 template<typename Transformer, typename VectorType>
-Vector<typename Mapper<Transformer, VectorType>::DestinationItemType> map(VectorType&& source, const Transformer& transformer)
+Vector<typename Mapper<Transformer, VectorType>::DestinationItemType> map(VectorType&& source, Transformer&& transformer)
 {
-    return Mapper<Transformer, VectorType>::map(std::forward<VectorType>(source), transformer);
+    return Mapper<Transformer, VectorType>::map(std::forward<VectorType>(source), std::forward<Transformer>(transformer));
 }
 
 } // namespace WTF

Modified: trunk/Tools/ChangeLog (222038 => 222039)


--- trunk/Tools/ChangeLog	2017-09-14 18:33:26 UTC (rev 222038)
+++ trunk/Tools/ChangeLog	2017-09-14 18:56:11 UTC (rev 222039)
@@ -1,3 +1,15 @@
+2017-09-14  Youenn Fablet  <you...@apple.com>
+
+        Allow WTF::map to take function as parameter
+        https://bugs.webkit.org/show_bug.cgi?id=176909
+
+        Reviewed by Jer Noble.
+
+        * TestWebKitAPI/Tests/WTF/Vector.cpp:
+        (TestWebKitAPI::multiplyByTwo):
+        (TestWebKitAPI::TEST):
+        (TestWebKitAPI::multiplyByTwoMoveOnly):
+
 2017-09-14  Filip Pizlo  <fpi...@apple.com>
 
         WSL IntLiteralType should become int32 if unified with a type variable

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp (222038 => 222039)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp	2017-09-14 18:33:26 UTC (rev 222038)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp	2017-09-14 18:56:11 UTC (rev 222039)
@@ -651,9 +651,47 @@
     EXPECT_EQ(0U, v.size());
 }
 
+static int multiplyByTwo(int value)
+{
+    return 2 * value;
+}
+
+TEST(WTF_Vector, MapStaticFunction)
+{
+    Vector<int> vector { 2, 3, 4 };
+
+    auto mapped = WTF::map(vector, multiplyByTwo);
+
+    EXPECT_EQ(3U, mapped.size());
+    EXPECT_EQ(4, mapped[0]);
+    EXPECT_EQ(6, mapped[1]);
+    EXPECT_EQ(8, mapped[2]);
+}
+
+static MoveOnly multiplyByTwoMoveOnly(const MoveOnly& value)
+{
+    return MoveOnly(2 * value.value());
+}
+
+TEST(WTF_Vector, MapStaticFunctionMoveOnly)
+{
+    Vector<MoveOnly> vector;
+
+    vector.reserveInitialCapacity(3);
+    for (unsigned i = 0; i < 3; ++i)
+        vector.uncheckedAppend(MoveOnly { i });
+
+    auto mapped = WTF::map(vector, multiplyByTwoMoveOnly);
+
+    EXPECT_EQ(3U, mapped.size());
+    EXPECT_EQ(0U, mapped[0].value());
+    EXPECT_EQ(2U, mapped[1].value());
+    EXPECT_EQ(4U, mapped[2].value());
+}
+
 TEST(WTF_Vector, MapLambda)
 {
-    Vector<int> vector { 2, 3, 4};
+    Vector<int> vector { 2, 3, 4 };
 
     int counter = 0;
     auto mapped = WTF::map(vector, [&] (int item) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to