react-native-windows 0.81.34 → 0.81.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Directory.Build.props +1 -16
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -4
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +8 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -3
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +48 -2
- package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +40 -13
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/React.Cpp.props +3 -3
- package/ReactCommon/ReactCommon.vcxproj +0 -10
- package/ReactCommon/packages.lock.win32.json +0 -10
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/creaternwlib.cmd +2 -2
- package/Shared/Shared.vcxitems +2 -0
- package/{Folly → external}/.clang-format +0 -1
- package/external/External.vcxitems +10 -0
- package/external/fast-float/.syncignore +10 -0
- package/external/fast-float/LICENSE-APACHE +190 -0
- package/external/fast-float/LICENSE-BOOST +23 -0
- package/external/fast-float/LICENSE-MIT +27 -0
- package/external/fast-float/README.md +545 -0
- package/external/fast-float/cgmanifest.json +15 -0
- package/external/fast-float/fast-float.vcxitems +14 -0
- package/external/fast-float/include/fast_float/ascii_number.h +588 -0
- package/external/fast-float/include/fast_float/bigint.h +638 -0
- package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
- package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
- package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
- package/external/fast-float/include/fast_float/fast_float.h +59 -0
- package/external/fast-float/include/fast_float/fast_table.h +708 -0
- package/external/fast-float/include/fast_float/float_common.h +1240 -0
- package/external/fast-float/include/fast_float/parse_number.h +399 -0
- package/external/fast-float/sync-config.json +8 -0
- package/external/fmt/.syncignore +10 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/external/fmt/README.md +484 -0
- package/{fmt → external/fmt}/cgmanifest.json +1 -1
- package/external/fmt/doc/ChangeLog-old.md +3290 -0
- package/external/fmt/doc/api.md +650 -0
- package/external/fmt/doc/fmt.css +61 -0
- package/external/fmt/doc/fmt.js +4 -0
- package/external/fmt/doc/get-started.md +222 -0
- package/external/fmt/doc/index.md +151 -0
- package/external/fmt/doc/perf.svg +1 -0
- package/external/fmt/doc/python-license.txt +290 -0
- package/external/fmt/doc/syntax.md +887 -0
- package/external/fmt/fmt.vcxitems +28 -0
- package/external/fmt/include/fmt/args.h +228 -0
- package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
- package/external/fmt/include/fmt/chrono.h +2432 -0
- package/external/fmt/include/fmt/color.h +612 -0
- package/external/fmt/include/fmt/compile.h +529 -0
- package/external/fmt/include/fmt/core.h +5 -0
- package/external/fmt/include/fmt/format-inl.h +1928 -0
- package/external/fmt/include/fmt/format.h +4427 -0
- package/external/fmt/include/fmt/os.h +439 -0
- package/external/fmt/include/fmt/ostream.h +211 -0
- package/external/fmt/include/fmt/printf.h +656 -0
- package/external/fmt/include/fmt/ranges.h +882 -0
- package/external/fmt/include/fmt/std.h +699 -0
- package/external/fmt/include/fmt/xchar.h +322 -0
- package/external/fmt/src/fmt.cc +135 -0
- package/external/fmt/src/format.cc +43 -0
- package/external/fmt/src/os.cc +403 -0
- package/external/fmt/sync-config.json +8 -0
- package/external/folly/.syncignore +60 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/{fmt → external/folly/folly}/.clang-format +0 -1
- package/external/folly/folly/AtomicHashArray-inl.h +546 -0
- package/external/folly/folly/AtomicHashArray.h +431 -0
- package/external/folly/folly/AtomicHashMap-inl.h +653 -0
- package/external/folly/folly/AtomicHashMap.h +484 -0
- package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
- package/external/folly/folly/AtomicLinkedList.h +110 -0
- package/external/folly/folly/AtomicUnorderedMap.h +522 -0
- package/external/folly/folly/BUCK +1631 -0
- package/external/folly/folly/BUILD_MODE.bzl +72 -0
- package/external/folly/folly/Benchmark.cpp +986 -0
- package/external/folly/folly/Benchmark.h +680 -0
- package/external/folly/folly/BenchmarkUtil.h +47 -0
- package/external/folly/folly/Bits.h +17 -0
- package/external/folly/folly/CMakeLists.txt +110 -0
- package/external/folly/folly/CPortability.h +338 -0
- package/external/folly/folly/CancellationToken-inl.h +449 -0
- package/external/folly/folly/CancellationToken.cpp +250 -0
- package/external/folly/folly/CancellationToken.h +365 -0
- package/external/folly/folly/Chrono.h +132 -0
- package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
- package/external/folly/folly/ClockGettimeWrappers.h +29 -0
- package/external/folly/folly/ConcurrentBitSet.h +157 -0
- package/external/folly/folly/ConcurrentLazy.h +74 -0
- package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
- package/external/folly/folly/ConcurrentSkipList.h +824 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.h +2026 -0
- package/external/folly/folly/CppAttributes.h +170 -0
- package/external/folly/folly/CpuId.h +297 -0
- package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
- package/external/folly/folly/Demangle.cpp +255 -0
- package/external/folly/folly/Demangle.h +73 -0
- package/external/folly/folly/DiscriminatedPtr.h +236 -0
- package/external/folly/folly/DynamicConverter.h +17 -0
- package/external/folly/folly/Exception.h +150 -0
- package/external/folly/folly/ExceptionString.cpp +51 -0
- package/external/folly/folly/ExceptionString.h +33 -0
- package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
- package/external/folly/folly/ExceptionWrapper.cpp +37 -0
- package/external/folly/folly/ExceptionWrapper.h +377 -0
- package/external/folly/folly/Executor.cpp +111 -0
- package/external/folly/folly/Executor.h +351 -0
- package/external/folly/folly/Expected.h +1725 -0
- package/external/folly/folly/FBString.h +2888 -0
- package/external/folly/folly/FBVector.h +17 -0
- package/external/folly/folly/File.cpp +180 -0
- package/external/folly/folly/File.h +177 -0
- package/external/folly/folly/FileUtil.cpp +378 -0
- package/external/folly/folly/FileUtil.h +332 -0
- package/external/folly/folly/Fingerprint.cpp +135 -0
- package/external/folly/folly/Fingerprint.h +289 -0
- package/external/folly/folly/FixedString.h +2965 -0
- package/external/folly/folly/FollyMemcpy.cpp +30 -0
- package/external/folly/folly/FollyMemcpy.h +23 -0
- package/external/folly/folly/FollyMemset.cpp +29 -0
- package/external/folly/folly/FollyMemset.h +25 -0
- package/external/folly/folly/Format-inl.h +1152 -0
- package/external/folly/folly/Format.cpp +429 -0
- package/external/folly/folly/Format.h +463 -0
- package/external/folly/folly/FormatArg.h +285 -0
- package/external/folly/folly/FormatTraits.h +65 -0
- package/external/folly/folly/Function.h +1159 -0
- package/external/folly/folly/GLog.h +85 -0
- package/external/folly/folly/GroupVarint.cpp +153 -0
- package/external/folly/folly/GroupVarint.h +630 -0
- package/external/folly/folly/Hash.h +20 -0
- package/external/folly/folly/IPAddress.cpp +490 -0
- package/external/folly/folly/IPAddress.h +667 -0
- package/external/folly/folly/IPAddressException.h +82 -0
- package/external/folly/folly/IPAddressV4.cpp +305 -0
- package/external/folly/folly/IPAddressV4.h +495 -0
- package/external/folly/folly/IPAddressV6.cpp +541 -0
- package/external/folly/folly/IPAddressV6.h +627 -0
- package/external/folly/folly/Indestructible.h +164 -0
- package/external/folly/folly/IndexedMemPool.h +550 -0
- package/external/folly/folly/IntrusiveList.h +17 -0
- package/external/folly/folly/Lazy.h +142 -0
- package/external/folly/folly/Likely.h +76 -0
- package/external/folly/folly/MPMCPipeline.h +280 -0
- package/external/folly/folly/MPMCQueue.h +1556 -0
- package/external/folly/folly/MacAddress.cpp +188 -0
- package/external/folly/folly/MacAddress.h +260 -0
- package/external/folly/folly/MapUtil.h +17 -0
- package/external/folly/folly/Math.h +258 -0
- package/external/folly/folly/MaybeManagedPtr.h +120 -0
- package/external/folly/folly/Memory.h +900 -0
- package/external/folly/folly/MicroLock.cpp +76 -0
- package/external/folly/folly/MicroLock.h +354 -0
- package/external/folly/folly/MicroSpinLock.h +17 -0
- package/external/folly/folly/MoveWrapper.h +76 -0
- package/external/folly/folly/ObserverContainer.h +1026 -0
- package/external/folly/folly/Optional.h +743 -0
- package/external/folly/folly/Overload.h +325 -0
- package/external/folly/folly/PackedSyncPtr.h +147 -0
- package/external/folly/folly/Padded.h +464 -0
- package/external/folly/folly/Poly-inl.h +230 -0
- package/external/folly/folly/Poly.h +1095 -0
- package/external/folly/folly/PolyException.h +43 -0
- package/external/folly/folly/Portability.h +644 -0
- package/external/folly/folly/Preprocessor.h +236 -0
- package/external/folly/folly/ProducerConsumerQueue.h +182 -0
- package/external/folly/folly/RWSpinLock.h +17 -0
- package/external/folly/folly/Random-inl.h +86 -0
- package/external/folly/folly/Random.cpp +184 -0
- package/external/folly/folly/Random.h +434 -0
- package/external/folly/folly/Range.h +1772 -0
- package/external/folly/folly/Replaceable.h +636 -0
- package/external/folly/folly/ScopeGuard.cpp +29 -0
- package/external/folly/folly/ScopeGuard.h +420 -0
- package/external/folly/folly/SharedMutex.cpp +81 -0
- package/external/folly/folly/SharedMutex.h +1751 -0
- package/external/folly/folly/Singleton-inl.h +332 -0
- package/external/folly/folly/Singleton.cpp +512 -0
- package/external/folly/folly/Singleton.h +891 -0
- package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
- package/external/folly/folly/SingletonThreadLocal.h +263 -0
- package/external/folly/folly/SocketAddress.cpp +786 -0
- package/external/folly/folly/SocketAddress.h +768 -0
- package/external/folly/folly/SpinLock.h +55 -0
- package/external/folly/folly/String-inl.h +668 -0
- package/external/folly/folly/String.cpp +777 -0
- package/external/folly/folly/String.h +767 -0
- package/external/folly/folly/Subprocess.cpp +1142 -0
- package/external/folly/folly/Subprocess.h +1055 -0
- package/external/folly/folly/Synchronized.h +1833 -0
- package/external/folly/folly/SynchronizedPtr.h +106 -0
- package/external/folly/folly/ThreadCachedInt.h +175 -0
- package/external/folly/folly/ThreadLocal.h +478 -0
- package/external/folly/folly/TimeoutQueue.cpp +78 -0
- package/external/folly/folly/TimeoutQueue.h +123 -0
- package/external/folly/folly/TokenBucket.h +673 -0
- package/external/folly/folly/Traits.h +1442 -0
- package/external/folly/folly/Try-inl.h +372 -0
- package/external/folly/folly/Try.cpp +23 -0
- package/external/folly/folly/Try.h +728 -0
- package/external/folly/folly/UTF8String.h +56 -0
- package/external/folly/folly/Unicode.cpp +201 -0
- package/external/folly/folly/Unicode.h +94 -0
- package/external/folly/folly/Unit.h +65 -0
- package/external/folly/folly/Uri-inl.h +101 -0
- package/external/folly/folly/Uri.cpp +190 -0
- package/external/folly/folly/Uri.h +142 -0
- package/external/folly/folly/Utility.h +932 -0
- package/external/folly/folly/VERSION +1 -0
- package/external/folly/folly/Varint.h +230 -0
- package/external/folly/folly/VirtualExecutor.h +17 -0
- package/external/folly/folly/algorithm/simd/BUCK +47 -0
- package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
- package/external/folly/folly/algorithm/simd/Contains.h +116 -0
- package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
- package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
- package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
- package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
- package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
- package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
- package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
- package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
- package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
- package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
- package/external/folly/folly/base64.h +264 -0
- package/external/folly/folly/chrono/BUCK +29 -0
- package/external/folly/folly/chrono/Clock.h +65 -0
- package/external/folly/folly/chrono/Conv.h +712 -0
- package/external/folly/folly/chrono/test/BUCK +26 -0
- package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
- package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
- package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
- package/external/folly/folly/concurrency/BUCK +170 -0
- package/external/folly/folly/concurrency/CacheLocality.h +460 -0
- package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
- package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
- package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
- package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
- package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
- package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
- package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
- package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
- package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
- package/external/folly/folly/concurrency/container/BUCK +77 -0
- package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
- package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
- package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
- package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
- package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
- package/external/folly/folly/concurrency/container/test/BUCK +75 -0
- package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
- package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
- package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
- package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
- package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
- package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
- package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
- package/external/folly/folly/concurrency/memory/BUCK +53 -0
- package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
- package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
- package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
- package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
- package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
- package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
- package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
- package/external/folly/folly/concurrency/test/BUCK +229 -0
- package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
- package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
- package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
- package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
- package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
- package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
- package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
- package/external/folly/folly/container/Access.h +57 -0
- package/external/folly/folly/container/Array.h +87 -0
- package/external/folly/folly/container/BUCK +353 -0
- package/external/folly/folly/container/BitIterator.h +203 -0
- package/external/folly/folly/container/Enumerate.h +162 -0
- package/external/folly/folly/container/EvictingCacheMap.h +730 -0
- package/external/folly/folly/container/F14.md +300 -0
- package/external/folly/folly/container/F14Map-fwd.h +113 -0
- package/external/folly/folly/container/F14Map.h +2108 -0
- package/external/folly/folly/container/F14Set-fwd.h +95 -0
- package/external/folly/folly/container/F14Set.h +1603 -0
- package/external/folly/folly/container/FBVector.h +1711 -0
- package/external/folly/folly/container/Foreach-inl.h +316 -0
- package/external/folly/folly/container/Foreach.h +209 -0
- package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
- package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
- package/external/folly/folly/container/IntrusiveHeap.h +268 -0
- package/external/folly/folly/container/IntrusiveList.h +131 -0
- package/external/folly/folly/container/Iterator.h +843 -0
- package/external/folly/folly/container/MapUtil.h +376 -0
- package/external/folly/folly/container/Merge.h +90 -0
- package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
- package/external/folly/folly/container/RegexMatchCache.h +699 -0
- package/external/folly/folly/container/Reserve.h +109 -0
- package/external/folly/folly/container/SparseByteSet.h +123 -0
- package/external/folly/folly/container/View.h +81 -0
- package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
- package/external/folly/folly/container/detail/BUCK +115 -0
- package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
- package/external/folly/folly/container/detail/F14Defaults.h +34 -0
- package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
- package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
- package/external/folly/folly/container/detail/F14Mask.h +235 -0
- package/external/folly/folly/container/detail/F14Policy.h +1523 -0
- package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
- package/external/folly/folly/container/detail/F14Table.cpp +71 -0
- package/external/folly/folly/container/detail/F14Table.h +2680 -0
- package/external/folly/folly/container/detail/Util.h +303 -0
- package/external/folly/folly/container/detail/tape_detail.h +135 -0
- package/external/folly/folly/container/detail/test/BUCK +14 -0
- package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
- package/external/folly/folly/container/heap_vector_types.h +1683 -0
- package/external/folly/folly/container/range_traits.h +81 -0
- package/external/folly/folly/container/small_vector.h +1476 -0
- package/external/folly/folly/container/sorted_vector_types.h +1652 -0
- package/external/folly/folly/container/span.h +408 -0
- package/external/folly/folly/container/tape.h +608 -0
- package/external/folly/folly/container/test/.clang-tidy +12 -0
- package/external/folly/folly/container/test/AccessTest.cpp +138 -0
- package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
- package/external/folly/folly/container/test/BUCK +568 -0
- package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
- package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
- package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
- package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
- package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
- package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
- package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
- package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
- package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
- package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
- package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
- package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
- package/external/folly/folly/container/test/F14TestUtil.h +117 -0
- package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
- package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
- package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
- package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
- package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
- package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
- package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
- package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
- package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
- package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
- package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
- package/external/folly/folly/container/test/MergeTest.cpp +66 -0
- package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
- package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
- package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
- package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
- package/external/folly/folly/container/test/TrackingTypes.h +584 -0
- package/external/folly/folly/container/test/UtilTest.cpp +609 -0
- package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
- package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
- package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
- package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
- package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
- package/external/folly/folly/container/test/span_test.cpp +520 -0
- package/external/folly/folly/container/test/tape_bench.cpp +200 -0
- package/external/folly/folly/container/test/tape_test.cpp +590 -0
- package/external/folly/folly/defs.bzl +238 -0
- package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
- package/external/folly/folly/detail/AsyncTrace.h +44 -0
- package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
- package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
- package/external/folly/folly/detail/BUCK +406 -0
- package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
- package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
- package/external/folly/folly/detail/FileUtilDetail.h +85 -0
- package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
- package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
- package/external/folly/folly/detail/Futex-inl.h +123 -0
- package/external/folly/folly/detail/Futex.cpp +273 -0
- package/external/folly/folly/detail/Futex.h +109 -0
- package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
- package/external/folly/folly/detail/IPAddress.cpp +37 -0
- package/external/folly/folly/detail/IPAddress.h +57 -0
- package/external/folly/folly/detail/IPAddressSource.h +278 -0
- package/external/folly/folly/detail/Iterators.h +156 -0
- package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
- package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
- package/external/folly/folly/detail/MemoryIdler.h +216 -0
- package/external/folly/folly/detail/PerfScoped.cpp +112 -0
- package/external/folly/folly/detail/PerfScoped.h +70 -0
- package/external/folly/folly/detail/PolyDetail.h +921 -0
- package/external/folly/folly/detail/RangeCommon.cpp +55 -0
- package/external/folly/folly/detail/RangeCommon.h +93 -0
- package/external/folly/folly/detail/RangeSse42.cpp +198 -0
- package/external/folly/folly/detail/RangeSse42.h +30 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
- package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
- package/external/folly/folly/detail/Singleton.h +34 -0
- package/external/folly/folly/detail/SlowFingerprint.h +90 -0
- package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
- package/external/folly/folly/detail/SocketFastOpen.h +89 -0
- package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
- package/external/folly/folly/detail/SplitStringSimd.h +151 -0
- package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
- package/external/folly/folly/detail/Sse.cpp +35 -0
- package/external/folly/folly/detail/Sse.h +45 -0
- package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
- package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
- package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
- package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
- package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
- package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
- package/external/folly/folly/detail/TurnSequencer.h +295 -0
- package/external/folly/folly/detail/TypeList.h +551 -0
- package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
- package/external/folly/folly/detail/UniqueInstance.h +68 -0
- package/external/folly/folly/detail/base64_detail/BUCK +102 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
- package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
- package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
- package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
- package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
- package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
- package/external/folly/folly/detail/base64_detail/README.md +392 -0
- package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
- package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
- package/external/folly/folly/detail/test/BUCK +118 -0
- package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
- package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
- package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
- package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
- package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
- package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
- package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
- package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
- package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
- package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
- package/external/folly/folly/detail/thread_local_globals.h +36 -0
- package/external/folly/folly/docs/AtomicHashMap.md +134 -0
- package/external/folly/folly/docs/Benchmark.md +310 -0
- package/external/folly/folly/docs/Conv.md +291 -0
- package/external/folly/folly/docs/Dynamic.md +220 -0
- package/external/folly/folly/docs/DynamicConverter.md +71 -0
- package/external/folly/folly/docs/Executors.md +63 -0
- package/external/folly/folly/docs/FBString.md +46 -0
- package/external/folly/folly/docs/FBVector.md +200 -0
- package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
- package/external/folly/folly/docs/Format.md +177 -0
- package/external/folly/folly/docs/Function.md +92 -0
- package/external/folly/folly/docs/Futures.md +263 -0
- package/external/folly/folly/docs/GroupVarint.md +46 -0
- package/external/folly/folly/docs/Histogram.md +104 -0
- package/external/folly/folly/docs/MapUtils.md +80 -0
- package/external/folly/folly/docs/Overview.md +263 -0
- package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
- package/external/folly/folly/docs/Poly.md +500 -0
- package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
- package/external/folly/folly/docs/Rcu.md +218 -0
- package/external/folly/folly/docs/SmallLocks.md +24 -0
- package/external/folly/folly/docs/Synchronized.md +793 -0
- package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
- package/external/folly/folly/docs/ThreadLocal.md +105 -0
- package/external/folly/folly/docs/Traits.md +161 -0
- package/external/folly/folly/docs/small_vector.md +64 -0
- package/external/folly/folly/docs/style.css +23 -0
- package/external/folly/folly/dynamic-inl.h +17 -0
- package/external/folly/folly/dynamic.h +17 -0
- package/external/folly/folly/folly_extended_library.bzl +28 -0
- package/external/folly/folly/functional/ApplyTuple.h +204 -0
- package/external/folly/folly/functional/BUCK +57 -0
- package/external/folly/folly/functional/Invoke.h +880 -0
- package/external/folly/folly/functional/Partial.h +130 -0
- package/external/folly/folly/functional/protocol.h +203 -0
- package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
- package/external/folly/folly/functional/test/BUCK +57 -0
- package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
- package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
- package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
- package/external/folly/folly/functional/test/traits_test.cpp +551 -0
- package/external/folly/folly/functional/traits.h +675 -0
- package/external/folly/folly/hash/BUCK +86 -0
- package/external/folly/folly/hash/Checksum.cpp +275 -0
- package/external/folly/folly/hash/Checksum.h +94 -0
- package/external/folly/folly/hash/FarmHash.h +46 -0
- package/external/folly/folly/hash/Hash.h +1045 -0
- package/external/folly/folly/hash/MurmurHash.h +86 -0
- package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
- package/external/folly/folly/hash/SpookyHashV1.h +307 -0
- package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
- package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
- package/external/folly/folly/hash/detail/BUCK +26 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
- package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
- package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
- package/external/folly/folly/hash/test/BUCK +132 -0
- package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
- package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
- package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
- package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
- package/external/folly/folly/hash/test/HashTest.cpp +997 -0
- package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
- package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
- package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
- package/external/folly/folly/hash/test/traits_test.cpp +69 -0
- package/external/folly/folly/hash/traits.h +115 -0
- package/external/folly/folly/json/BUCK +155 -0
- package/external/folly/folly/json/DynamicConverter.h +464 -0
- package/external/folly/folly/json/DynamicParser-inl.h +316 -0
- package/external/folly/folly/json/DynamicParser.cpp +198 -0
- package/external/folly/folly/json/DynamicParser.h +394 -0
- package/external/folly/folly/json/JSONSchema.cpp +1030 -0
- package/external/folly/folly/json/JSONSchema.h +73 -0
- package/external/folly/folly/json/JsonMockUtil.h +73 -0
- package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
- package/external/folly/folly/json/JsonTestUtil.h +88 -0
- package/external/folly/folly/json/bser/BUCK +24 -0
- package/external/folly/folly/json/bser/Bser.h +107 -0
- package/external/folly/folly/json/bser/Dump.cpp +253 -0
- package/external/folly/folly/json/bser/Load.cpp +246 -0
- package/external/folly/folly/json/bser/test/BUCK +14 -0
- package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
- package/external/folly/folly/json/dynamic.cpp +552 -0
- package/external/folly/folly/json/dynamic.h +1346 -0
- package/external/folly/folly/json/json.h +238 -0
- package/external/folly/folly/json/json_patch.cpp +325 -0
- package/external/folly/folly/json/json_patch.h +126 -0
- package/external/folly/folly/json/json_pointer.cpp +114 -0
- package/external/folly/folly/json/json_pointer.h +87 -0
- package/external/folly/folly/json/test/BUCK +147 -0
- package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
- package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
- package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
- package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
- package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
- package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
- package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
- package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
- package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
- package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
- package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
- package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
- package/external/folly/folly/json/tool/BUCK +13 -0
- package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
- package/external/folly/folly/json.h +17 -0
- package/external/folly/folly/json_patch.h +17 -0
- package/external/folly/folly/json_pointer.h +17 -0
- package/external/folly/folly/lang/Access.h +29 -0
- package/external/folly/folly/lang/Align.h +240 -0
- package/external/folly/folly/lang/Aligned.h +92 -0
- package/external/folly/folly/lang/Assume.h +82 -0
- package/external/folly/folly/lang/BUCK +287 -0
- package/external/folly/folly/lang/Badge.h +108 -0
- package/external/folly/folly/lang/Bits.h +570 -0
- package/external/folly/folly/lang/BitsClass.h +312 -0
- package/external/folly/folly/lang/Builtin.h +74 -0
- package/external/folly/folly/lang/CArray.h +34 -0
- package/external/folly/folly/lang/CString.cpp +86 -0
- package/external/folly/folly/lang/CString.h +55 -0
- package/external/folly/folly/lang/Cast.h +51 -0
- package/external/folly/folly/lang/CheckedMath.h +253 -0
- package/external/folly/folly/lang/CustomizationPoint.h +58 -0
- package/external/folly/folly/lang/Exception.cpp +822 -0
- package/external/folly/folly/lang/Exception.h +716 -0
- package/external/folly/folly/lang/Extern.h +55 -0
- package/external/folly/folly/lang/Hint-inl.h +144 -0
- package/external/folly/folly/lang/Hint.h +238 -0
- package/external/folly/folly/lang/Keep.h +98 -0
- package/external/folly/folly/lang/New.h +124 -0
- package/external/folly/folly/lang/Ordering.h +140 -0
- package/external/folly/folly/lang/Pretty.h +159 -0
- package/external/folly/folly/lang/PropagateConst.h +413 -0
- package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
- package/external/folly/folly/lang/SafeAssert.cpp +589 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/TypeInfo.h +58 -0
- package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
- package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
- package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
- package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
- package/external/folly/folly/lang/test/BUCK +258 -0
- package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
- package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
- package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
- package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
- package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
- package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
- package/external/folly/folly/lang/test/CastTest.cpp +47 -0
- package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
- package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
- package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
- package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
- package/external/folly/folly/lang/test/HintTest.cpp +100 -0
- package/external/folly/folly/lang/test/NewTest.cpp +38 -0
- package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
- package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
- package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
- package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
- package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
- package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
- package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
- package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
- package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
- package/external/folly/folly/memcpy.S +292 -0
- package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
- package/external/folly/folly/memory/Arena-inl.h +83 -0
- package/external/folly/folly/memory/Arena.h +325 -0
- package/external/folly/folly/memory/BUCK +191 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
- package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
- package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
- package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
- package/external/folly/folly/memory/MallctlHelper.h +167 -0
- package/external/folly/folly/memory/Malloc.h +551 -0
- package/external/folly/folly/memory/MemoryResource.h +57 -0
- package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
- package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
- package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
- package/external/folly/folly/memory/SanitizeAddress.h +117 -0
- package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
- package/external/folly/folly/memory/SanitizeLeak.h +108 -0
- package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
- package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
- package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
- package/external/folly/folly/memory/detail/BUCK +10 -0
- package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
- package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
- package/external/folly/folly/memory/not_null-inl.h +522 -0
- package/external/folly/folly/memory/not_null.h +449 -0
- package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
- package/external/folly/folly/memory/test/BUCK +146 -0
- package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
- package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
- package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
- package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
- package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
- package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
- package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
- package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
- package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
- package/external/folly/folly/memset.S +245 -0
- package/external/folly/folly/memset_select_aarch64.cpp +72 -0
- package/external/folly/folly/portability/Asm.h +50 -0
- package/external/folly/folly/portability/Atomic.h +31 -0
- package/external/folly/folly/portability/BUCK +456 -0
- package/external/folly/folly/portability/Builtins.cpp +31 -0
- package/external/folly/folly/portability/Builtins.h +161 -0
- package/external/folly/folly/portability/Config.h +43 -0
- package/external/folly/folly/portability/Constexpr.h +145 -0
- package/external/folly/folly/portability/Dirent.cpp +140 -0
- package/external/folly/folly/portability/Dirent.h +41 -0
- package/external/folly/folly/portability/Event.h +44 -0
- package/external/folly/folly/portability/Fcntl.cpp +120 -0
- package/external/folly/folly/portability/Fcntl.h +67 -0
- package/external/folly/folly/portability/Filesystem.cpp +67 -0
- package/external/folly/folly/portability/Filesystem.h +114 -0
- package/external/folly/folly/portability/FmtCompile.h +40 -0
- package/external/folly/folly/portability/GFlags.h +139 -0
- package/external/folly/folly/portability/GMock.h +35 -0
- package/external/folly/folly/portability/GTest.h +35 -0
- package/external/folly/folly/portability/IOVec.h +34 -0
- package/external/folly/folly/portability/Libgen.cpp +59 -0
- package/external/folly/folly/portability/Libgen.h +29 -0
- package/external/folly/folly/portability/Libunwind.h +21 -0
- package/external/folly/folly/portability/Malloc.cpp +31 -0
- package/external/folly/folly/portability/Malloc.h +53 -0
- package/external/folly/folly/portability/Math.h +90 -0
- package/external/folly/folly/portability/Memory.h +26 -0
- package/external/folly/folly/portability/OpenSSL.cpp +17 -0
- package/external/folly/folly/portability/OpenSSL.h +102 -0
- package/external/folly/folly/portability/PThread.cpp +697 -0
- package/external/folly/folly/portability/PThread.h +148 -0
- package/external/folly/folly/portability/README.md +21 -0
- package/external/folly/folly/portability/Sched.cpp +41 -0
- package/external/folly/folly/portability/Sched.h +45 -0
- package/external/folly/folly/portability/Sockets.cpp +245 -0
- package/external/folly/folly/portability/Sockets.h +155 -0
- package/external/folly/folly/portability/SourceLocation.h +49 -0
- package/external/folly/folly/portability/Stdio.cpp +77 -0
- package/external/folly/folly/portability/Stdio.h +32 -0
- package/external/folly/folly/portability/Stdlib.cpp +172 -0
- package/external/folly/folly/portability/Stdlib.h +64 -0
- package/external/folly/folly/portability/String.cpp +53 -0
- package/external/folly/folly/portability/String.h +39 -0
- package/external/folly/folly/portability/SysFile.cpp +46 -0
- package/external/folly/folly/portability/SysFile.h +27 -0
- package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
- package/external/folly/folly/portability/SysMembarrier.h +26 -0
- package/external/folly/folly/portability/SysMman.cpp +242 -0
- package/external/folly/folly/portability/SysMman.h +68 -0
- package/external/folly/folly/portability/SysResource.cpp +108 -0
- package/external/folly/folly/portability/SysResource.h +71 -0
- package/external/folly/folly/portability/SysStat.cpp +66 -0
- package/external/folly/folly/portability/SysStat.h +52 -0
- package/external/folly/folly/portability/SysSyscall.h +73 -0
- package/external/folly/folly/portability/SysTime.cpp +62 -0
- package/external/folly/folly/portability/SysTime.h +50 -0
- package/external/folly/folly/portability/SysTypes.h +44 -0
- package/external/folly/folly/portability/SysUio.cpp +179 -0
- package/external/folly/folly/portability/SysUio.h +51 -0
- package/external/folly/folly/portability/Syslog.h +39 -0
- package/external/folly/folly/portability/Time.cpp +357 -0
- package/external/folly/folly/portability/Time.h +74 -0
- package/external/folly/folly/portability/Unistd.h +111 -0
- package/external/folly/folly/portability/Windows.h +108 -0
- package/external/folly/folly/portability/openat2.c +30 -0
- package/external/folly/folly/portability/openat2.h +39 -0
- package/external/folly/folly/portability/test/BUCK +59 -0
- package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
- package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
- package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
- package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
- package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
- package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
- package/external/folly/folly/small_vector.h +17 -0
- package/external/folly/folly/somerge_defs.bzl +399 -0
- package/external/folly/folly/sorted_vector_types.h +17 -0
- package/external/folly/folly/stop_watch.h +317 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
- package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
- package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
- package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
- package/external/folly/folly/synchronization/AtomicRef.h +181 -0
- package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
- package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
- package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
- package/external/folly/folly/synchronization/BUCK +418 -0
- package/external/folly/folly/synchronization/Baton.h +419 -0
- package/external/folly/folly/synchronization/CallOnce.h +263 -0
- package/external/folly/folly/synchronization/DelayedInit.h +179 -0
- package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
- package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
- package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
- package/external/folly/folly/synchronization/EventCount.h +200 -0
- package/external/folly/folly/synchronization/FlatCombining.h +629 -0
- package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
- package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
- package/external/folly/folly/synchronization/Hazptr.h +209 -0
- package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
- package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
- package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
- package/external/folly/folly/synchronization/HazptrObj.h +533 -0
- package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
- package/external/folly/folly/synchronization/HazptrRec.h +68 -0
- package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
- package/external/folly/folly/synchronization/Latch.h +160 -0
- package/external/folly/folly/synchronization/LifoSem.h +767 -0
- package/external/folly/folly/synchronization/Lock.h +887 -0
- package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
- package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
- package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
- package/external/folly/folly/synchronization/ParkingLot.h +330 -0
- package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
- package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
- package/external/folly/folly/synchronization/Rcu.cpp +26 -0
- package/external/folly/folly/synchronization/Rcu.h +553 -0
- package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
- package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
- package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
- package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
- package/external/folly/folly/synchronization/SmallLocks.h +36 -0
- package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
- package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
- package/external/folly/folly/synchronization/WaitOptions.h +75 -0
- package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
- package/external/folly/folly/synchronization/detail/BUCK +104 -0
- package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
- package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
- package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
- package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
- package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
- package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
- package/external/folly/folly/synchronization/detail/Spin.h +96 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
- package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
- package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
- package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
- package/external/folly/folly/synchronization/example/BUCK +27 -0
- package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
- package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
- package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
- package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
- package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
- package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
- package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
- package/external/folly/folly/synchronization/test/BUCK +495 -0
- package/external/folly/folly/synchronization/test/Barrier.h +52 -0
- package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
- package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
- package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
- package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
- package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
- package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
- package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
- package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
- package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
- package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
- package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
- package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
- package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
- package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
- package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
- package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
- package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
- package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
- package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
- package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
- package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
- package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
- package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
- package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
- package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
- package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
- package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
- package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
- package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
- package/external/folly/folly/system/AtFork.cpp +205 -0
- package/external/folly/folly/system/AtFork.h +116 -0
- package/external/folly/folly/system/AuxVector.h +198 -0
- package/external/folly/folly/system/BUCK +144 -0
- package/external/folly/folly/system/EnvUtil.cpp +93 -0
- package/external/folly/folly/system/EnvUtil.h +113 -0
- package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
- package/external/folly/folly/system/HardwareConcurrency.h +23 -0
- package/external/folly/folly/system/MemoryMapping.cpp +477 -0
- package/external/folly/folly/system/MemoryMapping.h +287 -0
- package/external/folly/folly/system/Pid.cpp +87 -0
- package/external/folly/folly/system/Pid.h +34 -0
- package/external/folly/folly/system/Shell.cpp +33 -0
- package/external/folly/folly/system/Shell.h +93 -0
- package/external/folly/folly/system/ThreadId.cpp +89 -0
- package/external/folly/folly/system/ThreadId.h +62 -0
- package/external/folly/folly/system/ThreadName.cpp +330 -0
- package/external/folly/folly/system/ThreadName.h +72 -0
- package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
- package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
- package/external/folly/folly/system/test/BUCK +120 -0
- package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
- package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
- package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
- package/external/folly/folly/system/test/PidTest.cpp +46 -0
- package/external/folly/folly/system/test/ShellTest.cpp +66 -0
- package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
- package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
- package/external/folly/folly.vcxitems +164 -0
- package/external/folly/static/logo.svg +1 -0
- package/external/folly/sync-config.json +8 -0
- package/package.json +3 -3
- package/template/cpp-app/proj/MyApp.sln +0 -33
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cs-app/proj/MyApp.sln +0 -33
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +31 -6
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/Folly/Folly.vcxproj +0 -383
- package/Folly/Folly.vcxproj.filters +0 -558
- package/Folly/Folly.win32.vcxproj +0 -11
- package/Folly/packages.lock.win32.json +0 -20
- package/Scripts/Warm-RnwFeedCache.ps1 +0 -413
- package/fmt/fmt.vcxproj +0 -163
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/fmt.win32.vcxproj +0 -10
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
- /package/{Folly → external/folly}/Folly.natvis +0 -0
- /package/{Folly → external/folly}/cgmanifest.json +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <array>
|
|
20
|
+
#include <cassert>
|
|
21
|
+
#include <chrono>
|
|
22
|
+
#include <iosfwd>
|
|
23
|
+
#include <string>
|
|
24
|
+
#include <string_view>
|
|
25
|
+
#include <tuple>
|
|
26
|
+
#include <type_traits>
|
|
27
|
+
#include <unordered_map>
|
|
28
|
+
#include <vector>
|
|
29
|
+
|
|
30
|
+
#include <folly/Chrono.h>
|
|
31
|
+
#include <folly/Function.h>
|
|
32
|
+
#include <folly/container/F14Map.h>
|
|
33
|
+
#include <folly/container/F14Set.h>
|
|
34
|
+
#include <folly/container/Reserve.h>
|
|
35
|
+
#include <folly/container/span.h>
|
|
36
|
+
#include <folly/lang/Bits.h>
|
|
37
|
+
|
|
38
|
+
namespace folly {
|
|
39
|
+
|
|
40
|
+
/// RegexMatchCacheDynamicBitset
|
|
41
|
+
///
|
|
42
|
+
/// A dynamic bitset for use within, and optimized for, RegexMatchCache.
|
|
43
|
+
/// * Small, having the same size and alignment as a pointer.
|
|
44
|
+
/// * Optimistically non-allocating, using in-situ storage for small bitsets.
|
|
45
|
+
///
|
|
46
|
+
/// Intended for use only within RegexMatchCache.
|
|
47
|
+
///
|
|
48
|
+
/// Incomplete as a generic container.
|
|
49
|
+
class RegexMatchCacheDynamicBitset {
|
|
50
|
+
private:
|
|
51
|
+
template <typename Word>
|
|
52
|
+
struct bit_span {
|
|
53
|
+
Word* data;
|
|
54
|
+
size_t size;
|
|
55
|
+
|
|
56
|
+
bit_span(Word* const data_, size_t const size_) noexcept
|
|
57
|
+
: data{data_}, size{size_} {}
|
|
58
|
+
bit_span(bit_span const&) = default;
|
|
59
|
+
bit_span& operator=(bit_span const&) = default;
|
|
60
|
+
|
|
61
|
+
auto as_tuple() const noexcept { return std::tuple{data, size}; }
|
|
62
|
+
|
|
63
|
+
friend bool operator==(bit_span const& a, bit_span const& b) noexcept {
|
|
64
|
+
return a.as_tuple() == b.as_tuple();
|
|
65
|
+
}
|
|
66
|
+
friend bool operator!=(bit_span const& a, bit_span const& b) noexcept {
|
|
67
|
+
return a.as_tuple() != b.as_tuple();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
public:
|
|
72
|
+
RegexMatchCacheDynamicBitset() = default;
|
|
73
|
+
|
|
74
|
+
RegexMatchCacheDynamicBitset(RegexMatchCacheDynamicBitset const&) = delete;
|
|
75
|
+
RegexMatchCacheDynamicBitset(RegexMatchCacheDynamicBitset&& that) noexcept
|
|
76
|
+
: data_{std::exchange(that.data_, {})} {}
|
|
77
|
+
|
|
78
|
+
~RegexMatchCacheDynamicBitset() { reset_(); }
|
|
79
|
+
|
|
80
|
+
void operator=(RegexMatchCacheDynamicBitset const&) = delete;
|
|
81
|
+
RegexMatchCacheDynamicBitset& operator=(
|
|
82
|
+
RegexMatchCacheDynamicBitset&& that) noexcept {
|
|
83
|
+
reset_();
|
|
84
|
+
data_ = std::exchange(that.data_, {});
|
|
85
|
+
return *this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
bool get_value(size_t const index) const noexcept {
|
|
89
|
+
auto data = get_bit_span_();
|
|
90
|
+
if (!(index < data.size)) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return get_value_(data, index);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
void set_value(size_t const index, bool const value) {
|
|
97
|
+
constexpr auto wordbits = (sizeof(uintptr_t) * 8);
|
|
98
|
+
auto data = get_bit_span_();
|
|
99
|
+
|
|
100
|
+
if (!(index < data.size) ||
|
|
101
|
+
(data.size == wordbits && index == wordbits - 1)) {
|
|
102
|
+
if (!value) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
data = reserve_(index);
|
|
106
|
+
}
|
|
107
|
+
assert(index < data.size);
|
|
108
|
+
set_value_(data, index, value);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
void reset() noexcept { reset_(); }
|
|
112
|
+
|
|
113
|
+
class index_set_view {
|
|
114
|
+
private:
|
|
115
|
+
friend RegexMatchCacheDynamicBitset;
|
|
116
|
+
bit_span<uintptr_t const> bitset_;
|
|
117
|
+
|
|
118
|
+
explicit index_set_view(RegexMatchCacheDynamicBitset const& bitset) noexcept
|
|
119
|
+
: bitset_{bitset.get_bit_span_()} {}
|
|
120
|
+
|
|
121
|
+
public:
|
|
122
|
+
using value_type = size_t;
|
|
123
|
+
|
|
124
|
+
class const_iterator {
|
|
125
|
+
public:
|
|
126
|
+
using value_type = size_t;
|
|
127
|
+
using difference_type = ptrdiff_t;
|
|
128
|
+
using pointer = void;
|
|
129
|
+
using iterator_category = std::forward_iterator_tag;
|
|
130
|
+
|
|
131
|
+
struct reference {
|
|
132
|
+
private:
|
|
133
|
+
friend class const_iterator;
|
|
134
|
+
|
|
135
|
+
size_t const index_;
|
|
136
|
+
|
|
137
|
+
explicit reference(size_t const index) noexcept : index_{index} {}
|
|
138
|
+
|
|
139
|
+
public:
|
|
140
|
+
operator size_t() const noexcept { return index_; }
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
private:
|
|
144
|
+
using self = const_iterator;
|
|
145
|
+
|
|
146
|
+
bit_span<uintptr_t const> const data_;
|
|
147
|
+
size_t index_;
|
|
148
|
+
|
|
149
|
+
size_t ceil_valid_index(size_t index) const noexcept {
|
|
150
|
+
constexpr auto wordbits = (sizeof(uintptr_t) * 8);
|
|
151
|
+
while (index < data_.size) {
|
|
152
|
+
auto const wordidx = index / wordbits;
|
|
153
|
+
auto const wordoff = index % wordbits;
|
|
154
|
+
if (auto const word = data_.data[wordidx] >> wordoff) {
|
|
155
|
+
return index + findFirstSet(word) - 1;
|
|
156
|
+
}
|
|
157
|
+
index = (wordidx + 1) * wordbits;
|
|
158
|
+
}
|
|
159
|
+
return index;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
public:
|
|
163
|
+
const_iterator(
|
|
164
|
+
bit_span<uintptr_t const> const data, size_t const index) noexcept
|
|
165
|
+
: data_{data}, index_{ceil_valid_index(index)} {}
|
|
166
|
+
|
|
167
|
+
reference operator*() const noexcept { return reference{index_}; }
|
|
168
|
+
const_iterator& operator++() noexcept {
|
|
169
|
+
index_ = ceil_valid_index(index_ + 1);
|
|
170
|
+
return *this;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
friend bool operator==(self const& a, self const& b) noexcept {
|
|
174
|
+
return a.index_ == b.index_;
|
|
175
|
+
}
|
|
176
|
+
friend bool operator!=(self const& a, self const& b) noexcept {
|
|
177
|
+
return a.index_ != b.index_;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const_iterator begin() const noexcept { return const_iterator{bitset_, 0}; }
|
|
182
|
+
const_iterator end() const noexcept {
|
|
183
|
+
return const_iterator{bitset_, bitset_.size};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
bool empty() const noexcept { return begin() == end(); }
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
index_set_view as_index_set_view() const noexcept {
|
|
190
|
+
return index_set_view{*this};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
private:
|
|
194
|
+
bool has_capacity_(size_t const index) const noexcept {
|
|
195
|
+
auto const buf = get_bit_span_();
|
|
196
|
+
return index < buf.size;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
bit_span<uintptr_t> reserve_(size_t const index) {
|
|
200
|
+
assert(!has_capacity_(index));
|
|
201
|
+
constexpr auto wordsize = sizeof(uintptr_t) * 8;
|
|
202
|
+
constexpr auto minsize = wordsize * 2; // min growth from in-situ to on-heap
|
|
203
|
+
auto const newsize = std::max(strictNextPowTwo(index), minsize);
|
|
204
|
+
assert(newsize >= minsize);
|
|
205
|
+
assert(newsize % wordsize == 0);
|
|
206
|
+
auto const newdata = new uintptr_t[newsize / 8];
|
|
207
|
+
auto const buf = get_bit_span_();
|
|
208
|
+
auto const buf2size = nextPowTwo(buf.size);
|
|
209
|
+
std::memcpy(newdata, buf.data, buf2size / 8);
|
|
210
|
+
std::memset(newdata + buf2size / wordsize, 0, (newsize - buf2size) / 8);
|
|
211
|
+
if (!(to_signed(data_) < 0)) {
|
|
212
|
+
auto const data = new bit_span<uintptr_t>{newdata, newsize};
|
|
213
|
+
assert(!(reinterpret_cast<uintptr_t>(data) & 1));
|
|
214
|
+
data_ = (reinterpret_cast<uintptr_t>(data) >> 1) | ~(~uintptr_t(0) >> 1);
|
|
215
|
+
return *data;
|
|
216
|
+
} else {
|
|
217
|
+
auto const data = reinterpret_cast<bit_span<uintptr_t>*>(data_ << 1);
|
|
218
|
+
delete[] data->data;
|
|
219
|
+
*data = {newdata, newsize};
|
|
220
|
+
return *data;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
void reset_() {
|
|
225
|
+
if (!(to_signed(data_) < 0)) {
|
|
226
|
+
data_ = 0;
|
|
227
|
+
} else {
|
|
228
|
+
auto const data = reinterpret_cast<bit_span<uintptr_t>*>(data_ << 1);
|
|
229
|
+
delete[] data->data;
|
|
230
|
+
delete data;
|
|
231
|
+
data_ = 0;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
template <typename Word>
|
|
236
|
+
static bool get_value_(
|
|
237
|
+
bit_span<Word> const buf, size_t const index) noexcept {
|
|
238
|
+
assert(index < buf.size);
|
|
239
|
+
constexpr auto wordbits = (sizeof(Word) * 8);
|
|
240
|
+
auto const wordidx = index / wordbits;
|
|
241
|
+
auto const wordoff = index % wordbits;
|
|
242
|
+
auto const mask = Word(1) << wordoff;
|
|
243
|
+
auto& word = buf.data[wordidx];
|
|
244
|
+
return word & mask;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
template <typename Word>
|
|
248
|
+
static void set_value_(
|
|
249
|
+
bit_span<Word> const buf, size_t const index, bool const value) noexcept {
|
|
250
|
+
assert(index < buf.size);
|
|
251
|
+
constexpr auto wordbits = (sizeof(Word) * 8);
|
|
252
|
+
assert(buf.size != wordbits || index != wordbits - 1);
|
|
253
|
+
auto const wordidx = index / wordbits;
|
|
254
|
+
auto const wordoff = index % wordbits;
|
|
255
|
+
auto const mask = Word(1) << wordoff;
|
|
256
|
+
auto& word = buf.data[wordidx];
|
|
257
|
+
word = value ? word | mask : word & ~mask;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
bit_span<uintptr_t const> get_bit_span_() const noexcept {
|
|
261
|
+
if (!(to_signed(data_) < 0)) {
|
|
262
|
+
return {&data_, sizeof(data_) * 8};
|
|
263
|
+
} else {
|
|
264
|
+
return *reinterpret_cast<bit_span<uintptr_t const> const*>(data_ << 1);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
bit_span<uintptr_t> get_bit_span_() noexcept {
|
|
269
|
+
if (!(to_signed(data_) < 0)) {
|
|
270
|
+
return {&data_, sizeof(data_) * 8};
|
|
271
|
+
} else {
|
|
272
|
+
return *reinterpret_cast<bit_span<uintptr_t> const*>(data_ << 1);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
uintptr_t data_{};
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
/// RegexMatchCacheIndexedVector
|
|
280
|
+
///
|
|
281
|
+
/// An indexed vector, which is a vector for which the index of any element can
|
|
282
|
+
/// be found efficiently.
|
|
283
|
+
///
|
|
284
|
+
/// Intended for use only within RegexMatchCache.
|
|
285
|
+
///
|
|
286
|
+
/// Incomplete as a generic container.
|
|
287
|
+
template <typename Value>
|
|
288
|
+
class RegexMatchCacheIndexedVector {
|
|
289
|
+
public:
|
|
290
|
+
size_t size() const noexcept { return forward_.size(); }
|
|
291
|
+
|
|
292
|
+
bool contains_index(size_t index) const noexcept {
|
|
293
|
+
return reverse_.contains(index);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
bool contains_value(Value const& value) const noexcept {
|
|
297
|
+
return forward_.contains(value);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
std::pair<size_t, bool> insert_value(Value const& value) {
|
|
301
|
+
auto [iter, inserted] = forward_.try_emplace(value);
|
|
302
|
+
if (inserted) {
|
|
303
|
+
auto rollback_forward =
|
|
304
|
+
makeGuard([&, iter_ = iter] { forward_.erase(iter_); });
|
|
305
|
+
if (free_.capacity() < forward_.size()) {
|
|
306
|
+
grow_capacity_by(free_, forward_.size() - free_.size());
|
|
307
|
+
}
|
|
308
|
+
assert(!(free_.capacity() < forward_.size()));
|
|
309
|
+
auto const from_free = !free_.empty();
|
|
310
|
+
auto const index = from_free ? free_.back() : forward_.size() - 1;
|
|
311
|
+
from_free ? free_.pop_back() : void();
|
|
312
|
+
iter->second = index;
|
|
313
|
+
auto rollback_free =
|
|
314
|
+
makeGuard([&] { from_free ? free_.push_back(index) : void(); });
|
|
315
|
+
assert(!reverse_.contains(index));
|
|
316
|
+
reverse_[index] = value;
|
|
317
|
+
rollback_free.dismiss();
|
|
318
|
+
rollback_forward.dismiss();
|
|
319
|
+
}
|
|
320
|
+
return {iter->second, inserted};
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
bool erase_value(Value const& value) noexcept {
|
|
324
|
+
auto iter = forward_.find(value);
|
|
325
|
+
if (iter == forward_.end()) {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
assert(free_.size() < free_.capacity());
|
|
329
|
+
auto index = iter->second;
|
|
330
|
+
free_.push_back(index);
|
|
331
|
+
forward_.erase(iter);
|
|
332
|
+
reverse_.erase(index);
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
void clear() noexcept {
|
|
337
|
+
reverse_.clear();
|
|
338
|
+
forward_.clear();
|
|
339
|
+
free_.clear();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
Value const& value_at_index(size_t index) const { return reverse_.at(index); }
|
|
343
|
+
|
|
344
|
+
size_t index_of_value(Value const& value) const { return forward_.at(value); }
|
|
345
|
+
|
|
346
|
+
class forward_view {
|
|
347
|
+
private:
|
|
348
|
+
friend RegexMatchCacheIndexedVector;
|
|
349
|
+
using map_t = folly::F14FastMap<Value, size_t>;
|
|
350
|
+
map_t const& map;
|
|
351
|
+
explicit forward_view(map_t const& map_) noexcept : map{map_} {}
|
|
352
|
+
|
|
353
|
+
public:
|
|
354
|
+
using value_type = typename map_t::value_type;
|
|
355
|
+
using size_type = typename map_t::size_type;
|
|
356
|
+
using iterator = typename map_t::const_iterator;
|
|
357
|
+
|
|
358
|
+
size_t size() const noexcept { return map.size(); }
|
|
359
|
+
iterator begin() const noexcept { return map.begin(); }
|
|
360
|
+
iterator end() const noexcept { return map.end(); }
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
forward_view as_forward_view() const noexcept {
|
|
364
|
+
return forward_view{forward_};
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
private:
|
|
368
|
+
std::vector<size_t> free_;
|
|
369
|
+
folly::F14FastMap<Value, size_t> forward_;
|
|
370
|
+
folly::F14FastMap<size_t, Value> reverse_;
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
/// RegexMatchCacheKey
|
|
374
|
+
///
|
|
375
|
+
/// A key derived from a string. Used with RegexMatchCache.
|
|
376
|
+
///
|
|
377
|
+
/// Intended for use only with RegexMatchCache.
|
|
378
|
+
///
|
|
379
|
+
/// Incomplete as a generic facility.
|
|
380
|
+
class RegexMatchCacheKey {
|
|
381
|
+
private:
|
|
382
|
+
using self = RegexMatchCacheKey;
|
|
383
|
+
|
|
384
|
+
static inline constexpr size_t data_size = 32;
|
|
385
|
+
static inline constexpr size_t data_align = alignof(size_t);
|
|
386
|
+
|
|
387
|
+
using data_type = std::array<unsigned char, data_size>;
|
|
388
|
+
|
|
389
|
+
alignas(data_align) data_type const data_;
|
|
390
|
+
|
|
391
|
+
static data_type init(std::string_view regex) noexcept;
|
|
392
|
+
|
|
393
|
+
template <typename T, typename V = std::remove_cv_t<T>>
|
|
394
|
+
static constexpr bool is_span_compatible(size_t const e) noexcept {
|
|
395
|
+
return //
|
|
396
|
+
!std::is_volatile_v<T> && //
|
|
397
|
+
std::is_integral_v<V> && //
|
|
398
|
+
std::is_unsigned_v<V> && //
|
|
399
|
+
!std::is_same_v<bool, V> && //
|
|
400
|
+
!std::is_same_v<char, V> && //
|
|
401
|
+
alignof(V) <= data_align &&
|
|
402
|
+
(e == data_size / sizeof(V) || e == dynamic_extent);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
public:
|
|
406
|
+
explicit RegexMatchCacheKey(std::string_view regex) noexcept
|
|
407
|
+
: data_{init(regex)} {}
|
|
408
|
+
|
|
409
|
+
template <
|
|
410
|
+
typename T,
|
|
411
|
+
std::size_t E,
|
|
412
|
+
std::enable_if_t<is_span_compatible<T>(E), int> = 0>
|
|
413
|
+
explicit operator span<T const, E>() const noexcept {
|
|
414
|
+
return {reinterpret_cast<T const*>(data_.data()), E};
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
friend auto operator==(self const& a, self const& b) noexcept {
|
|
418
|
+
return a.data_ == b.data_;
|
|
419
|
+
}
|
|
420
|
+
friend auto operator!=(self const& a, self const& b) noexcept {
|
|
421
|
+
return a.data_ != b.data_;
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
} // namespace folly
|
|
426
|
+
|
|
427
|
+
namespace std {
|
|
428
|
+
|
|
429
|
+
template <>
|
|
430
|
+
struct hash<::folly::RegexMatchCacheKey> {
|
|
431
|
+
using folly_is_avalanching = std::true_type;
|
|
432
|
+
|
|
433
|
+
size_t operator()(::folly::RegexMatchCacheKey const& key) const noexcept {
|
|
434
|
+
return ::folly::span<size_t const>{key}[0];
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
} // namespace std
|
|
439
|
+
|
|
440
|
+
namespace folly {
|
|
441
|
+
|
|
442
|
+
/// RegexMatchCacheKeyAndView
|
|
443
|
+
///
|
|
444
|
+
/// A composite key and view derived from a string. Used with RegexMatchCache.
|
|
445
|
+
///
|
|
446
|
+
/// Intended for use only with RegexMatchCache.
|
|
447
|
+
///
|
|
448
|
+
/// Incomplete as a generic facility.
|
|
449
|
+
class RegexMatchCacheKeyAndView {
|
|
450
|
+
public:
|
|
451
|
+
using regex_key = RegexMatchCacheKey;
|
|
452
|
+
|
|
453
|
+
regex_key const key;
|
|
454
|
+
std::string_view const view;
|
|
455
|
+
|
|
456
|
+
explicit RegexMatchCacheKeyAndView(std::string_view regex) noexcept
|
|
457
|
+
: key{regex}, view{regex} {}
|
|
458
|
+
|
|
459
|
+
/* implicit */ operator RegexMatchCacheKey const&() const noexcept {
|
|
460
|
+
return key;
|
|
461
|
+
}
|
|
462
|
+
/* implicit */ operator std::string_view const&() const noexcept {
|
|
463
|
+
return view;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
private:
|
|
467
|
+
RegexMatchCacheKeyAndView(
|
|
468
|
+
regex_key const& k, std::string_view const v) noexcept
|
|
469
|
+
: key{k}, view{v} {}
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
/// RegexMatchCache
|
|
473
|
+
///
|
|
474
|
+
/// A cache around boost::regex_match(string, regex).
|
|
475
|
+
///
|
|
476
|
+
/// For efficiency, assumes several constraints and makes several guarantees.
|
|
477
|
+
///
|
|
478
|
+
/// The data structure owns regexes but does not own strings. The lifetimes of
|
|
479
|
+
/// all strings in the cache must surround their additions to the cache and
|
|
480
|
+
/// their subsequent removals from the cache or destruction of the cache.
|
|
481
|
+
///
|
|
482
|
+
/// The data structure is in two parts:
|
|
483
|
+
/// * A bidirectional match-cache contains all known matches.
|
|
484
|
+
/// * a bidirectional string-queue contains unknown, hypothetical matches.
|
|
485
|
+
///
|
|
486
|
+
/// Cached lookup operates only over the match-cache. When the string-queue for
|
|
487
|
+
/// a given regex is not empty, that regex is said to be uncoalesced. Cached
|
|
488
|
+
/// lookups are not permitted for an uncoalesced regex; that regex must first be
|
|
489
|
+
/// coalesced.
|
|
490
|
+
///
|
|
491
|
+
/// Addition of a string adds the string to the string-queue corresponding to
|
|
492
|
+
/// all known regexes. It does not perform any regex-match operations.
|
|
493
|
+
///
|
|
494
|
+
/// Addition and coalesce of a regex performs regex-matches for that regex only.
|
|
495
|
+
/// The string-queue for the given regex is removed and all elements matched
|
|
496
|
+
/// against the regex, and matching strings are added to the match-cache.
|
|
497
|
+
///
|
|
498
|
+
/// Lookup must follow a pattern like this:
|
|
499
|
+
///
|
|
500
|
+
/// if (!cache.isReadyToFindMatches(regex)) { // const
|
|
501
|
+
/// cache.prepareToFindMatches(regex); // non-const
|
|
502
|
+
/// }
|
|
503
|
+
/// auto matches = cache.findMatches(regex); // const
|
|
504
|
+
///
|
|
505
|
+
/// This is to support concurrent lookups, where the cache is protected by a
|
|
506
|
+
/// shared mutex.
|
|
507
|
+
///
|
|
508
|
+
/// The data structure is exception-safe in a sense. If an exception is thrown
|
|
509
|
+
/// within any non-const member function and escapes, the data structure may
|
|
510
|
+
/// purge all cached regexes while leaving all strings. In most such member
|
|
511
|
+
/// functions, only a memory-allocation failure would cause an exception to be
|
|
512
|
+
/// thrown. But in prepareToFindMatches, the provided regex may be syntactically
|
|
513
|
+
/// invalid and parsing it may throw, or it may be pathological and evaluating
|
|
514
|
+
/// it over a string may throw. In any event, the resolution is to clear out all
|
|
515
|
+
/// added regexes and to leave only the added strings. The reason is that this
|
|
516
|
+
/// resolution is simple and likely to be correct, while any other mechanism
|
|
517
|
+
/// would be complex and would be likely to have bugs.
|
|
518
|
+
class RegexMatchCache {
|
|
519
|
+
public:
|
|
520
|
+
using clock = folly::chrono::coarse_steady_clock;
|
|
521
|
+
using time_point = clock::time_point;
|
|
522
|
+
|
|
523
|
+
using regex_key = RegexMatchCacheKey;
|
|
524
|
+
using regex_key_and_view = RegexMatchCacheKeyAndView;
|
|
525
|
+
|
|
526
|
+
private:
|
|
527
|
+
using regex_pointer = regex_key const*;
|
|
528
|
+
using string_pointer = std::string const*;
|
|
529
|
+
|
|
530
|
+
class RegexObject;
|
|
531
|
+
|
|
532
|
+
struct RegexToMatchEntry : MoveOnly {
|
|
533
|
+
mutable std::atomic<time_point> accessed_at{};
|
|
534
|
+
|
|
535
|
+
folly::F14VectorSet<string_pointer> matches;
|
|
536
|
+
};
|
|
537
|
+
|
|
538
|
+
struct MatchToRegexEntry : MoveOnly {
|
|
539
|
+
RegexMatchCacheDynamicBitset regexes;
|
|
540
|
+
};
|
|
541
|
+
|
|
542
|
+
struct StringQueueForwardEntry : MoveOnly {
|
|
543
|
+
RegexMatchCacheDynamicBitset regexes;
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
struct StringQueueReverseEntry : MoveOnly {
|
|
547
|
+
folly::F14VectorSet<string_pointer> strings;
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
RegexMatchCacheIndexedVector<regex_pointer> regexVector_;
|
|
551
|
+
|
|
552
|
+
/// cacheRegexToMatch_
|
|
553
|
+
///
|
|
554
|
+
/// A match-cache map from regexes to the sets of matching strings.
|
|
555
|
+
///
|
|
556
|
+
/// The set of matching strings for a given regex may be incomplete. This
|
|
557
|
+
/// happens when strings are added to the universe but have not yet been
|
|
558
|
+
/// coalesced for the given regex. The set of uncoalesced strings for a
|
|
559
|
+
/// given regex is in stringQueueReverse_.
|
|
560
|
+
///
|
|
561
|
+
/// For each regex, includes a last-accessed-at timestamp. This timestamp
|
|
562
|
+
/// is used when purging old regexes from the cache, for the caller's own
|
|
563
|
+
/// definition of old.
|
|
564
|
+
folly::F14NodeMap<regex_key, RegexToMatchEntry> cacheRegexToMatch_;
|
|
565
|
+
|
|
566
|
+
/// cacheMatchToRegex_
|
|
567
|
+
///
|
|
568
|
+
/// A match-cache map from strings to the sets of matching regexes.
|
|
569
|
+
///
|
|
570
|
+
/// The set of matching regexes for a given string may be incomplete. This
|
|
571
|
+
/// happens when strings are added to the universe but have not yet been
|
|
572
|
+
/// coalesced for all regexes in the universe. The set of regexes for which
|
|
573
|
+
/// a given string has not yet been coalesced is in stringQueueForward_.
|
|
574
|
+
folly::F14FastMap<string_pointer, MatchToRegexEntry> cacheMatchToRegex_;
|
|
575
|
+
|
|
576
|
+
/// stringQueueForward_
|
|
577
|
+
///
|
|
578
|
+
/// A pending-coalesce map from strings to regexes for which the strings have
|
|
579
|
+
/// not yet been coalesced, that is, for which it is not yet known that the
|
|
580
|
+
/// strings do or do not match the given regexes.
|
|
581
|
+
///
|
|
582
|
+
/// In a steady-state when all strings have been coalesced for all regexes,
|
|
583
|
+
/// this map would be empty.
|
|
584
|
+
folly::F14FastMap<string_pointer, StringQueueForwardEntry>
|
|
585
|
+
stringQueueForward_;
|
|
586
|
+
|
|
587
|
+
/// stringQueueReverse_
|
|
588
|
+
///
|
|
589
|
+
/// A pending-coalesce map from regexes to strings which have not yet been
|
|
590
|
+
/// coalesced for the given regex, that is, for which it is not yet known that
|
|
591
|
+
/// the strings do or do not match the given regexes.
|
|
592
|
+
///
|
|
593
|
+
/// In a steady-state when all strings have been coalesced for all regexes,
|
|
594
|
+
/// this map would be empty.
|
|
595
|
+
folly::F14FastMap<regex_pointer, StringQueueReverseEntry> stringQueueReverse_;
|
|
596
|
+
|
|
597
|
+
void repair() noexcept;
|
|
598
|
+
|
|
599
|
+
public:
|
|
600
|
+
class KeyMap {
|
|
601
|
+
public:
|
|
602
|
+
using regex_key = RegexMatchCacheKey;
|
|
603
|
+
using regex_key_and_view = RegexMatchCacheKeyAndView;
|
|
604
|
+
|
|
605
|
+
virtual ~KeyMap() = 0;
|
|
606
|
+
|
|
607
|
+
virtual std::string_view lookup(regex_key const& regex) const = 0;
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
class InspectView {
|
|
611
|
+
friend RegexMatchCache;
|
|
612
|
+
|
|
613
|
+
private:
|
|
614
|
+
RegexMatchCache const& ref_;
|
|
615
|
+
KeyMap const& keys_;
|
|
616
|
+
|
|
617
|
+
explicit InspectView(
|
|
618
|
+
RegexMatchCache const& ref, KeyMap const& keys) noexcept
|
|
619
|
+
: ref_{ref}, keys_{keys} {}
|
|
620
|
+
|
|
621
|
+
void print(std::ostream& o) const;
|
|
622
|
+
|
|
623
|
+
public:
|
|
624
|
+
friend std::ostream& operator<<(std::ostream& o, InspectView const view) {
|
|
625
|
+
return (view.print(o), o);
|
|
626
|
+
}
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
class ConsistencyReportMatcher {
|
|
630
|
+
private:
|
|
631
|
+
struct state;
|
|
632
|
+
std::unique_ptr<state> state_;
|
|
633
|
+
|
|
634
|
+
public:
|
|
635
|
+
using regex_key = RegexMatchCache::regex_key;
|
|
636
|
+
using regex_key_and_view = RegexMatchCache::regex_key_and_view;
|
|
637
|
+
using string_pointer = RegexMatchCache::string_pointer;
|
|
638
|
+
|
|
639
|
+
ConsistencyReportMatcher();
|
|
640
|
+
virtual ~ConsistencyReportMatcher();
|
|
641
|
+
|
|
642
|
+
virtual bool match(
|
|
643
|
+
KeyMap const& keys, regex_key regex, string_pointer string);
|
|
644
|
+
};
|
|
645
|
+
|
|
646
|
+
class FindMatchesUnsafeResult {
|
|
647
|
+
private:
|
|
648
|
+
friend class RegexMatchCache;
|
|
649
|
+
|
|
650
|
+
using map_t = folly::F14VectorSet<string_pointer>;
|
|
651
|
+
|
|
652
|
+
map_t const& matches_;
|
|
653
|
+
|
|
654
|
+
/* implicit */ FindMatchesUnsafeResult(map_t const& matches) noexcept
|
|
655
|
+
: matches_{matches} {}
|
|
656
|
+
|
|
657
|
+
public:
|
|
658
|
+
using value_type = map_t::value_type;
|
|
659
|
+
|
|
660
|
+
auto size() const noexcept { return matches_.size(); }
|
|
661
|
+
auto begin() const noexcept { return matches_.begin(); }
|
|
662
|
+
auto end() const noexcept { return matches_.end(); }
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
RegexMatchCache() noexcept;
|
|
666
|
+
~RegexMatchCache();
|
|
667
|
+
|
|
668
|
+
std::vector<std::string_view> getRegexList(KeyMap const& keys) const;
|
|
669
|
+
std::vector<string_pointer> getStringList() const;
|
|
670
|
+
InspectView inspect(KeyMap const& keys) const noexcept {
|
|
671
|
+
return InspectView{*this, keys};
|
|
672
|
+
}
|
|
673
|
+
void consistency(
|
|
674
|
+
ConsistencyReportMatcher& crcache,
|
|
675
|
+
KeyMap const& keys,
|
|
676
|
+
FunctionRef<void(std::string)> report) const;
|
|
677
|
+
|
|
678
|
+
bool hasRegex(regex_key const& regex) const noexcept;
|
|
679
|
+
void addRegex(regex_key const& regex);
|
|
680
|
+
void eraseRegex(regex_key const& regex);
|
|
681
|
+
|
|
682
|
+
bool hasString(string_pointer string) const noexcept;
|
|
683
|
+
void addString(string_pointer string);
|
|
684
|
+
void eraseString(string_pointer string);
|
|
685
|
+
|
|
686
|
+
std::vector<string_pointer> findMatchesUncached(std::string_view regex) const;
|
|
687
|
+
|
|
688
|
+
bool isReadyToFindMatches(regex_key const& regex) const noexcept;
|
|
689
|
+
void prepareToFindMatches(regex_key_and_view const& regex);
|
|
690
|
+
FindMatchesUnsafeResult findMatchesUnsafe(
|
|
691
|
+
regex_key const& regex, time_point now) const;
|
|
692
|
+
std::vector<string_pointer> findMatches(
|
|
693
|
+
regex_key const& regex, time_point now) const;
|
|
694
|
+
|
|
695
|
+
void clear();
|
|
696
|
+
void purge(time_point expiry);
|
|
697
|
+
};
|
|
698
|
+
|
|
699
|
+
} // namespace folly
|