react-native-windows 0.81.32 → 0.81.35
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 +2 -17
- 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/Microsoft.ReactNative.vcxproj +2 -8
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
- package/PropertySheets/Bundle.props +3 -3
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +2 -1
- package/PropertySheets/React.Cpp.props +4 -4
- package/ReactCommon/ReactCommon.vcxproj +0 -10
- package/ReactCommon/packages.lock.win32.json +0 -10
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/Warm-RnwFeedCache.ps1 +413 -0
- package/Scripts/creaternwapp.cmd +5 -1
- package/Scripts/creaternwlib.cmd +8 -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 +11 -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/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 +12 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/{fmt → external/fmt}/cgmanifest.json +1 -1
- 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 +61 -0
- package/external/folly/LICENSE +200 -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/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/sync-config.json +8 -0
- package/package.json +6 -6
- 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/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/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,551 @@
|
|
|
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 <cstddef>
|
|
20
|
+
#include <utility>
|
|
21
|
+
|
|
22
|
+
#include <folly/Traits.h>
|
|
23
|
+
#include <folly/Utility.h>
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* \file TypeList.h
|
|
27
|
+
* \author Eric Niebler
|
|
28
|
+
*
|
|
29
|
+
* The file contains facilities for manipulating lists of types, and for
|
|
30
|
+
* defining and composing operations over types.
|
|
31
|
+
*
|
|
32
|
+
* The type-operations behave like compile-time functions: they accept types as
|
|
33
|
+
* input and produce types as output. A simple example is a template alias, like
|
|
34
|
+
* `std::add_pointer_t`. However, templates are not themselves first class
|
|
35
|
+
* citizens of the language; they cannot be easily "returned" from a
|
|
36
|
+
* metafunction, and passing them to a metafunction is awkward and often
|
|
37
|
+
* requires the user to help the C++ parser by adding hints like `typename`
|
|
38
|
+
* and `template` to disambiguate the syntax. That makes higher-ordered
|
|
39
|
+
* metaprogramming difficult. (There is no simple way to e.g., compose two
|
|
40
|
+
* template aliases and pass the result as an argument to another template.)
|
|
41
|
+
*
|
|
42
|
+
* Instead, we wrap template aliases in a ordinary class, which _can_ be passed
|
|
43
|
+
* and returned simply from metafunctions. This is like Boost.MPL's notion of a
|
|
44
|
+
* "metafunction class"[1], and we adopt that terminology here.
|
|
45
|
+
*
|
|
46
|
+
* For the Folly.TypeList library, a metafunction class is a protocol that
|
|
47
|
+
* all the components of Folly.TypeList expect and agree upon. It is a class
|
|
48
|
+
* type that has a nested template alias called `Apply`. So for instance,
|
|
49
|
+
* `std::add_pointer_t` as a Folly metafunction class would look like this:
|
|
50
|
+
*
|
|
51
|
+
* struct AddPointer {
|
|
52
|
+
* template <class T>
|
|
53
|
+
* using apply = T*;
|
|
54
|
+
* };
|
|
55
|
+
*
|
|
56
|
+
* Folly.TypeList gives a simple way to "lift" an ordinary template alias into
|
|
57
|
+
* a metafunction class: `MetaQuote`. The above `AddPointer` could instead be
|
|
58
|
+
* written as:
|
|
59
|
+
*
|
|
60
|
+
* using AddPointer = folly::MetaQuote<std::add_pointer_t>;
|
|
61
|
+
*
|
|
62
|
+
* \par Naming
|
|
63
|
+
*
|
|
64
|
+
* A word about naming. Components in Folly.TypeList fall into two buckets:
|
|
65
|
+
* utilities for manipulating lists of types, and utilities for manipulating
|
|
66
|
+
* metafunction classes. The former have names that start with `Type`, as in
|
|
67
|
+
* `TypeList` and `TypeTransform`. The latter have names that start with `Meta`,
|
|
68
|
+
* as in `MetaQuote` and `MetaApply`.
|
|
69
|
+
*
|
|
70
|
+
* [1] Boost.MPL Metafunction Class:
|
|
71
|
+
* http://www.boost.org/libs/mpl/doc/refmanual/metafunction-class.html
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
namespace folly {
|
|
75
|
+
namespace detail {
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Handy shortcuts for some standard facilities
|
|
79
|
+
*/
|
|
80
|
+
template <bool B>
|
|
81
|
+
using Bool = std::bool_constant<B>;
|
|
82
|
+
using True = std::true_type;
|
|
83
|
+
using False = std::false_type;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Given a metafunction class `Fn` and arguments `Ts...`, invoke `Fn`
|
|
87
|
+
* with `Ts...`.
|
|
88
|
+
*/
|
|
89
|
+
template <class Fn, class... Ts>
|
|
90
|
+
using MetaApply = typename Fn::template apply<Ts...>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A list of types.
|
|
94
|
+
*/
|
|
95
|
+
template <class... Ts>
|
|
96
|
+
struct TypeList {
|
|
97
|
+
/**
|
|
98
|
+
* An alias for this list of types
|
|
99
|
+
*/
|
|
100
|
+
using type = TypeList;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* \return the number of types in this list.
|
|
104
|
+
*/
|
|
105
|
+
static constexpr std::size_t size() noexcept { return sizeof...(Ts); }
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* This list of types is also a metafunction class that accepts another
|
|
109
|
+
* metafunction class and invokes it with all the types in the list.
|
|
110
|
+
*/
|
|
111
|
+
template <class Fn>
|
|
112
|
+
using apply = MetaApply<Fn, Ts...>;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* A wrapper for a type
|
|
117
|
+
*/
|
|
118
|
+
template <class T>
|
|
119
|
+
struct Type {
|
|
120
|
+
/**
|
|
121
|
+
* An alias for the wrapped type
|
|
122
|
+
*/
|
|
123
|
+
using type = T;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This wrapper is a metafunction class that, when applied with any number
|
|
127
|
+
* of arguments, returns the wrapped type.
|
|
128
|
+
*/
|
|
129
|
+
template <class...>
|
|
130
|
+
using apply = T;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* An empty struct.
|
|
135
|
+
*/
|
|
136
|
+
struct Empty {};
|
|
137
|
+
|
|
138
|
+
/// \cond
|
|
139
|
+
namespace impl {
|
|
140
|
+
template <bool B>
|
|
141
|
+
struct If_ {
|
|
142
|
+
template <class T, class U>
|
|
143
|
+
using apply = T;
|
|
144
|
+
};
|
|
145
|
+
template <>
|
|
146
|
+
struct If_<false> {
|
|
147
|
+
template <class T, class U>
|
|
148
|
+
using apply = U;
|
|
149
|
+
};
|
|
150
|
+
} // namespace impl
|
|
151
|
+
/// \endcond
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Like std::conditional, but with fewer template instantiations
|
|
155
|
+
*/
|
|
156
|
+
template <bool If_, class Then, class Else>
|
|
157
|
+
using If = MetaApply<impl::If_<If_>, Then, Else>;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Defers the evaluation of an alias.
|
|
161
|
+
*
|
|
162
|
+
* Given a template `C` and arguments `Ts...`, then
|
|
163
|
+
* - If `C<Ts...>` is well-formed, `MetaApply<MetaDefer<C, Ts...>>` is well-
|
|
164
|
+
* formed and is an alias for `C<Ts...>`.
|
|
165
|
+
* - Otherwise, `MetaApply<MetaDefer<C, Ts...>>` is ill-formed.
|
|
166
|
+
*/
|
|
167
|
+
template <template <class...> class C, class... Ts>
|
|
168
|
+
class MetaDefer {
|
|
169
|
+
template <template <class...> class D, class = D<Ts...>>
|
|
170
|
+
static char (&try_(int))[1];
|
|
171
|
+
|
|
172
|
+
template <template <class...> class D, class = void>
|
|
173
|
+
static char (&try_(long))[2];
|
|
174
|
+
struct Result {
|
|
175
|
+
using type = C<Ts...>;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
public:
|
|
179
|
+
template <class... Us>
|
|
180
|
+
using apply = _t<If<sizeof(try_<C>(0)) - 1 || sizeof...(Us), Empty, Result>>;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Compose two metafunction classes into one by chaining.
|
|
185
|
+
*
|
|
186
|
+
* `MetaApply<MetaCompose<P, Q>, Ts...>` is equivalent to
|
|
187
|
+
* `MetaApply<P, MetaApply<Q, Ts...>>`.
|
|
188
|
+
*/
|
|
189
|
+
template <class P, class Q>
|
|
190
|
+
struct MetaCompose {
|
|
191
|
+
template <class... Ts>
|
|
192
|
+
using apply = MetaApply<P, MetaApply<Q, Ts...>>;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* A metafunction class that always returns its argument unmodified.
|
|
197
|
+
*
|
|
198
|
+
* `MetaApply<MetaIdentity, int>` is equivalent to `int`.
|
|
199
|
+
*/
|
|
200
|
+
struct MetaIdentity {
|
|
201
|
+
template <class T>
|
|
202
|
+
using apply = T;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Lifts a class template or an alias template to be a metafunction class.
|
|
207
|
+
*
|
|
208
|
+
* `MetaApply<MetaQuote<C>, Ts...>` is equivalent to `C<Ts...>`.
|
|
209
|
+
*/
|
|
210
|
+
template <template <class...> class C>
|
|
211
|
+
struct MetaQuote {
|
|
212
|
+
template <class... Ts>
|
|
213
|
+
using apply = MetaApply<MetaDefer<C, Ts...>>;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/// \cond
|
|
217
|
+
// Specialization for TypeList since it doesn't need to go through MetaDefer
|
|
218
|
+
template <>
|
|
219
|
+
struct MetaQuote<TypeList> {
|
|
220
|
+
template <class... Ts>
|
|
221
|
+
using apply = TypeList<Ts...>;
|
|
222
|
+
};
|
|
223
|
+
/// \endcond
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Lifts a trait class template to be a metafunction class.
|
|
227
|
+
*
|
|
228
|
+
* `MetaApply<MetaQuoteTrait<C>, Ts...>` is equivalent to
|
|
229
|
+
* `typename C<Ts...>::type`.
|
|
230
|
+
*/
|
|
231
|
+
template <template <class...> class C>
|
|
232
|
+
using MetaQuoteTrait = MetaCompose<MetaQuote<_t>, MetaQuote<C>>;
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Partially evaluate the metafunction class `Fn` by binding the arguments
|
|
236
|
+
* `Ts...` to the front of the argument list.
|
|
237
|
+
*
|
|
238
|
+
* `MetaApply<MetaBindFront<Fn, Ts...>, Us...>` is equivalent to
|
|
239
|
+
* `MetaApply<Fn, Ts..., Us...>`.
|
|
240
|
+
*/
|
|
241
|
+
template <class Fn, class... Ts>
|
|
242
|
+
struct MetaBindFront {
|
|
243
|
+
template <class... Us>
|
|
244
|
+
using apply = MetaApply<Fn, Ts..., Us...>;
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Partially evaluate the metafunction class `Fn` by binding the arguments
|
|
249
|
+
* `Ts...` to the back of the argument list.
|
|
250
|
+
*
|
|
251
|
+
* `MetaApply<MetaBindBack<Fn, Ts...>, Us...>` is equivalent to
|
|
252
|
+
* `MetaApply<Fn, Us..., Ts...>`.
|
|
253
|
+
*/
|
|
254
|
+
template <class Fn, class... Ts>
|
|
255
|
+
struct MetaBindBack {
|
|
256
|
+
template <class... Us>
|
|
257
|
+
using apply = MetaApply<Fn, Us..., Ts...>;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Given a metafunction class `Fn` that expects a single `TypeList` argument,
|
|
262
|
+
* turn it into a metafunction class that takes `N` arguments, wraps them in
|
|
263
|
+
* a `TypeList`, and calls `Fn` with it.
|
|
264
|
+
*
|
|
265
|
+
* `MetaApply<MetaCurry<Fn>, Ts...>` is equivalent to
|
|
266
|
+
* `MetaApply<Fn, TypeList<Ts...>>`.
|
|
267
|
+
*/
|
|
268
|
+
template <class Fn>
|
|
269
|
+
using MetaCurry = MetaCompose<Fn, MetaQuote<TypeList>>;
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Given a metafunction class `Fn` that expects `N` arguments,
|
|
273
|
+
* turn it into a metafunction class that takes a single `TypeList` arguments
|
|
274
|
+
* and calls `Fn` with the types in the `TypeList`.
|
|
275
|
+
*
|
|
276
|
+
* `MetaApply<MetaUncurry<Fn>, TypeList<Ts...>>` is equivalent to
|
|
277
|
+
* `MetaApply<Fn, Ts...>`.
|
|
278
|
+
*/
|
|
279
|
+
template <class Fn>
|
|
280
|
+
using MetaUncurry = MetaBindBack<MetaQuote<MetaApply>, Fn>;
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Given a `TypeList` and some arguments, append those arguments to the end of
|
|
284
|
+
* the `TypeList`.
|
|
285
|
+
*
|
|
286
|
+
* `TypePushBack<TypeList<Ts...>, Us...>` is equivalent to
|
|
287
|
+
* `TypeList<Ts..., Us...>`.
|
|
288
|
+
*/
|
|
289
|
+
template <class List, class... Ts>
|
|
290
|
+
using TypePushBack = MetaApply<List, MetaBindBack<MetaQuote<TypeList>, Ts...>>;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Given a `TypeList` and some arguments, prepend those arguments to the start
|
|
294
|
+
* of the `TypeList`.
|
|
295
|
+
*
|
|
296
|
+
* `TypePushFront<TypeList<Ts...>, Us...>` is equivalent to
|
|
297
|
+
* `TypeList<Us..., Ts...>`.
|
|
298
|
+
*/
|
|
299
|
+
template <class List, class... Ts>
|
|
300
|
+
using TypePushFront =
|
|
301
|
+
MetaApply<List, MetaBindFront<MetaQuote<TypeList>, Ts...>>;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Given a metafunction class `Fn` and a `TypeList`, call `Fn` with the types
|
|
305
|
+
* in the `TypeList`.
|
|
306
|
+
*/
|
|
307
|
+
template <class Fn, class List>
|
|
308
|
+
using MetaUnpack = MetaApply<List, Fn>;
|
|
309
|
+
|
|
310
|
+
/// \cond
|
|
311
|
+
namespace impl {
|
|
312
|
+
template <class Fn>
|
|
313
|
+
struct TypeTransform_ {
|
|
314
|
+
template <class... Ts>
|
|
315
|
+
using apply = TypeList<MetaApply<Fn, Ts>...>;
|
|
316
|
+
};
|
|
317
|
+
} // namespace impl
|
|
318
|
+
/// \endcond
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Transform all the elements in a `TypeList` with the metafunction class `Fn`.
|
|
322
|
+
*
|
|
323
|
+
* `TypeTransform<TypeList<Ts..>, Fn>` is equivalent to
|
|
324
|
+
* `TypeList<MetaApply<Fn, Ts>...>`.
|
|
325
|
+
*/
|
|
326
|
+
template <class List, class Fn>
|
|
327
|
+
using TypeTransform = MetaApply<List, impl::TypeTransform_<Fn>>;
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Given a binary metafunction class, convert it to another binary metafunction
|
|
331
|
+
* class with the argument order reversed.
|
|
332
|
+
*/
|
|
333
|
+
template <class Fn>
|
|
334
|
+
struct MetaFlip {
|
|
335
|
+
template <class A, class B>
|
|
336
|
+
using apply = MetaApply<Fn, B, A>;
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
/// \cond
|
|
340
|
+
namespace impl {
|
|
341
|
+
template <class Fn>
|
|
342
|
+
struct FoldR_ {
|
|
343
|
+
template <class... Ts>
|
|
344
|
+
struct Lambda : MetaIdentity {};
|
|
345
|
+
template <class A, class... Ts>
|
|
346
|
+
struct Lambda<A, Ts...> {
|
|
347
|
+
template <class State>
|
|
348
|
+
using apply = MetaApply<Fn, A, MetaApply<Lambda<Ts...>, State>>;
|
|
349
|
+
};
|
|
350
|
+
template <class A, class B, class C, class D, class... Ts>
|
|
351
|
+
struct Lambda<A, B, C, D, Ts...> { // manually unroll 4 elements
|
|
352
|
+
template <class State>
|
|
353
|
+
using apply = MetaApply<
|
|
354
|
+
Fn,
|
|
355
|
+
A,
|
|
356
|
+
MetaApply<
|
|
357
|
+
Fn,
|
|
358
|
+
B,
|
|
359
|
+
MetaApply<
|
|
360
|
+
Fn,
|
|
361
|
+
C,
|
|
362
|
+
MetaApply<Fn, D, MetaApply<Lambda<Ts...>, State>>>>>;
|
|
363
|
+
};
|
|
364
|
+
template <class... Ts>
|
|
365
|
+
using apply = Lambda<Ts...>;
|
|
366
|
+
};
|
|
367
|
+
} // namespace impl
|
|
368
|
+
/// \endcond
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Given a `TypeList`, an initial state, and a binary function, reduce the
|
|
372
|
+
* `TypeList` by applying the function to each element and the current state,
|
|
373
|
+
* producing a new state to be used with the next element. This is a "right"
|
|
374
|
+
* fold in functional parlance.
|
|
375
|
+
*
|
|
376
|
+
* `TypeFold<TypeList<A, B, C>, X, Fn>` is equivalent to
|
|
377
|
+
* `MetaApply<Fn, A, MetaApply<Fn, B, MetaApply<Fn, C, X>>>`.
|
|
378
|
+
*/
|
|
379
|
+
template <class List, class State, class Fn>
|
|
380
|
+
using TypeFold = MetaApply<MetaApply<List, impl::FoldR_<Fn>>, State>;
|
|
381
|
+
|
|
382
|
+
/// \cond
|
|
383
|
+
namespace impl {
|
|
384
|
+
template <class Fn>
|
|
385
|
+
struct FoldL_ {
|
|
386
|
+
template <class... Ts>
|
|
387
|
+
struct Lambda : MetaIdentity {};
|
|
388
|
+
template <class A, class... Ts>
|
|
389
|
+
struct Lambda<A, Ts...> {
|
|
390
|
+
template <class State>
|
|
391
|
+
using apply = MetaApply<Lambda<Ts...>, MetaApply<Fn, State, A>>;
|
|
392
|
+
};
|
|
393
|
+
template <class A, class B, class C, class D, class... Ts>
|
|
394
|
+
struct Lambda<A, B, C, D, Ts...> { // manually unroll 4 elements
|
|
395
|
+
template <class State>
|
|
396
|
+
using apply = MetaApply<
|
|
397
|
+
Lambda<Ts...>,
|
|
398
|
+
MetaApply<
|
|
399
|
+
Fn,
|
|
400
|
+
MetaApply<Fn, MetaApply<Fn, MetaApply<Fn, State, A>, B>, C>,
|
|
401
|
+
D>>;
|
|
402
|
+
};
|
|
403
|
+
template <class... Ts>
|
|
404
|
+
using apply = Lambda<Ts...>;
|
|
405
|
+
};
|
|
406
|
+
} // namespace impl
|
|
407
|
+
/// \endcond
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Given a `TypeList`, an initial state, and a binary function, reduce the
|
|
411
|
+
* `TypeList` by applying the function to each element and the current state,
|
|
412
|
+
* producing a new state to be used with the next element. This is a "left"
|
|
413
|
+
* fold, in functional parlance.
|
|
414
|
+
*
|
|
415
|
+
* `TypeReverseFold<TypeList<A, B, C>, X, Fn>` is equivalent to
|
|
416
|
+
* `MetaApply<Fn, MetaApply<Fn, MetaApply<Fn, X, C>, B, A>`.
|
|
417
|
+
*/
|
|
418
|
+
template <class List, class State, class Fn>
|
|
419
|
+
using TypeReverseFold = MetaApply<MetaApply<List, impl::FoldL_<Fn>>, State>;
|
|
420
|
+
|
|
421
|
+
namespace impl {
|
|
422
|
+
template <class List>
|
|
423
|
+
struct Inherit_;
|
|
424
|
+
template <class... Ts>
|
|
425
|
+
struct Inherit_<TypeList<Ts...>> : Ts... {
|
|
426
|
+
using type = Inherit_;
|
|
427
|
+
};
|
|
428
|
+
} // namespace impl
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Given a `TypeList`, create a type that inherits from all the types in the
|
|
432
|
+
* list.
|
|
433
|
+
*
|
|
434
|
+
* Requires: all of the types in the list are non-final class types, and the
|
|
435
|
+
* types are all unique.
|
|
436
|
+
*/
|
|
437
|
+
template <class List>
|
|
438
|
+
using Inherit = impl::Inherit_<List>;
|
|
439
|
+
|
|
440
|
+
/// \cond
|
|
441
|
+
namespace impl {
|
|
442
|
+
// Avoid instantiating std::is_base_of when we have an intrinsic.
|
|
443
|
+
#if defined(__GNUC__) || defined(_MSC_VER)
|
|
444
|
+
template <class T, class... Set>
|
|
445
|
+
using In_ = Bool<__is_base_of(Type<T>, Inherit<TypeList<Type<Set>...>>)>;
|
|
446
|
+
#else
|
|
447
|
+
template <class T, class... Set>
|
|
448
|
+
using In_ = std::is_base_of<Type<T>, Inherit<TypeList<Type<Set>...>>>;
|
|
449
|
+
#endif
|
|
450
|
+
|
|
451
|
+
template <class T>
|
|
452
|
+
struct InsertFront_ {
|
|
453
|
+
template <class... Set>
|
|
454
|
+
using apply =
|
|
455
|
+
If<In_<T, Set...>::value, TypeList<Set...>, TypeList<T, Set...>>;
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
struct Unique_ {
|
|
459
|
+
template <class T, class List>
|
|
460
|
+
using apply = MetaApply<List, impl::InsertFront_<T>>;
|
|
461
|
+
};
|
|
462
|
+
} // namespace impl
|
|
463
|
+
/// \endcond
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Given a `TypeList`, produce a new list of types removing duplicates, keeping
|
|
467
|
+
* the first seen element.
|
|
468
|
+
*
|
|
469
|
+
* `TypeUnique<TypeList<int, short, int>>` is equivalent to
|
|
470
|
+
* `TypeList<int, short>`.
|
|
471
|
+
*
|
|
472
|
+
* \note This algorithm is O(N^2).
|
|
473
|
+
*/
|
|
474
|
+
template <class List>
|
|
475
|
+
using TypeUnique = TypeFold<List, TypeList<>, impl::Unique_>;
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Given a `TypeList`, produce a new list of types removing duplicates, keeping
|
|
479
|
+
* the last seen element.
|
|
480
|
+
*
|
|
481
|
+
* `TypeUnique<TypeList<int, short, int>>` is equivalent to
|
|
482
|
+
* `TypeList<short, int>`.
|
|
483
|
+
*
|
|
484
|
+
* \note This algorithm is O(N^2).
|
|
485
|
+
*/
|
|
486
|
+
template <class List>
|
|
487
|
+
using TypeReverseUnique =
|
|
488
|
+
TypeReverseFold<List, TypeList<>, MetaFlip<impl::Unique_>>;
|
|
489
|
+
|
|
490
|
+
/// \cond
|
|
491
|
+
namespace impl {
|
|
492
|
+
template <class T>
|
|
493
|
+
struct AsTypeList_ {};
|
|
494
|
+
template <template <class...> class T, class... Ts>
|
|
495
|
+
struct AsTypeList_<T<Ts...>> {
|
|
496
|
+
using type = TypeList<Ts...>;
|
|
497
|
+
};
|
|
498
|
+
template <class T, T... Is>
|
|
499
|
+
struct AsTypeList_<std::integer_sequence<T, Is...>> {
|
|
500
|
+
using type = TypeList<std::integral_constant<T, Is>...>;
|
|
501
|
+
};
|
|
502
|
+
} // namespace impl
|
|
503
|
+
/// \endcond
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Convert a type to a list of types. Given a type `T`:
|
|
507
|
+
* - If `T` is of the form `C<Ts...>`, where `C` is a class template and
|
|
508
|
+
* `Ts...` is a list of types, the result is `TypeList<Ts...>`.
|
|
509
|
+
* - Else, if `T` is of the form `std::integer_sequence<T, Is...>`, then
|
|
510
|
+
* the result is `TypeList<std::integral_constant<T, Is>...>`.
|
|
511
|
+
* - Otherwise, `asTypeList<T>` is ill-formed.
|
|
512
|
+
*/
|
|
513
|
+
template <class T>
|
|
514
|
+
using AsTypeList = _t<impl::AsTypeList_<T>>;
|
|
515
|
+
|
|
516
|
+
/// \cond
|
|
517
|
+
namespace impl {
|
|
518
|
+
// TODO For a list of N lists, this algorithm is O(N). It does no unrolling.
|
|
519
|
+
struct Join_ {
|
|
520
|
+
template <class Fn>
|
|
521
|
+
struct Lambda {
|
|
522
|
+
template <class... Ts>
|
|
523
|
+
using apply = MetaBindBack<Fn, Ts...>;
|
|
524
|
+
};
|
|
525
|
+
template <class List, class Fn>
|
|
526
|
+
using apply = MetaApply<List, Lambda<Fn>>;
|
|
527
|
+
};
|
|
528
|
+
} // namespace impl
|
|
529
|
+
/// \endcond
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Given a `TypeList` of `TypeList`s, flatten the lists into a single list.
|
|
533
|
+
*
|
|
534
|
+
* `TypeJoin<TypeList<TypeList<As...>, TypeList<Bs...>>>` is equivalent to
|
|
535
|
+
* `TypeList<As..., Bs...>`
|
|
536
|
+
*/
|
|
537
|
+
template <class List>
|
|
538
|
+
using TypeJoin = MetaApply<TypeFold<List, MetaQuote<TypeList>, impl::Join_>>;
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Given several `TypeList`s, flatten the lists into a single list.
|
|
542
|
+
*
|
|
543
|
+
* \note This is just the curried form of `TypeJoin`. (See `MetaCurry`.)
|
|
544
|
+
*
|
|
545
|
+
* `TypeConcat<TypeList<As...>, TypeList<Bs...>>` is equivalent to
|
|
546
|
+
* `TypeList<As..., Bs...>`
|
|
547
|
+
*/
|
|
548
|
+
template <class... Ts>
|
|
549
|
+
using TypeConcat = TypeJoin<TypeList<Ts...>>;
|
|
550
|
+
} // namespace detail
|
|
551
|
+
} // namespace folly
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
#include <folly/detail/UniqueInstance.h>
|
|
18
|
+
|
|
19
|
+
#include <cstdlib>
|
|
20
|
+
#include <cstring>
|
|
21
|
+
#include <iostream>
|
|
22
|
+
#include <sstream>
|
|
23
|
+
#include <stdexcept>
|
|
24
|
+
#include <string>
|
|
25
|
+
|
|
26
|
+
#include <folly/Demangle.h>
|
|
27
|
+
#include <folly/lang/Exception.h>
|
|
28
|
+
|
|
29
|
+
namespace folly {
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
namespace {
|
|
33
|
+
|
|
34
|
+
bool equal(std::type_info const& a, std::type_info const& b) {
|
|
35
|
+
if (kIsLibcpp) {
|
|
36
|
+
auto const an = a.name();
|
|
37
|
+
auto const bn = b.name();
|
|
38
|
+
return &a == &b || an == bn || 0 == std::strcmp(an, bn);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return a == b;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
using Ptr = std::type_info const*;
|
|
45
|
+
struct PtrRange {
|
|
46
|
+
Ptr const* b;
|
|
47
|
+
Ptr const* e;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
template <typename Value>
|
|
51
|
+
PtrRange ptr_range_key(Value value) {
|
|
52
|
+
auto const data = value.ptrs;
|
|
53
|
+
return {data, data + value.key_size};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <typename Value>
|
|
57
|
+
PtrRange ptr_range_mapped(Value value) {
|
|
58
|
+
auto const data = value.ptrs + value.key_size;
|
|
59
|
+
return {data, data + value.mapped_size};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
bool equal(PtrRange lhs, PtrRange rhs) {
|
|
63
|
+
auto const cmp = [](auto a, auto b) { return equal(*a, *b); };
|
|
64
|
+
return std::equal(lhs.b, lhs.e, rhs.b, rhs.e, cmp);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
std::string_view parse_demangled_tag_name(std::string_view str) {
|
|
68
|
+
auto off = std::string_view::npos;
|
|
69
|
+
// strip surrounding `folly::tag<{...}>`
|
|
70
|
+
off = str.find('<');
|
|
71
|
+
str = str.substr(off + 1, str.size() - off - 2);
|
|
72
|
+
// strip trailing spaces, if any
|
|
73
|
+
off = str.find_last_not_of(' ');
|
|
74
|
+
str = str.substr(0, off == std::string_view::npos ? off : off + 1);
|
|
75
|
+
// done
|
|
76
|
+
return str;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
std::string join(PtrRange types) {
|
|
80
|
+
std::ostringstream ret;
|
|
81
|
+
for (auto t = types.b; t != types.e; ++t) {
|
|
82
|
+
if (t != types.b) {
|
|
83
|
+
ret << ", ";
|
|
84
|
+
}
|
|
85
|
+
ret << parse_demangled_tag_name(demangle((*t)->name()));
|
|
86
|
+
}
|
|
87
|
+
return ret.str();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template <typename Value>
|
|
91
|
+
fbstring render_tmpl(Value value) {
|
|
92
|
+
return fbstring(parse_demangled_tag_name(demangle(value.tmpl->name())));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
template <typename Value>
|
|
96
|
+
std::string render(Value value) {
|
|
97
|
+
auto const tmpl_s = render_tmpl(value);
|
|
98
|
+
auto const key_s = join(ptr_range_key(value));
|
|
99
|
+
auto const mapped_s = join(ptr_range_mapped(value));
|
|
100
|
+
std::ostringstream ret;
|
|
101
|
+
ret << tmpl_s << "<" << key_s << ", " << mapped_s << ">";
|
|
102
|
+
return ret.str();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
} // namespace
|
|
106
|
+
|
|
107
|
+
void UniqueInstance::enforce(Arg& arg) noexcept {
|
|
108
|
+
auto const& local = arg.local;
|
|
109
|
+
auto& global = StaticSingletonManager::create<Value>(arg.global);
|
|
110
|
+
|
|
111
|
+
if (!global.tmpl) {
|
|
112
|
+
global = local;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!equal(*global.tmpl, *local.tmpl)) {
|
|
116
|
+
throw_exception<std::logic_error>("mismatched unique instance");
|
|
117
|
+
}
|
|
118
|
+
if (!equal(ptr_range_key(global), ptr_range_key(local))) {
|
|
119
|
+
throw_exception<std::logic_error>("mismatched unique instance");
|
|
120
|
+
}
|
|
121
|
+
if (equal(ptr_range_mapped(global), ptr_range_mapped(local))) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
auto const key = ptr_range_key(local);
|
|
126
|
+
|
|
127
|
+
std::ios_base::Init io_init;
|
|
128
|
+
std::cerr << "Overloaded unique instance over <" << join(key) << ", ...> "
|
|
129
|
+
<< "with differing trailing arguments:\n"
|
|
130
|
+
<< " " << render(global) << "\n"
|
|
131
|
+
<< " " << render(local) << "\n";
|
|
132
|
+
std::abort();
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
} // namespace detail
|
|
136
|
+
} // namespace folly
|