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,638 @@
|
|
|
1
|
+
#ifndef FASTFLOAT_BIGINT_H
|
|
2
|
+
#define FASTFLOAT_BIGINT_H
|
|
3
|
+
|
|
4
|
+
#include <algorithm>
|
|
5
|
+
#include <cstdint>
|
|
6
|
+
#include <climits>
|
|
7
|
+
#include <cstring>
|
|
8
|
+
|
|
9
|
+
#include "float_common.h"
|
|
10
|
+
|
|
11
|
+
namespace fast_float {
|
|
12
|
+
|
|
13
|
+
// the limb width: we want efficient multiplication of double the bits in
|
|
14
|
+
// limb, or for 64-bit limbs, at least 64-bit multiplication where we can
|
|
15
|
+
// extract the high and low parts efficiently. this is every 64-bit
|
|
16
|
+
// architecture except for sparc, which emulates 128-bit multiplication.
|
|
17
|
+
// we might have platforms where `CHAR_BIT` is not 8, so let's avoid
|
|
18
|
+
// doing `8 * sizeof(limb)`.
|
|
19
|
+
#if defined(FASTFLOAT_64BIT) && !defined(__sparc)
|
|
20
|
+
#define FASTFLOAT_64BIT_LIMB 1
|
|
21
|
+
typedef uint64_t limb;
|
|
22
|
+
constexpr size_t limb_bits = 64;
|
|
23
|
+
#else
|
|
24
|
+
#define FASTFLOAT_32BIT_LIMB
|
|
25
|
+
typedef uint32_t limb;
|
|
26
|
+
constexpr size_t limb_bits = 32;
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
typedef span<limb> limb_span;
|
|
30
|
+
|
|
31
|
+
// number of bits in a bigint. this needs to be at least the number
|
|
32
|
+
// of bits required to store the largest bigint, which is
|
|
33
|
+
// `log2(10**(digits + max_exp))`, or `log2(10**(767 + 342))`, or
|
|
34
|
+
// ~3600 bits, so we round to 4000.
|
|
35
|
+
constexpr size_t bigint_bits = 4000;
|
|
36
|
+
constexpr size_t bigint_limbs = bigint_bits / limb_bits;
|
|
37
|
+
|
|
38
|
+
// vector-like type that is allocated on the stack. the entire
|
|
39
|
+
// buffer is pre-allocated, and only the length changes.
|
|
40
|
+
template <uint16_t size> struct stackvec {
|
|
41
|
+
limb data[size];
|
|
42
|
+
// we never need more than 150 limbs
|
|
43
|
+
uint16_t length{0};
|
|
44
|
+
|
|
45
|
+
stackvec() = default;
|
|
46
|
+
stackvec(stackvec const &) = delete;
|
|
47
|
+
stackvec &operator=(stackvec const &) = delete;
|
|
48
|
+
stackvec(stackvec &&) = delete;
|
|
49
|
+
stackvec &operator=(stackvec &&other) = delete;
|
|
50
|
+
|
|
51
|
+
// create stack vector from existing limb span.
|
|
52
|
+
FASTFLOAT_CONSTEXPR20 stackvec(limb_span s) {
|
|
53
|
+
FASTFLOAT_ASSERT(try_extend(s));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
FASTFLOAT_CONSTEXPR14 limb &operator[](size_t index) noexcept {
|
|
57
|
+
FASTFLOAT_DEBUG_ASSERT(index < length);
|
|
58
|
+
return data[index];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
FASTFLOAT_CONSTEXPR14 const limb &operator[](size_t index) const noexcept {
|
|
62
|
+
FASTFLOAT_DEBUG_ASSERT(index < length);
|
|
63
|
+
return data[index];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// index from the end of the container
|
|
67
|
+
FASTFLOAT_CONSTEXPR14 const limb &rindex(size_t index) const noexcept {
|
|
68
|
+
FASTFLOAT_DEBUG_ASSERT(index < length);
|
|
69
|
+
size_t rindex = length - index - 1;
|
|
70
|
+
return data[rindex];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// set the length, without bounds checking.
|
|
74
|
+
FASTFLOAT_CONSTEXPR14 void set_len(size_t len) noexcept {
|
|
75
|
+
length = uint16_t(len);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
constexpr size_t len() const noexcept { return length; }
|
|
79
|
+
|
|
80
|
+
constexpr bool is_empty() const noexcept { return length == 0; }
|
|
81
|
+
|
|
82
|
+
constexpr size_t capacity() const noexcept { return size; }
|
|
83
|
+
|
|
84
|
+
// append item to vector, without bounds checking
|
|
85
|
+
FASTFLOAT_CONSTEXPR14 void push_unchecked(limb value) noexcept {
|
|
86
|
+
data[length] = value;
|
|
87
|
+
length++;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// append item to vector, returning if item was added
|
|
91
|
+
FASTFLOAT_CONSTEXPR14 bool try_push(limb value) noexcept {
|
|
92
|
+
if (len() < capacity()) {
|
|
93
|
+
push_unchecked(value);
|
|
94
|
+
return true;
|
|
95
|
+
} else {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// add items to the vector, from a span, without bounds checking
|
|
101
|
+
FASTFLOAT_CONSTEXPR20 void extend_unchecked(limb_span s) noexcept {
|
|
102
|
+
limb *ptr = data + length;
|
|
103
|
+
std::copy_n(s.ptr, s.len(), ptr);
|
|
104
|
+
set_len(len() + s.len());
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// try to add items to the vector, returning if items were added
|
|
108
|
+
FASTFLOAT_CONSTEXPR20 bool try_extend(limb_span s) noexcept {
|
|
109
|
+
if (len() + s.len() <= capacity()) {
|
|
110
|
+
extend_unchecked(s);
|
|
111
|
+
return true;
|
|
112
|
+
} else {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// resize the vector, without bounds checking
|
|
118
|
+
// if the new size is longer than the vector, assign value to each
|
|
119
|
+
// appended item.
|
|
120
|
+
FASTFLOAT_CONSTEXPR20
|
|
121
|
+
void resize_unchecked(size_t new_len, limb value) noexcept {
|
|
122
|
+
if (new_len > len()) {
|
|
123
|
+
size_t count = new_len - len();
|
|
124
|
+
limb *first = data + len();
|
|
125
|
+
limb *last = first + count;
|
|
126
|
+
::std::fill(first, last, value);
|
|
127
|
+
set_len(new_len);
|
|
128
|
+
} else {
|
|
129
|
+
set_len(new_len);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// try to resize the vector, returning if the vector was resized.
|
|
134
|
+
FASTFLOAT_CONSTEXPR20 bool try_resize(size_t new_len, limb value) noexcept {
|
|
135
|
+
if (new_len > capacity()) {
|
|
136
|
+
return false;
|
|
137
|
+
} else {
|
|
138
|
+
resize_unchecked(new_len, value);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// check if any limbs are non-zero after the given index.
|
|
144
|
+
// this needs to be done in reverse order, since the index
|
|
145
|
+
// is relative to the most significant limbs.
|
|
146
|
+
FASTFLOAT_CONSTEXPR14 bool nonzero(size_t index) const noexcept {
|
|
147
|
+
while (index < len()) {
|
|
148
|
+
if (rindex(index) != 0) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
index++;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// normalize the big integer, so most-significant zero limbs are removed.
|
|
157
|
+
FASTFLOAT_CONSTEXPR14 void normalize() noexcept {
|
|
158
|
+
while (len() > 0 && rindex(0) == 0) {
|
|
159
|
+
length--;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR14 uint64_t
|
|
165
|
+
empty_hi64(bool &truncated) noexcept {
|
|
166
|
+
truncated = false;
|
|
167
|
+
return 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 uint64_t
|
|
171
|
+
uint64_hi64(uint64_t r0, bool &truncated) noexcept {
|
|
172
|
+
truncated = false;
|
|
173
|
+
int shl = leading_zeroes(r0);
|
|
174
|
+
return r0 << shl;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 uint64_t
|
|
178
|
+
uint64_hi64(uint64_t r0, uint64_t r1, bool &truncated) noexcept {
|
|
179
|
+
int shl = leading_zeroes(r0);
|
|
180
|
+
if (shl == 0) {
|
|
181
|
+
truncated = r1 != 0;
|
|
182
|
+
return r0;
|
|
183
|
+
} else {
|
|
184
|
+
int shr = 64 - shl;
|
|
185
|
+
truncated = (r1 << shl) != 0;
|
|
186
|
+
return (r0 << shl) | (r1 >> shr);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 uint64_t
|
|
191
|
+
uint32_hi64(uint32_t r0, bool &truncated) noexcept {
|
|
192
|
+
return uint64_hi64(r0, truncated);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 uint64_t
|
|
196
|
+
uint32_hi64(uint32_t r0, uint32_t r1, bool &truncated) noexcept {
|
|
197
|
+
uint64_t x0 = r0;
|
|
198
|
+
uint64_t x1 = r1;
|
|
199
|
+
return uint64_hi64((x0 << 32) | x1, truncated);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 uint64_t
|
|
203
|
+
uint32_hi64(uint32_t r0, uint32_t r1, uint32_t r2, bool &truncated) noexcept {
|
|
204
|
+
uint64_t x0 = r0;
|
|
205
|
+
uint64_t x1 = r1;
|
|
206
|
+
uint64_t x2 = r2;
|
|
207
|
+
return uint64_hi64(x0, (x1 << 32) | x2, truncated);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// add two small integers, checking for overflow.
|
|
211
|
+
// we want an efficient operation. for msvc, where
|
|
212
|
+
// we don't have built-in intrinsics, this is still
|
|
213
|
+
// pretty fast.
|
|
214
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 limb
|
|
215
|
+
scalar_add(limb x, limb y, bool &overflow) noexcept {
|
|
216
|
+
limb z;
|
|
217
|
+
// gcc and clang
|
|
218
|
+
#if defined(__has_builtin)
|
|
219
|
+
#if __has_builtin(__builtin_add_overflow)
|
|
220
|
+
if (!cpp20_and_in_constexpr()) {
|
|
221
|
+
overflow = __builtin_add_overflow(x, y, &z);
|
|
222
|
+
return z;
|
|
223
|
+
}
|
|
224
|
+
#endif
|
|
225
|
+
#endif
|
|
226
|
+
|
|
227
|
+
// generic, this still optimizes correctly on MSVC.
|
|
228
|
+
z = x + y;
|
|
229
|
+
overflow = z < x;
|
|
230
|
+
return z;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// multiply two small integers, getting both the high and low bits.
|
|
234
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 limb
|
|
235
|
+
scalar_mul(limb x, limb y, limb &carry) noexcept {
|
|
236
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
237
|
+
#if defined(__SIZEOF_INT128__)
|
|
238
|
+
// GCC and clang both define it as an extension.
|
|
239
|
+
__uint128_t z = __uint128_t(x) * __uint128_t(y) + __uint128_t(carry);
|
|
240
|
+
carry = limb(z >> limb_bits);
|
|
241
|
+
return limb(z);
|
|
242
|
+
#else
|
|
243
|
+
// fallback, no native 128-bit integer multiplication with carry.
|
|
244
|
+
// on msvc, this optimizes identically, somehow.
|
|
245
|
+
value128 z = full_multiplication(x, y);
|
|
246
|
+
bool overflow;
|
|
247
|
+
z.low = scalar_add(z.low, carry, overflow);
|
|
248
|
+
z.high += uint64_t(overflow); // cannot overflow
|
|
249
|
+
carry = z.high;
|
|
250
|
+
return z.low;
|
|
251
|
+
#endif
|
|
252
|
+
#else
|
|
253
|
+
uint64_t z = uint64_t(x) * uint64_t(y) + uint64_t(carry);
|
|
254
|
+
carry = limb(z >> limb_bits);
|
|
255
|
+
return limb(z);
|
|
256
|
+
#endif
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// add scalar value to bigint starting from offset.
|
|
260
|
+
// used in grade school multiplication
|
|
261
|
+
template <uint16_t size>
|
|
262
|
+
inline FASTFLOAT_CONSTEXPR20 bool small_add_from(stackvec<size> &vec, limb y,
|
|
263
|
+
size_t start) noexcept {
|
|
264
|
+
size_t index = start;
|
|
265
|
+
limb carry = y;
|
|
266
|
+
bool overflow;
|
|
267
|
+
while (carry != 0 && index < vec.len()) {
|
|
268
|
+
vec[index] = scalar_add(vec[index], carry, overflow);
|
|
269
|
+
carry = limb(overflow);
|
|
270
|
+
index += 1;
|
|
271
|
+
}
|
|
272
|
+
if (carry != 0) {
|
|
273
|
+
FASTFLOAT_TRY(vec.try_push(carry));
|
|
274
|
+
}
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// add scalar value to bigint.
|
|
279
|
+
template <uint16_t size>
|
|
280
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 bool
|
|
281
|
+
small_add(stackvec<size> &vec, limb y) noexcept {
|
|
282
|
+
return small_add_from(vec, y, 0);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// multiply bigint by scalar value.
|
|
286
|
+
template <uint16_t size>
|
|
287
|
+
inline FASTFLOAT_CONSTEXPR20 bool small_mul(stackvec<size> &vec,
|
|
288
|
+
limb y) noexcept {
|
|
289
|
+
limb carry = 0;
|
|
290
|
+
for (size_t index = 0; index < vec.len(); index++) {
|
|
291
|
+
vec[index] = scalar_mul(vec[index], y, carry);
|
|
292
|
+
}
|
|
293
|
+
if (carry != 0) {
|
|
294
|
+
FASTFLOAT_TRY(vec.try_push(carry));
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// add bigint to bigint starting from index.
|
|
300
|
+
// used in grade school multiplication
|
|
301
|
+
template <uint16_t size>
|
|
302
|
+
FASTFLOAT_CONSTEXPR20 bool large_add_from(stackvec<size> &x, limb_span y,
|
|
303
|
+
size_t start) noexcept {
|
|
304
|
+
// the effective x buffer is from `xstart..x.len()`, so exit early
|
|
305
|
+
// if we can't get that current range.
|
|
306
|
+
if (x.len() < start || y.len() > x.len() - start) {
|
|
307
|
+
FASTFLOAT_TRY(x.try_resize(y.len() + start, 0));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
bool carry = false;
|
|
311
|
+
for (size_t index = 0; index < y.len(); index++) {
|
|
312
|
+
limb xi = x[index + start];
|
|
313
|
+
limb yi = y[index];
|
|
314
|
+
bool c1 = false;
|
|
315
|
+
bool c2 = false;
|
|
316
|
+
xi = scalar_add(xi, yi, c1);
|
|
317
|
+
if (carry) {
|
|
318
|
+
xi = scalar_add(xi, 1, c2);
|
|
319
|
+
}
|
|
320
|
+
x[index + start] = xi;
|
|
321
|
+
carry = c1 | c2;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// handle overflow
|
|
325
|
+
if (carry) {
|
|
326
|
+
FASTFLOAT_TRY(small_add_from(x, 1, y.len() + start));
|
|
327
|
+
}
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// add bigint to bigint.
|
|
332
|
+
template <uint16_t size>
|
|
333
|
+
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 bool
|
|
334
|
+
large_add_from(stackvec<size> &x, limb_span y) noexcept {
|
|
335
|
+
return large_add_from(x, y, 0);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// grade-school multiplication algorithm
|
|
339
|
+
template <uint16_t size>
|
|
340
|
+
FASTFLOAT_CONSTEXPR20 bool long_mul(stackvec<size> &x, limb_span y) noexcept {
|
|
341
|
+
limb_span xs = limb_span(x.data, x.len());
|
|
342
|
+
stackvec<size> z(xs);
|
|
343
|
+
limb_span zs = limb_span(z.data, z.len());
|
|
344
|
+
|
|
345
|
+
if (y.len() != 0) {
|
|
346
|
+
limb y0 = y[0];
|
|
347
|
+
FASTFLOAT_TRY(small_mul(x, y0));
|
|
348
|
+
for (size_t index = 1; index < y.len(); index++) {
|
|
349
|
+
limb yi = y[index];
|
|
350
|
+
stackvec<size> zi;
|
|
351
|
+
if (yi != 0) {
|
|
352
|
+
// re-use the same buffer throughout
|
|
353
|
+
zi.set_len(0);
|
|
354
|
+
FASTFLOAT_TRY(zi.try_extend(zs));
|
|
355
|
+
FASTFLOAT_TRY(small_mul(zi, yi));
|
|
356
|
+
limb_span zis = limb_span(zi.data, zi.len());
|
|
357
|
+
FASTFLOAT_TRY(large_add_from(x, zis, index));
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
x.normalize();
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// grade-school multiplication algorithm
|
|
367
|
+
template <uint16_t size>
|
|
368
|
+
FASTFLOAT_CONSTEXPR20 bool large_mul(stackvec<size> &x, limb_span y) noexcept {
|
|
369
|
+
if (y.len() == 1) {
|
|
370
|
+
FASTFLOAT_TRY(small_mul(x, y[0]));
|
|
371
|
+
} else {
|
|
372
|
+
FASTFLOAT_TRY(long_mul(x, y));
|
|
373
|
+
}
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
template <typename = void> struct pow5_tables {
|
|
378
|
+
static constexpr uint32_t large_step = 135;
|
|
379
|
+
static constexpr uint64_t small_power_of_5[] = {
|
|
380
|
+
1UL,
|
|
381
|
+
5UL,
|
|
382
|
+
25UL,
|
|
383
|
+
125UL,
|
|
384
|
+
625UL,
|
|
385
|
+
3125UL,
|
|
386
|
+
15625UL,
|
|
387
|
+
78125UL,
|
|
388
|
+
390625UL,
|
|
389
|
+
1953125UL,
|
|
390
|
+
9765625UL,
|
|
391
|
+
48828125UL,
|
|
392
|
+
244140625UL,
|
|
393
|
+
1220703125UL,
|
|
394
|
+
6103515625UL,
|
|
395
|
+
30517578125UL,
|
|
396
|
+
152587890625UL,
|
|
397
|
+
762939453125UL,
|
|
398
|
+
3814697265625UL,
|
|
399
|
+
19073486328125UL,
|
|
400
|
+
95367431640625UL,
|
|
401
|
+
476837158203125UL,
|
|
402
|
+
2384185791015625UL,
|
|
403
|
+
11920928955078125UL,
|
|
404
|
+
59604644775390625UL,
|
|
405
|
+
298023223876953125UL,
|
|
406
|
+
1490116119384765625UL,
|
|
407
|
+
7450580596923828125UL,
|
|
408
|
+
};
|
|
409
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
410
|
+
constexpr static limb large_power_of_5[] = {
|
|
411
|
+
1414648277510068013UL, 9180637584431281687UL, 4539964771860779200UL,
|
|
412
|
+
10482974169319127550UL, 198276706040285095UL};
|
|
413
|
+
#else
|
|
414
|
+
constexpr static limb large_power_of_5[] = {
|
|
415
|
+
4279965485U, 329373468U, 4020270615U, 2137533757U, 4287402176U,
|
|
416
|
+
1057042919U, 1071430142U, 2440757623U, 381945767U, 46164893U};
|
|
417
|
+
#endif
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
#if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
|
|
421
|
+
|
|
422
|
+
template <typename T> constexpr uint32_t pow5_tables<T>::large_step;
|
|
423
|
+
|
|
424
|
+
template <typename T> constexpr uint64_t pow5_tables<T>::small_power_of_5[];
|
|
425
|
+
|
|
426
|
+
template <typename T> constexpr limb pow5_tables<T>::large_power_of_5[];
|
|
427
|
+
|
|
428
|
+
#endif
|
|
429
|
+
|
|
430
|
+
// big integer type. implements a small subset of big integer
|
|
431
|
+
// arithmetic, using simple algorithms since asymptotically
|
|
432
|
+
// faster algorithms are slower for a small number of limbs.
|
|
433
|
+
// all operations assume the big-integer is normalized.
|
|
434
|
+
struct bigint : pow5_tables<> {
|
|
435
|
+
// storage of the limbs, in little-endian order.
|
|
436
|
+
stackvec<bigint_limbs> vec;
|
|
437
|
+
|
|
438
|
+
FASTFLOAT_CONSTEXPR20 bigint() : vec() {}
|
|
439
|
+
|
|
440
|
+
bigint(bigint const &) = delete;
|
|
441
|
+
bigint &operator=(bigint const &) = delete;
|
|
442
|
+
bigint(bigint &&) = delete;
|
|
443
|
+
bigint &operator=(bigint &&other) = delete;
|
|
444
|
+
|
|
445
|
+
FASTFLOAT_CONSTEXPR20 bigint(uint64_t value) : vec() {
|
|
446
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
447
|
+
vec.push_unchecked(value);
|
|
448
|
+
#else
|
|
449
|
+
vec.push_unchecked(uint32_t(value));
|
|
450
|
+
vec.push_unchecked(uint32_t(value >> 32));
|
|
451
|
+
#endif
|
|
452
|
+
vec.normalize();
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// get the high 64 bits from the vector, and if bits were truncated.
|
|
456
|
+
// this is to get the significant digits for the float.
|
|
457
|
+
FASTFLOAT_CONSTEXPR20 uint64_t hi64(bool &truncated) const noexcept {
|
|
458
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
459
|
+
if (vec.len() == 0) {
|
|
460
|
+
return empty_hi64(truncated);
|
|
461
|
+
} else if (vec.len() == 1) {
|
|
462
|
+
return uint64_hi64(vec.rindex(0), truncated);
|
|
463
|
+
} else {
|
|
464
|
+
uint64_t result = uint64_hi64(vec.rindex(0), vec.rindex(1), truncated);
|
|
465
|
+
truncated |= vec.nonzero(2);
|
|
466
|
+
return result;
|
|
467
|
+
}
|
|
468
|
+
#else
|
|
469
|
+
if (vec.len() == 0) {
|
|
470
|
+
return empty_hi64(truncated);
|
|
471
|
+
} else if (vec.len() == 1) {
|
|
472
|
+
return uint32_hi64(vec.rindex(0), truncated);
|
|
473
|
+
} else if (vec.len() == 2) {
|
|
474
|
+
return uint32_hi64(vec.rindex(0), vec.rindex(1), truncated);
|
|
475
|
+
} else {
|
|
476
|
+
uint64_t result =
|
|
477
|
+
uint32_hi64(vec.rindex(0), vec.rindex(1), vec.rindex(2), truncated);
|
|
478
|
+
truncated |= vec.nonzero(3);
|
|
479
|
+
return result;
|
|
480
|
+
}
|
|
481
|
+
#endif
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// compare two big integers, returning the large value.
|
|
485
|
+
// assumes both are normalized. if the return value is
|
|
486
|
+
// negative, other is larger, if the return value is
|
|
487
|
+
// positive, this is larger, otherwise they are equal.
|
|
488
|
+
// the limbs are stored in little-endian order, so we
|
|
489
|
+
// must compare the limbs in ever order.
|
|
490
|
+
FASTFLOAT_CONSTEXPR20 int compare(bigint const &other) const noexcept {
|
|
491
|
+
if (vec.len() > other.vec.len()) {
|
|
492
|
+
return 1;
|
|
493
|
+
} else if (vec.len() < other.vec.len()) {
|
|
494
|
+
return -1;
|
|
495
|
+
} else {
|
|
496
|
+
for (size_t index = vec.len(); index > 0; index--) {
|
|
497
|
+
limb xi = vec[index - 1];
|
|
498
|
+
limb yi = other.vec[index - 1];
|
|
499
|
+
if (xi > yi) {
|
|
500
|
+
return 1;
|
|
501
|
+
} else if (xi < yi) {
|
|
502
|
+
return -1;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return 0;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// shift left each limb n bits, carrying over to the new limb
|
|
510
|
+
// returns true if we were able to shift all the digits.
|
|
511
|
+
FASTFLOAT_CONSTEXPR20 bool shl_bits(size_t n) noexcept {
|
|
512
|
+
// Internally, for each item, we shift left by n, and add the previous
|
|
513
|
+
// right shifted limb-bits.
|
|
514
|
+
// For example, we transform (for u8) shifted left 2, to:
|
|
515
|
+
// b10100100 b01000010
|
|
516
|
+
// b10 b10010001 b00001000
|
|
517
|
+
FASTFLOAT_DEBUG_ASSERT(n != 0);
|
|
518
|
+
FASTFLOAT_DEBUG_ASSERT(n < sizeof(limb) * 8);
|
|
519
|
+
|
|
520
|
+
size_t shl = n;
|
|
521
|
+
size_t shr = limb_bits - shl;
|
|
522
|
+
limb prev = 0;
|
|
523
|
+
for (size_t index = 0; index < vec.len(); index++) {
|
|
524
|
+
limb xi = vec[index];
|
|
525
|
+
vec[index] = (xi << shl) | (prev >> shr);
|
|
526
|
+
prev = xi;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
limb carry = prev >> shr;
|
|
530
|
+
if (carry != 0) {
|
|
531
|
+
return vec.try_push(carry);
|
|
532
|
+
}
|
|
533
|
+
return true;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// move the limbs left by `n` limbs.
|
|
537
|
+
FASTFLOAT_CONSTEXPR20 bool shl_limbs(size_t n) noexcept {
|
|
538
|
+
FASTFLOAT_DEBUG_ASSERT(n != 0);
|
|
539
|
+
if (n + vec.len() > vec.capacity()) {
|
|
540
|
+
return false;
|
|
541
|
+
} else if (!vec.is_empty()) {
|
|
542
|
+
// move limbs
|
|
543
|
+
limb *dst = vec.data + n;
|
|
544
|
+
limb const *src = vec.data;
|
|
545
|
+
std::copy_backward(src, src + vec.len(), dst + vec.len());
|
|
546
|
+
// fill in empty limbs
|
|
547
|
+
limb *first = vec.data;
|
|
548
|
+
limb *last = first + n;
|
|
549
|
+
::std::fill(first, last, 0);
|
|
550
|
+
vec.set_len(n + vec.len());
|
|
551
|
+
return true;
|
|
552
|
+
} else {
|
|
553
|
+
return true;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// move the limbs left by `n` bits.
|
|
558
|
+
FASTFLOAT_CONSTEXPR20 bool shl(size_t n) noexcept {
|
|
559
|
+
size_t rem = n % limb_bits;
|
|
560
|
+
size_t div = n / limb_bits;
|
|
561
|
+
if (rem != 0) {
|
|
562
|
+
FASTFLOAT_TRY(shl_bits(rem));
|
|
563
|
+
}
|
|
564
|
+
if (div != 0) {
|
|
565
|
+
FASTFLOAT_TRY(shl_limbs(div));
|
|
566
|
+
}
|
|
567
|
+
return true;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// get the number of leading zeros in the bigint.
|
|
571
|
+
FASTFLOAT_CONSTEXPR20 int ctlz() const noexcept {
|
|
572
|
+
if (vec.is_empty()) {
|
|
573
|
+
return 0;
|
|
574
|
+
} else {
|
|
575
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
576
|
+
return leading_zeroes(vec.rindex(0));
|
|
577
|
+
#else
|
|
578
|
+
// no use defining a specialized leading_zeroes for a 32-bit type.
|
|
579
|
+
uint64_t r0 = vec.rindex(0);
|
|
580
|
+
return leading_zeroes(r0 << 32);
|
|
581
|
+
#endif
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// get the number of bits in the bigint.
|
|
586
|
+
FASTFLOAT_CONSTEXPR20 int bit_length() const noexcept {
|
|
587
|
+
int lz = ctlz();
|
|
588
|
+
return int(limb_bits * vec.len()) - lz;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
FASTFLOAT_CONSTEXPR20 bool mul(limb y) noexcept { return small_mul(vec, y); }
|
|
592
|
+
|
|
593
|
+
FASTFLOAT_CONSTEXPR20 bool add(limb y) noexcept { return small_add(vec, y); }
|
|
594
|
+
|
|
595
|
+
// multiply as if by 2 raised to a power.
|
|
596
|
+
FASTFLOAT_CONSTEXPR20 bool pow2(uint32_t exp) noexcept { return shl(exp); }
|
|
597
|
+
|
|
598
|
+
// multiply as if by 5 raised to a power.
|
|
599
|
+
FASTFLOAT_CONSTEXPR20 bool pow5(uint32_t exp) noexcept {
|
|
600
|
+
// multiply by a power of 5
|
|
601
|
+
size_t large_length = sizeof(large_power_of_5) / sizeof(limb);
|
|
602
|
+
limb_span large = limb_span(large_power_of_5, large_length);
|
|
603
|
+
while (exp >= large_step) {
|
|
604
|
+
FASTFLOAT_TRY(large_mul(vec, large));
|
|
605
|
+
exp -= large_step;
|
|
606
|
+
}
|
|
607
|
+
#ifdef FASTFLOAT_64BIT_LIMB
|
|
608
|
+
uint32_t small_step = 27;
|
|
609
|
+
limb max_native = 7450580596923828125UL;
|
|
610
|
+
#else
|
|
611
|
+
uint32_t small_step = 13;
|
|
612
|
+
limb max_native = 1220703125U;
|
|
613
|
+
#endif
|
|
614
|
+
while (exp >= small_step) {
|
|
615
|
+
FASTFLOAT_TRY(small_mul(vec, max_native));
|
|
616
|
+
exp -= small_step;
|
|
617
|
+
}
|
|
618
|
+
if (exp != 0) {
|
|
619
|
+
// Work around clang bug https://godbolt.org/z/zedh7rrhc
|
|
620
|
+
// This is similar to https://github.com/llvm/llvm-project/issues/47746,
|
|
621
|
+
// except the workaround described there don't work here
|
|
622
|
+
FASTFLOAT_TRY(small_mul(
|
|
623
|
+
vec, limb(((void)small_power_of_5[0], small_power_of_5[exp]))));
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
return true;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
// multiply as if by 10 raised to a power.
|
|
630
|
+
FASTFLOAT_CONSTEXPR20 bool pow10(uint32_t exp) noexcept {
|
|
631
|
+
FASTFLOAT_TRY(pow5(exp));
|
|
632
|
+
return pow2(exp);
|
|
633
|
+
}
|
|
634
|
+
};
|
|
635
|
+
|
|
636
|
+
} // namespace fast_float
|
|
637
|
+
|
|
638
|
+
#endif
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#ifndef FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|
|
2
|
+
#define FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|
|
3
|
+
|
|
4
|
+
#ifdef __has_include
|
|
5
|
+
#if __has_include(<version>)
|
|
6
|
+
#include <version>
|
|
7
|
+
#endif
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
// Testing for https://wg21.link/N3652, adopted in C++14
|
|
11
|
+
#if __cpp_constexpr >= 201304
|
|
12
|
+
#define FASTFLOAT_CONSTEXPR14 constexpr
|
|
13
|
+
#else
|
|
14
|
+
#define FASTFLOAT_CONSTEXPR14
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
|
18
|
+
#define FASTFLOAT_HAS_BIT_CAST 1
|
|
19
|
+
#else
|
|
20
|
+
#define FASTFLOAT_HAS_BIT_CAST 0
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
#if defined(__cpp_lib_is_constant_evaluated) && \
|
|
24
|
+
__cpp_lib_is_constant_evaluated >= 201811L
|
|
25
|
+
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 1
|
|
26
|
+
#else
|
|
27
|
+
#define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 0
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
// Testing for relevant C++20 constexpr library features
|
|
31
|
+
#if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED && FASTFLOAT_HAS_BIT_CAST && \
|
|
32
|
+
__cpp_lib_constexpr_algorithms >= 201806L /*For std::copy and std::fill*/
|
|
33
|
+
#define FASTFLOAT_CONSTEXPR20 constexpr
|
|
34
|
+
#define FASTFLOAT_IS_CONSTEXPR 1
|
|
35
|
+
#else
|
|
36
|
+
#define FASTFLOAT_CONSTEXPR20
|
|
37
|
+
#define FASTFLOAT_IS_CONSTEXPR 0
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
|
|
41
|
+
#define FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE 0
|
|
42
|
+
#else
|
|
43
|
+
#define FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE 1
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
#endif // FASTFLOAT_CONSTEXPR_FEATURE_DETECT_H
|