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