react-native-windows 0.85.0-preview.1 → 0.85.0
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 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +28 -46
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +0 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +19 -13
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +107 -0
- package/Microsoft.ReactNative/Fabric/Composition/SelectionItemAutomationEvent.h +73 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +105 -32
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -2
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +2 -2
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +2 -9
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +54 -5
- package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
- package/Scripts/creaternwapp.cmd +29 -9
- package/Scripts/creaternwlib.cmd +31 -15
- package/external/.clang-format +1 -0
- 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/external/fmt/cgmanifest.json +15 -0
- 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/external/fmt/include/fmt/base.h +3077 -0
- 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/Folly.natvis +25 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/external/folly/cgmanifest.json +25 -0
- package/external/folly/folly/.clang-format +1 -0
- 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/ConstexprMath.h +978 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.cpp +1205 -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/Hardware.h +155 -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.cpp +633 -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/external/folly/folly/hash/SpookyHashV2.h +339 -0
- 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-inl.h +1438 -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.cpp +1118 -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/SafeAssert.h +188 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/ToAscii.cpp +348 -0
- package/external/folly/folly/lang/ToAscii.h +182 -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.cpp +33 -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 +8 -8
- package/templates/cpp-lib/example/metro.config.js +18 -2
|
@@ -0,0 +1,728 @@
|
|
|
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 <exception>
|
|
20
|
+
#include <stdexcept>
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
#include <utility>
|
|
23
|
+
|
|
24
|
+
#include <folly/ExceptionWrapper.h>
|
|
25
|
+
#include <folly/Likely.h>
|
|
26
|
+
#include <folly/Memory.h>
|
|
27
|
+
#include <folly/Portability.h>
|
|
28
|
+
#include <folly/Unit.h>
|
|
29
|
+
#include <folly/Utility.h>
|
|
30
|
+
#include <folly/functional/Invoke.h>
|
|
31
|
+
#include <folly/lang/Exception.h>
|
|
32
|
+
|
|
33
|
+
namespace folly {
|
|
34
|
+
|
|
35
|
+
class FOLLY_EXPORT TryException : public std::logic_error {
|
|
36
|
+
public:
|
|
37
|
+
using std::logic_error::logic_error;
|
|
38
|
+
TryException() : std::logic_error{""} {}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
class FOLLY_EXPORT UsingUninitializedTry : public TryException {
|
|
42
|
+
public:
|
|
43
|
+
UsingUninitializedTry() = default;
|
|
44
|
+
char const* what() const noexcept override {
|
|
45
|
+
return "Using uninitialized try";
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
template <class T>
|
|
50
|
+
class Try;
|
|
51
|
+
|
|
52
|
+
namespace detail {
|
|
53
|
+
template <class T>
|
|
54
|
+
class TryBase {
|
|
55
|
+
protected:
|
|
56
|
+
enum class Contains {
|
|
57
|
+
VALUE,
|
|
58
|
+
EXCEPTION,
|
|
59
|
+
NOTHING,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
public:
|
|
63
|
+
/*
|
|
64
|
+
* Construct an empty Try
|
|
65
|
+
*/
|
|
66
|
+
TryBase() noexcept : contains_(Contains::NOTHING) {}
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* Construct a Try with a value by copy
|
|
70
|
+
*
|
|
71
|
+
* @param v The value to copy in
|
|
72
|
+
*/
|
|
73
|
+
explicit TryBase(const T& v) noexcept(
|
|
74
|
+
std::is_nothrow_copy_constructible<T>::value)
|
|
75
|
+
: contains_(Contains::VALUE), value_(v) {}
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* Construct a Try with a value by move
|
|
79
|
+
*
|
|
80
|
+
* @param v The value to move in
|
|
81
|
+
*/
|
|
82
|
+
explicit TryBase(T&& v) noexcept(std::is_nothrow_move_constructible<T>::value)
|
|
83
|
+
: contains_(Contains::VALUE), value_(std::move(v)) {}
|
|
84
|
+
|
|
85
|
+
template <typename... Args>
|
|
86
|
+
explicit TryBase(std::in_place_t, Args&&... args) noexcept(
|
|
87
|
+
std::is_nothrow_constructible<T, Args&&...>::value)
|
|
88
|
+
: contains_(Contains::VALUE), value_(static_cast<Args&&>(args)...) {}
|
|
89
|
+
|
|
90
|
+
/// Implicit conversion from Try<void> to Try<Unit>
|
|
91
|
+
template <class T2 = T>
|
|
92
|
+
/* implicit */ TryBase(typename std::enable_if<
|
|
93
|
+
std::is_same<Unit, T2>::value,
|
|
94
|
+
Try<void> const&>::type t) noexcept;
|
|
95
|
+
|
|
96
|
+
/*
|
|
97
|
+
* Construct a Try with an exception_wrapper
|
|
98
|
+
*
|
|
99
|
+
* @param e The exception_wrapper
|
|
100
|
+
*/
|
|
101
|
+
explicit TryBase(exception_wrapper e) noexcept
|
|
102
|
+
: contains_(Contains::EXCEPTION), e_(std::move(e)) {}
|
|
103
|
+
|
|
104
|
+
~TryBase();
|
|
105
|
+
|
|
106
|
+
// Move constructor
|
|
107
|
+
TryBase(TryBase&& t) noexcept(std::is_nothrow_move_constructible<T>::value);
|
|
108
|
+
// Move assigner
|
|
109
|
+
TryBase& operator=(TryBase&& t) noexcept(
|
|
110
|
+
std::is_nothrow_move_constructible<T>::value);
|
|
111
|
+
|
|
112
|
+
// Copy constructor
|
|
113
|
+
TryBase(const TryBase& t) noexcept(
|
|
114
|
+
std::is_nothrow_copy_constructible<T>::value);
|
|
115
|
+
// Copy assigner
|
|
116
|
+
TryBase& operator=(const TryBase& t) noexcept(
|
|
117
|
+
std::is_nothrow_copy_constructible<T>::value);
|
|
118
|
+
|
|
119
|
+
protected:
|
|
120
|
+
void destroy() noexcept;
|
|
121
|
+
|
|
122
|
+
Contains contains_;
|
|
123
|
+
union {
|
|
124
|
+
T value_;
|
|
125
|
+
exception_wrapper e_;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
} // namespace detail
|
|
129
|
+
|
|
130
|
+
/*
|
|
131
|
+
* Try<T> is a wrapper that contains either an instance of T, an exception, or
|
|
132
|
+
* nothing. Exceptions are stored as exception_wrappers so that the user can
|
|
133
|
+
* minimize rethrows if so desired.
|
|
134
|
+
*
|
|
135
|
+
* To represent success or a captured exception, use Try<Unit>.
|
|
136
|
+
*/
|
|
137
|
+
template <class T>
|
|
138
|
+
class Try : detail::TryBase<T>,
|
|
139
|
+
moveonly_::EnableCopyMove<
|
|
140
|
+
std::is_copy_constructible<T>::value,
|
|
141
|
+
std::is_move_constructible<T>::value> {
|
|
142
|
+
static_assert(
|
|
143
|
+
!std::is_reference<T>::value, "Try may not be used with reference types");
|
|
144
|
+
using typename detail::TryBase<T>::Contains;
|
|
145
|
+
|
|
146
|
+
public:
|
|
147
|
+
using detail::TryBase<T>::TryBase;
|
|
148
|
+
|
|
149
|
+
/*
|
|
150
|
+
* The value type for the Try
|
|
151
|
+
*/
|
|
152
|
+
using element_type = T;
|
|
153
|
+
|
|
154
|
+
/*
|
|
155
|
+
* In-place construct the value in the Try object.
|
|
156
|
+
*
|
|
157
|
+
* Destroys any previous value prior to constructing the new value.
|
|
158
|
+
* Leaves *this in an empty state if the construction of T throws.
|
|
159
|
+
*
|
|
160
|
+
* @returns reference to the newly constructed value.
|
|
161
|
+
*/
|
|
162
|
+
template <typename... Args>
|
|
163
|
+
T& emplace(Args&&... args) noexcept(
|
|
164
|
+
std::is_nothrow_constructible<T, Args&&...>::value);
|
|
165
|
+
|
|
166
|
+
/*
|
|
167
|
+
* In-place construct an exception in the Try object.
|
|
168
|
+
*
|
|
169
|
+
* Destroys any previous value prior to constructing the new value.
|
|
170
|
+
* Leaves *this in an empty state if the construction of the exception_wrapper
|
|
171
|
+
* throws.
|
|
172
|
+
*
|
|
173
|
+
* Any arguments passed to emplaceException() are forwarded on to the
|
|
174
|
+
* exception_wrapper constructor.
|
|
175
|
+
*
|
|
176
|
+
* @returns reference to the newly constructed exception_wrapper.
|
|
177
|
+
*/
|
|
178
|
+
template <typename... Args>
|
|
179
|
+
exception_wrapper& emplaceException(Args&&... args) noexcept(
|
|
180
|
+
std::is_nothrow_constructible<exception_wrapper, Args&&...>::value);
|
|
181
|
+
|
|
182
|
+
/*
|
|
183
|
+
* Get a mutable reference to the contained value.
|
|
184
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
185
|
+
*
|
|
186
|
+
* @returns mutable reference to the contained value
|
|
187
|
+
*/
|
|
188
|
+
T& value() &;
|
|
189
|
+
/*
|
|
190
|
+
* Get a rvalue reference to the contained value.
|
|
191
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
192
|
+
*
|
|
193
|
+
* @returns rvalue reference to the contained value
|
|
194
|
+
*/
|
|
195
|
+
T&& value() &&;
|
|
196
|
+
/*
|
|
197
|
+
* Get a const reference to the contained value.
|
|
198
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
199
|
+
*
|
|
200
|
+
* @returns const reference to the contained value
|
|
201
|
+
*/
|
|
202
|
+
const T& value() const&;
|
|
203
|
+
/*
|
|
204
|
+
* Get a const rvalue reference to the contained value.
|
|
205
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
206
|
+
*
|
|
207
|
+
* @returns const rvalue reference to the contained value
|
|
208
|
+
*/
|
|
209
|
+
const T&& value() const&&;
|
|
210
|
+
|
|
211
|
+
/*
|
|
212
|
+
* Returns a copy of the contained value if *this has a value,
|
|
213
|
+
* otherwise returns a value constructed from defaultValue.
|
|
214
|
+
*
|
|
215
|
+
* The selected constructor of the return value may throw exceptions.
|
|
216
|
+
*/
|
|
217
|
+
template <class U>
|
|
218
|
+
T value_or(U&& defaultValue) const&;
|
|
219
|
+
template <class U>
|
|
220
|
+
T value_or(U&& defaultValue) &&;
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
* [Re]throw if the Try contains an exception or is empty. Otherwise do
|
|
224
|
+
* nothing.
|
|
225
|
+
*/
|
|
226
|
+
void throwUnlessValue() const;
|
|
227
|
+
[[deprecated("Replaced by throwUnlessValue")]] void throwIfFailed() const;
|
|
228
|
+
|
|
229
|
+
/*
|
|
230
|
+
* Const dereference operator.
|
|
231
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
232
|
+
*
|
|
233
|
+
* @returns const reference to the contained value
|
|
234
|
+
*/
|
|
235
|
+
const T& operator*() const& { return value(); }
|
|
236
|
+
/*
|
|
237
|
+
* Dereference operator. If the Try contains an exception it will be rethrown.
|
|
238
|
+
*
|
|
239
|
+
* @returns mutable reference to the contained value
|
|
240
|
+
*/
|
|
241
|
+
T& operator*() & { return value(); }
|
|
242
|
+
/*
|
|
243
|
+
* Mutable rvalue dereference operator. If the Try contains an exception it
|
|
244
|
+
* will be rethrown.
|
|
245
|
+
*
|
|
246
|
+
* @returns rvalue reference to the contained value
|
|
247
|
+
*/
|
|
248
|
+
T&& operator*() && { return std::move(value()); }
|
|
249
|
+
/*
|
|
250
|
+
* Const rvalue dereference operator. If the Try contains an exception it
|
|
251
|
+
* will be rethrown.
|
|
252
|
+
*
|
|
253
|
+
* @returns rvalue reference to the contained value
|
|
254
|
+
*/
|
|
255
|
+
const T&& operator*() const&& { return std::move(value()); }
|
|
256
|
+
|
|
257
|
+
/*
|
|
258
|
+
* Const arrow operator.
|
|
259
|
+
* [Re]throws if the Try contains an exception or is empty.
|
|
260
|
+
*
|
|
261
|
+
* @returns const reference to the contained value
|
|
262
|
+
*/
|
|
263
|
+
const T* operator->() const { return &value(); }
|
|
264
|
+
/*
|
|
265
|
+
* Arrow operator. If the Try contains an exception it will be rethrown.
|
|
266
|
+
*
|
|
267
|
+
* @returns mutable reference to the contained value
|
|
268
|
+
*/
|
|
269
|
+
T* operator->() { return &value(); }
|
|
270
|
+
|
|
271
|
+
/*
|
|
272
|
+
* @returns True if the Try contains a value, false otherwise
|
|
273
|
+
*/
|
|
274
|
+
bool hasValue() const noexcept { return this->contains_ == Contains::VALUE; }
|
|
275
|
+
/*
|
|
276
|
+
* @returns True if the Try contains an exception, false otherwise
|
|
277
|
+
*/
|
|
278
|
+
bool hasException() const noexcept {
|
|
279
|
+
return this->contains_ == Contains::EXCEPTION;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/*
|
|
283
|
+
* @returns True if the Try contains an exception of type Ex, false otherwise
|
|
284
|
+
*/
|
|
285
|
+
template <class Ex>
|
|
286
|
+
bool hasException() const noexcept {
|
|
287
|
+
return hasException() && this->e_.template is_compatible_with<Ex>();
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
exception_wrapper& exception() & {
|
|
291
|
+
if (!hasException()) {
|
|
292
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
293
|
+
}
|
|
294
|
+
return this->e_;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
exception_wrapper&& exception() && {
|
|
298
|
+
if (!hasException()) {
|
|
299
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
300
|
+
}
|
|
301
|
+
return std::move(this->e_);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
const exception_wrapper& exception() const& {
|
|
305
|
+
if (!hasException()) {
|
|
306
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
307
|
+
}
|
|
308
|
+
return this->e_;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const exception_wrapper&& exception() const&& {
|
|
312
|
+
if (!hasException()) {
|
|
313
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
314
|
+
}
|
|
315
|
+
return std::move(this->e_);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/*
|
|
319
|
+
* @returns a pointer to the `std::exception` held by `*this`, if one is held;
|
|
320
|
+
* otherwise, returns `nullptr`.
|
|
321
|
+
*/
|
|
322
|
+
std::exception* tryGetExceptionObject() noexcept {
|
|
323
|
+
return hasException() ? this->e_.get_exception() : nullptr;
|
|
324
|
+
}
|
|
325
|
+
std::exception const* tryGetExceptionObject() const noexcept {
|
|
326
|
+
return hasException() ? this->e_.get_exception() : nullptr;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/*
|
|
330
|
+
* @returns a pointer to the `Ex` held by `*this`, if it holds an object whose
|
|
331
|
+
* type `From` permits `std::is_convertible<From*, Ex*>`; otherwise,
|
|
332
|
+
* returns `nullptr`.
|
|
333
|
+
*/
|
|
334
|
+
template <class Ex>
|
|
335
|
+
Ex* tryGetExceptionObject() noexcept {
|
|
336
|
+
return hasException() ? this->e_.template get_exception<Ex>() : nullptr;
|
|
337
|
+
}
|
|
338
|
+
template <class Ex>
|
|
339
|
+
Ex const* tryGetExceptionObject() const noexcept {
|
|
340
|
+
return hasException() ? this->e_.template get_exception<Ex>() : nullptr;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/*
|
|
344
|
+
* If the Try contains an exception and it is of type Ex, execute func(Ex)
|
|
345
|
+
*
|
|
346
|
+
* @param func a function that takes a single parameter of type const Ex&
|
|
347
|
+
*
|
|
348
|
+
* @returns True if the Try held an Ex and func was executed, false otherwise
|
|
349
|
+
*/
|
|
350
|
+
template <class Ex, class F>
|
|
351
|
+
bool withException(F func) {
|
|
352
|
+
if (!hasException()) {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
return this->e_.template with_exception<Ex>(std::move(func));
|
|
356
|
+
}
|
|
357
|
+
template <class Ex, class F>
|
|
358
|
+
bool withException(F func) const {
|
|
359
|
+
if (!hasException()) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
return this->e_.template with_exception<Ex>(std::move(func));
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/*
|
|
366
|
+
* If the Try contains an exception and it is of type compatible with Ex as
|
|
367
|
+
* deduced from the first parameter of func, execute func(Ex)
|
|
368
|
+
*
|
|
369
|
+
* @param func a function that takes a single parameter of type const Ex&
|
|
370
|
+
*
|
|
371
|
+
* @returns True if the Try held an Ex and func was executed, false otherwise
|
|
372
|
+
*/
|
|
373
|
+
template <class F>
|
|
374
|
+
bool withException(F func) {
|
|
375
|
+
if (!hasException()) {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
return this->e_.with_exception(std::move(func));
|
|
379
|
+
}
|
|
380
|
+
template <class F>
|
|
381
|
+
bool withException(F func) const {
|
|
382
|
+
if (!hasException()) {
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
return this->e_.with_exception(std::move(func));
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
template <bool isTry, typename R>
|
|
389
|
+
typename std::enable_if<isTry, R>::type get() {
|
|
390
|
+
return std::forward<R>(*this);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
template <bool isTry, typename R>
|
|
394
|
+
typename std::enable_if<!isTry, R>::type get() {
|
|
395
|
+
return std::forward<R>(value());
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
/*
|
|
400
|
+
* Specialization of Try for void value type. Encapsulates either success or an
|
|
401
|
+
* exception.
|
|
402
|
+
*/
|
|
403
|
+
template <>
|
|
404
|
+
class Try<void> {
|
|
405
|
+
public:
|
|
406
|
+
/*
|
|
407
|
+
* The value type for the Try
|
|
408
|
+
*/
|
|
409
|
+
typedef void element_type;
|
|
410
|
+
|
|
411
|
+
// Construct a Try holding a successful and void result
|
|
412
|
+
Try() noexcept : hasValue_(true) {}
|
|
413
|
+
|
|
414
|
+
/*
|
|
415
|
+
* Construct a Try with an exception_wrapper
|
|
416
|
+
*
|
|
417
|
+
* @param e The exception_wrapper
|
|
418
|
+
*/
|
|
419
|
+
explicit Try(exception_wrapper e) noexcept
|
|
420
|
+
: hasValue_(false), e_(std::move(e)) {}
|
|
421
|
+
|
|
422
|
+
/// Implicit conversion from Try<Unit> to Try<void>
|
|
423
|
+
/* implicit */ inline Try(const Try<Unit>& t) noexcept;
|
|
424
|
+
|
|
425
|
+
// Copy assigner
|
|
426
|
+
inline Try& operator=(const Try<void>& t) noexcept;
|
|
427
|
+
|
|
428
|
+
// Copy constructor
|
|
429
|
+
Try(const Try<void>& t) noexcept : hasValue_(t.hasValue_) {
|
|
430
|
+
if (t.hasException()) {
|
|
431
|
+
new (&e_) exception_wrapper(t.e_);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
~Try() {
|
|
436
|
+
if (hasException()) {
|
|
437
|
+
e_.~exception_wrapper();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/*
|
|
442
|
+
* In-place construct a 'void' value into this Try object.
|
|
443
|
+
*
|
|
444
|
+
* This has the effect of clearing any existing exception stored in the
|
|
445
|
+
* Try object.
|
|
446
|
+
*/
|
|
447
|
+
void emplace() noexcept {
|
|
448
|
+
if (hasException()) {
|
|
449
|
+
e_.~exception_wrapper();
|
|
450
|
+
hasValue_ = true;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/*
|
|
455
|
+
* In-place construct an exception in the Try object.
|
|
456
|
+
*
|
|
457
|
+
* Destroys any previous value prior to constructing the new value.
|
|
458
|
+
* Leaves *this in an empty state if the construction of the exception_wrapper
|
|
459
|
+
* throws.
|
|
460
|
+
*
|
|
461
|
+
* Any arguments passed to emplaceException() are forwarded on to the
|
|
462
|
+
* exception_wrapper constructor.
|
|
463
|
+
*
|
|
464
|
+
* @returns reference to the newly constructed exception_wrapper.
|
|
465
|
+
*/
|
|
466
|
+
template <typename... Args>
|
|
467
|
+
exception_wrapper& emplaceException(Args&&... args) noexcept(
|
|
468
|
+
std::is_nothrow_constructible<exception_wrapper, Args&&...>::value);
|
|
469
|
+
|
|
470
|
+
// If the Try contains an exception, throws it
|
|
471
|
+
void value() const { throwIfFailed(); }
|
|
472
|
+
// Dereference operator. If the Try contains an exception, throws it
|
|
473
|
+
void operator*() const { return value(); }
|
|
474
|
+
|
|
475
|
+
// If the Try contains an exception, throws it
|
|
476
|
+
inline void throwIfFailed() const;
|
|
477
|
+
inline void throwUnlessValue() const;
|
|
478
|
+
|
|
479
|
+
// @returns False if the Try contains an exception, true otherwise
|
|
480
|
+
bool hasValue() const noexcept { return hasValue_; }
|
|
481
|
+
// @returns True if the Try contains an exception, false otherwise
|
|
482
|
+
bool hasException() const noexcept { return !hasValue_; }
|
|
483
|
+
|
|
484
|
+
// @returns True if the Try contains an exception of type Ex, false otherwise
|
|
485
|
+
template <class Ex>
|
|
486
|
+
bool hasException() const noexcept {
|
|
487
|
+
return hasException() && e_.is_compatible_with<Ex>();
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/*
|
|
491
|
+
* @throws TryException if the Try doesn't contain an exception
|
|
492
|
+
*
|
|
493
|
+
* @returns mutable reference to the exception contained by this Try
|
|
494
|
+
*/
|
|
495
|
+
exception_wrapper& exception() & {
|
|
496
|
+
if (!hasException()) {
|
|
497
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
498
|
+
}
|
|
499
|
+
return e_;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
exception_wrapper&& exception() && {
|
|
503
|
+
if (!hasException()) {
|
|
504
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
505
|
+
}
|
|
506
|
+
return std::move(e_);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
const exception_wrapper& exception() const& {
|
|
510
|
+
if (!hasException()) {
|
|
511
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
512
|
+
}
|
|
513
|
+
return e_;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
const exception_wrapper&& exception() const&& {
|
|
517
|
+
if (!hasException()) {
|
|
518
|
+
throw_exception<TryException>("Try does not contain an exception");
|
|
519
|
+
}
|
|
520
|
+
return std::move(e_);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/*
|
|
524
|
+
* @returns a pointer to the `std::exception` held by `*this`, if one is held;
|
|
525
|
+
* otherwise, returns `nullptr`.
|
|
526
|
+
*/
|
|
527
|
+
std::exception* tryGetExceptionObject() noexcept {
|
|
528
|
+
return hasException() ? e_.get_exception() : nullptr;
|
|
529
|
+
}
|
|
530
|
+
std::exception const* tryGetExceptionObject() const noexcept {
|
|
531
|
+
return hasException() ? e_.get_exception() : nullptr;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/*
|
|
535
|
+
* @returns a pointer to the `Ex` held by `*this`, if it holds an object whose
|
|
536
|
+
* type `From` permits `std::is_convertible<From*, Ex*>`; otherwise,
|
|
537
|
+
* returns `nullptr`.
|
|
538
|
+
*/
|
|
539
|
+
template <class E>
|
|
540
|
+
E* tryGetExceptionObject() noexcept {
|
|
541
|
+
return hasException() ? e_.get_exception<E>() : nullptr;
|
|
542
|
+
}
|
|
543
|
+
template <class E>
|
|
544
|
+
E const* tryGetExceptionObject() const noexcept {
|
|
545
|
+
return hasException() ? e_.get_exception<E>() : nullptr;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/*
|
|
549
|
+
* If the Try contains an exception and it is of type Ex, execute func(Ex)
|
|
550
|
+
*
|
|
551
|
+
* @param func a function that takes a single parameter of type const Ex&
|
|
552
|
+
*
|
|
553
|
+
* @returns True if the Try held an Ex and func was executed, false otherwise
|
|
554
|
+
*/
|
|
555
|
+
template <class Ex, class F>
|
|
556
|
+
bool withException(F func) {
|
|
557
|
+
if (!hasException()) {
|
|
558
|
+
return false;
|
|
559
|
+
}
|
|
560
|
+
return e_.with_exception<Ex>(std::move(func));
|
|
561
|
+
}
|
|
562
|
+
template <class Ex, class F>
|
|
563
|
+
bool withException(F func) const {
|
|
564
|
+
if (!hasException()) {
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
return e_.with_exception<Ex>(std::move(func));
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/*
|
|
571
|
+
* If the Try contains an exception and it is of type compatible with Ex as
|
|
572
|
+
* deduced from the first parameter of func, execute func(Ex)
|
|
573
|
+
*
|
|
574
|
+
* @param func a function that takes a single parameter of type const Ex&
|
|
575
|
+
*
|
|
576
|
+
* @returns True if the Try held an Ex and func was executed, false otherwise
|
|
577
|
+
*/
|
|
578
|
+
template <class F>
|
|
579
|
+
bool withException(F func) {
|
|
580
|
+
if (!hasException()) {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
583
|
+
return e_.with_exception(std::move(func));
|
|
584
|
+
}
|
|
585
|
+
template <class F>
|
|
586
|
+
bool withException(F func) const {
|
|
587
|
+
if (!hasException()) {
|
|
588
|
+
return false;
|
|
589
|
+
}
|
|
590
|
+
return e_.with_exception(std::move(func));
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
template <bool, typename R>
|
|
594
|
+
R get() {
|
|
595
|
+
return std::forward<R>(*this);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
private:
|
|
599
|
+
bool hasValue_;
|
|
600
|
+
union {
|
|
601
|
+
exception_wrapper e_;
|
|
602
|
+
};
|
|
603
|
+
};
|
|
604
|
+
|
|
605
|
+
template <typename T>
|
|
606
|
+
struct isTry : std::false_type {};
|
|
607
|
+
|
|
608
|
+
template <typename T>
|
|
609
|
+
struct isTry<Try<T>> : std::true_type {};
|
|
610
|
+
|
|
611
|
+
/*
|
|
612
|
+
* @param f a function to execute and capture the result of (value or exception)
|
|
613
|
+
*
|
|
614
|
+
* @returns Try holding the result of f
|
|
615
|
+
*/
|
|
616
|
+
template <typename F>
|
|
617
|
+
typename std::enable_if<
|
|
618
|
+
!std::is_same<invoke_result_t<F>, void>::value,
|
|
619
|
+
Try<invoke_result_t<F>>>::type
|
|
620
|
+
makeTryWithNoUnwrap(F&& f) noexcept;
|
|
621
|
+
|
|
622
|
+
/*
|
|
623
|
+
* Specialization of makeTryWith for void return
|
|
624
|
+
*
|
|
625
|
+
* @param f a function to execute and capture the result of
|
|
626
|
+
*
|
|
627
|
+
* @returns Try<void> holding the result of f
|
|
628
|
+
*/
|
|
629
|
+
template <typename F>
|
|
630
|
+
typename std::
|
|
631
|
+
enable_if<std::is_same<invoke_result_t<F>, void>::value, Try<void>>::type
|
|
632
|
+
makeTryWithNoUnwrap(F&& f) noexcept;
|
|
633
|
+
|
|
634
|
+
/*
|
|
635
|
+
* @param f a function to execute and capture the result of (value or exception)
|
|
636
|
+
*
|
|
637
|
+
* @returns Try holding the result of f
|
|
638
|
+
*/
|
|
639
|
+
template <typename F>
|
|
640
|
+
typename std::
|
|
641
|
+
enable_if<!isTry<invoke_result_t<F>>::value, Try<invoke_result_t<F>>>::type
|
|
642
|
+
makeTryWith(F&& f) noexcept;
|
|
643
|
+
|
|
644
|
+
/*
|
|
645
|
+
* Specialization of makeTryWith for functions that return Try<T>
|
|
646
|
+
* Causes makeTryWith to not double-wrap the try.
|
|
647
|
+
*
|
|
648
|
+
* @param f a function to execute and capture the result of
|
|
649
|
+
*
|
|
650
|
+
* @returns result of f if f did not throw. Otherwise Try<T> containing
|
|
651
|
+
* exception
|
|
652
|
+
*/
|
|
653
|
+
template <typename F>
|
|
654
|
+
typename std::enable_if<isTry<invoke_result_t<F>>::value, invoke_result_t<F>>::
|
|
655
|
+
type
|
|
656
|
+
makeTryWith(F&& f) noexcept;
|
|
657
|
+
|
|
658
|
+
/*
|
|
659
|
+
* Try to in-place construct a new value from the specified arguments.
|
|
660
|
+
*
|
|
661
|
+
* If T's constructor throws an exception then this is caught and the Try<T>
|
|
662
|
+
* object is initialised to hold that exception.
|
|
663
|
+
*
|
|
664
|
+
* @param args Are passed to T's constructor.
|
|
665
|
+
*/
|
|
666
|
+
template <typename T, typename... Args>
|
|
667
|
+
T* tryEmplace(Try<T>& t, Args&&... args) noexcept;
|
|
668
|
+
|
|
669
|
+
/*
|
|
670
|
+
* Overload of tryEmplace() for Try<void>.
|
|
671
|
+
*/
|
|
672
|
+
inline void tryEmplace(Try<void>& t) noexcept;
|
|
673
|
+
|
|
674
|
+
/*
|
|
675
|
+
* Try to in-place construct a new value from the result of a function.
|
|
676
|
+
*
|
|
677
|
+
* If the function completes successfully then attempts to in-place construct
|
|
678
|
+
* a value of type, T, passing the result of the function as the only parameter.
|
|
679
|
+
*
|
|
680
|
+
* If either the call to the function completes with an exception or the
|
|
681
|
+
* constructor completes with an exception then the exception is caught and
|
|
682
|
+
* stored in the Try object.
|
|
683
|
+
*
|
|
684
|
+
* @returns A pointer to the newly constructed object if it completed
|
|
685
|
+
* successfully, otherwise returns nullptr if the operation completed with
|
|
686
|
+
* an exception.
|
|
687
|
+
*/
|
|
688
|
+
template <typename T, typename Func>
|
|
689
|
+
T* tryEmplaceWith(Try<T>& t, Func&& func) noexcept;
|
|
690
|
+
|
|
691
|
+
/*
|
|
692
|
+
* Specialization of tryEmplaceWith() for Try<void>.
|
|
693
|
+
*
|
|
694
|
+
* Calls func() and if it doesn't throw an exception then calls t.emplace().
|
|
695
|
+
* If func() throws then captures the exception in t using t.emplaceException().
|
|
696
|
+
*
|
|
697
|
+
* Func must be callable with zero parameters and must return void.
|
|
698
|
+
*
|
|
699
|
+
* @returns true if func() completed without an exception, false if func()
|
|
700
|
+
* threw an exception.
|
|
701
|
+
*/
|
|
702
|
+
template <typename Func>
|
|
703
|
+
bool tryEmplaceWith(Try<void>& t, Func&& func) noexcept;
|
|
704
|
+
|
|
705
|
+
/**
|
|
706
|
+
* Tuple<Try<Type>...> -> std::tuple<Type...>
|
|
707
|
+
*
|
|
708
|
+
* Unwraps a tuple-like type containing a sequence of Try<Type> instances to
|
|
709
|
+
* std::tuple<Type>
|
|
710
|
+
*/
|
|
711
|
+
template <typename Tuple>
|
|
712
|
+
auto unwrapTryTuple(Tuple&&);
|
|
713
|
+
|
|
714
|
+
/*
|
|
715
|
+
* Try to move the value/exception from another Try object.
|
|
716
|
+
*
|
|
717
|
+
* If T's constructor throws an exception then this is caught and the Try<T>
|
|
718
|
+
* object is initialised to hold that exception.
|
|
719
|
+
*/
|
|
720
|
+
template <typename T>
|
|
721
|
+
void tryAssign(Try<T>& t, Try<T>&& other) noexcept;
|
|
722
|
+
|
|
723
|
+
template <typename T>
|
|
724
|
+
Try(T&&) -> Try<std::decay_t<T>>;
|
|
725
|
+
|
|
726
|
+
} // namespace folly
|
|
727
|
+
|
|
728
|
+
#include <folly/Try-inl.h>
|