Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: aa649b89f25e6ca725769ed3300e2264fbee3efb
      
https://github.com/WebKit/WebKit/commit/aa649b89f25e6ca725769ed3300e2264fbee3efb
  Author: Cole Carley <[email protected]>
  Date:   2025-12-10 (Wed, 10 Dec 2025)

  Changed paths:
    M Source/WTF/WTF.xcodeproj/project.pbxproj
    M Source/WTF/wtf/CMakeLists.txt
    M Source/WTF/wtf/HashMap.h
    A Source/WTF/wtf/RangeAdaptors.h
    M Source/WTF/wtf/Vector.h
    M Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
    M Tools/TestWebKitAPI/Tests/WTF/Vector.cpp

  Log Message:
  -----------
  Add a way to convert std ranges to wtf containers
https://bugs.webkit.org/show_bug.cgi?id=303699
rdar://165990982

Reviewed by Sam Weinig.

This patch exposes a functor WTF::rangesTo<ContainerT> that will convert
any range to any WTF container that implements a constructor that takes
a std::from_range_t and an std::ranges::input_range.

I added the proper constructors to the wtf Vector and HashMap. The constructors
did not need use the disambiguation tag (std::from_range_t), but I did this
so it would not interfere with any existing constructors.

After this patch the following is possible:

Vector<int> v = std::views::iota(0, 10) | WTF::rangeTo<Vector<int>>;

Tests: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
       Tools/TestWebKitAPI/Tests/WTF/Vector.cpp

* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/CMakeLists.txt:
* Source/WTF/wtf/HashMap.h:
* Source/WTF/wtf/RangeAdaptors.h: Added.
(WTF::RangeAdaptorClosure::operator|):
(WTF::FromRangeConverter::requires):
(WTF::FromRangeConverter::operator() const):
* Source/WTF/wtf/Vector.h:
(WTF::Vector::Vector):
* Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorBasicTypes)):
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorInitializerList)):
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorEmptyRange)):
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorMoveOnlyValues)):
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorStringKeys)):
(TestWebKitAPI::TEST(WTF_HashMap, fromRangeConstructorCustomHashTraits)):
(TestWebKitAPI::TEST(WTF_HashMap, RangeToBasicUsage)):
(TestWebKitAPI::TEST(WTF_HashMap, RangeToChainedOperations)):
* Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:
(TestWebKitAPI::TEST(WTF_Vector, fromRangeConstructorBasicTypes)):
(TestWebKitAPI::TEST(WTF_Vector, fromRangeConstructorArray)):
(TestWebKitAPI::TEST(WTF_Vector, fromRangeConstructorInitializerList)):
(TestWebKitAPI::TEST(WTF_Vector, fromRangeConstructorEmptyRange)):
(TestWebKitAPI::TEST(WTF_Vector, fromRangeConstructorStrings)):
(TestWebKitAPI::TEST(WTF_Vector, RangeToBasicUsage)):
(TestWebKitAPI::TEST(WTF_Vector, RangeToChainedOperations)):
(TestWebKitAPI::TEST(WTF_Vector, RangeToMoveOnly)):

Canonical link: https://commits.webkit.org/304212@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to