react-native-windows 0.81.34 → 0.81.37

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.
Files changed (928) hide show
  1. package/Directory.Build.props +1 -16
  2. package/Folly/ThreadNameStub.cpp +4 -6
  3. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +1 -1
  4. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -4
  5. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +8 -4
  6. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -3
  7. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +48 -2
  8. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +40 -13
  9. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
  10. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
  11. package/Microsoft.ReactNative/TurboModulesProvider.cpp +30 -13
  12. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  13. package/PropertySheets/React.Cpp.props +3 -3
  14. package/ReactCommon/ReactCommon.vcxproj +0 -10
  15. package/ReactCommon/packages.lock.win32.json +0 -10
  16. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
  17. package/Scripts/creaternwlib.cmd +2 -2
  18. package/Shared/Shared.vcxitems +2 -0
  19. package/{Folly → external}/.clang-format +0 -1
  20. package/external/External.vcxitems +10 -0
  21. package/external/fast-float/.syncignore +10 -0
  22. package/external/fast-float/LICENSE-APACHE +190 -0
  23. package/external/fast-float/LICENSE-BOOST +23 -0
  24. package/external/fast-float/LICENSE-MIT +27 -0
  25. package/external/fast-float/README.md +545 -0
  26. package/external/fast-float/cgmanifest.json +15 -0
  27. package/external/fast-float/fast-float.vcxitems +14 -0
  28. package/external/fast-float/include/fast_float/ascii_number.h +588 -0
  29. package/external/fast-float/include/fast_float/bigint.h +638 -0
  30. package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
  31. package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
  32. package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
  33. package/external/fast-float/include/fast_float/fast_float.h +59 -0
  34. package/external/fast-float/include/fast_float/fast_table.h +708 -0
  35. package/external/fast-float/include/fast_float/float_common.h +1240 -0
  36. package/external/fast-float/include/fast_float/parse_number.h +399 -0
  37. package/external/fast-float/sync-config.json +8 -0
  38. package/external/fmt/.syncignore +10 -0
  39. package/external/fmt/CONTRIBUTING.md +20 -0
  40. package/external/fmt/LICENSE +27 -0
  41. package/external/fmt/README.md +484 -0
  42. package/{fmt → external/fmt}/cgmanifest.json +1 -1
  43. package/external/fmt/doc/ChangeLog-old.md +3290 -0
  44. package/external/fmt/doc/api.md +650 -0
  45. package/external/fmt/doc/fmt.css +61 -0
  46. package/external/fmt/doc/fmt.js +4 -0
  47. package/external/fmt/doc/get-started.md +222 -0
  48. package/external/fmt/doc/index.md +151 -0
  49. package/external/fmt/doc/perf.svg +1 -0
  50. package/external/fmt/doc/python-license.txt +290 -0
  51. package/external/fmt/doc/syntax.md +887 -0
  52. package/external/fmt/fmt.vcxitems +28 -0
  53. package/external/fmt/include/fmt/args.h +228 -0
  54. package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
  55. package/external/fmt/include/fmt/chrono.h +2432 -0
  56. package/external/fmt/include/fmt/color.h +612 -0
  57. package/external/fmt/include/fmt/compile.h +529 -0
  58. package/external/fmt/include/fmt/core.h +5 -0
  59. package/external/fmt/include/fmt/format-inl.h +1928 -0
  60. package/external/fmt/include/fmt/format.h +4427 -0
  61. package/external/fmt/include/fmt/os.h +439 -0
  62. package/external/fmt/include/fmt/ostream.h +211 -0
  63. package/external/fmt/include/fmt/printf.h +656 -0
  64. package/external/fmt/include/fmt/ranges.h +882 -0
  65. package/external/fmt/include/fmt/std.h +699 -0
  66. package/external/fmt/include/fmt/xchar.h +322 -0
  67. package/external/fmt/src/fmt.cc +135 -0
  68. package/external/fmt/src/format.cc +43 -0
  69. package/external/fmt/src/os.cc +403 -0
  70. package/external/fmt/sync-config.json +8 -0
  71. package/external/folly/.syncignore +60 -0
  72. package/external/folly/LICENSE +200 -0
  73. package/external/folly/README.md +263 -0
  74. package/{fmt → external/folly/folly}/.clang-format +0 -1
  75. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  76. package/external/folly/folly/AtomicHashArray.h +431 -0
  77. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  78. package/external/folly/folly/AtomicHashMap.h +484 -0
  79. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  80. package/external/folly/folly/AtomicLinkedList.h +110 -0
  81. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  82. package/external/folly/folly/BUCK +1631 -0
  83. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  84. package/external/folly/folly/Benchmark.cpp +986 -0
  85. package/external/folly/folly/Benchmark.h +680 -0
  86. package/external/folly/folly/BenchmarkUtil.h +47 -0
  87. package/external/folly/folly/Bits.h +17 -0
  88. package/external/folly/folly/CMakeLists.txt +110 -0
  89. package/external/folly/folly/CPortability.h +338 -0
  90. package/external/folly/folly/CancellationToken-inl.h +449 -0
  91. package/external/folly/folly/CancellationToken.cpp +250 -0
  92. package/external/folly/folly/CancellationToken.h +365 -0
  93. package/external/folly/folly/Chrono.h +132 -0
  94. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  95. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  96. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  97. package/external/folly/folly/ConcurrentLazy.h +74 -0
  98. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  99. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  100. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  101. package/external/folly/folly/Conv.h +2026 -0
  102. package/external/folly/folly/CppAttributes.h +170 -0
  103. package/external/folly/folly/CpuId.h +297 -0
  104. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  105. package/external/folly/folly/Demangle.cpp +255 -0
  106. package/external/folly/folly/Demangle.h +73 -0
  107. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  108. package/external/folly/folly/DynamicConverter.h +17 -0
  109. package/external/folly/folly/Exception.h +150 -0
  110. package/external/folly/folly/ExceptionString.cpp +51 -0
  111. package/external/folly/folly/ExceptionString.h +33 -0
  112. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  113. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  114. package/external/folly/folly/ExceptionWrapper.h +377 -0
  115. package/external/folly/folly/Executor.cpp +111 -0
  116. package/external/folly/folly/Executor.h +351 -0
  117. package/external/folly/folly/Expected.h +1725 -0
  118. package/external/folly/folly/FBString.h +2888 -0
  119. package/external/folly/folly/FBVector.h +17 -0
  120. package/external/folly/folly/File.cpp +180 -0
  121. package/external/folly/folly/File.h +177 -0
  122. package/external/folly/folly/FileUtil.cpp +378 -0
  123. package/external/folly/folly/FileUtil.h +332 -0
  124. package/external/folly/folly/Fingerprint.cpp +135 -0
  125. package/external/folly/folly/Fingerprint.h +289 -0
  126. package/external/folly/folly/FixedString.h +2965 -0
  127. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  128. package/external/folly/folly/FollyMemcpy.h +23 -0
  129. package/external/folly/folly/FollyMemset.cpp +29 -0
  130. package/external/folly/folly/FollyMemset.h +25 -0
  131. package/external/folly/folly/Format-inl.h +1152 -0
  132. package/external/folly/folly/Format.cpp +429 -0
  133. package/external/folly/folly/Format.h +463 -0
  134. package/external/folly/folly/FormatArg.h +285 -0
  135. package/external/folly/folly/FormatTraits.h +65 -0
  136. package/external/folly/folly/Function.h +1159 -0
  137. package/external/folly/folly/GLog.h +85 -0
  138. package/external/folly/folly/GroupVarint.cpp +153 -0
  139. package/external/folly/folly/GroupVarint.h +630 -0
  140. package/external/folly/folly/Hash.h +20 -0
  141. package/external/folly/folly/IPAddress.cpp +490 -0
  142. package/external/folly/folly/IPAddress.h +667 -0
  143. package/external/folly/folly/IPAddressException.h +82 -0
  144. package/external/folly/folly/IPAddressV4.cpp +305 -0
  145. package/external/folly/folly/IPAddressV4.h +495 -0
  146. package/external/folly/folly/IPAddressV6.cpp +541 -0
  147. package/external/folly/folly/IPAddressV6.h +627 -0
  148. package/external/folly/folly/Indestructible.h +164 -0
  149. package/external/folly/folly/IndexedMemPool.h +550 -0
  150. package/external/folly/folly/IntrusiveList.h +17 -0
  151. package/external/folly/folly/Lazy.h +142 -0
  152. package/external/folly/folly/Likely.h +76 -0
  153. package/external/folly/folly/MPMCPipeline.h +280 -0
  154. package/external/folly/folly/MPMCQueue.h +1556 -0
  155. package/external/folly/folly/MacAddress.cpp +188 -0
  156. package/external/folly/folly/MacAddress.h +260 -0
  157. package/external/folly/folly/MapUtil.h +17 -0
  158. package/external/folly/folly/Math.h +258 -0
  159. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  160. package/external/folly/folly/Memory.h +900 -0
  161. package/external/folly/folly/MicroLock.cpp +76 -0
  162. package/external/folly/folly/MicroLock.h +354 -0
  163. package/external/folly/folly/MicroSpinLock.h +17 -0
  164. package/external/folly/folly/MoveWrapper.h +76 -0
  165. package/external/folly/folly/ObserverContainer.h +1026 -0
  166. package/external/folly/folly/Optional.h +743 -0
  167. package/external/folly/folly/Overload.h +325 -0
  168. package/external/folly/folly/PackedSyncPtr.h +147 -0
  169. package/external/folly/folly/Padded.h +464 -0
  170. package/external/folly/folly/Poly-inl.h +230 -0
  171. package/external/folly/folly/Poly.h +1095 -0
  172. package/external/folly/folly/PolyException.h +43 -0
  173. package/external/folly/folly/Portability.h +644 -0
  174. package/external/folly/folly/Preprocessor.h +236 -0
  175. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  176. package/external/folly/folly/RWSpinLock.h +17 -0
  177. package/external/folly/folly/Random-inl.h +86 -0
  178. package/external/folly/folly/Random.cpp +184 -0
  179. package/external/folly/folly/Random.h +434 -0
  180. package/external/folly/folly/Range.h +1772 -0
  181. package/external/folly/folly/Replaceable.h +636 -0
  182. package/external/folly/folly/ScopeGuard.cpp +29 -0
  183. package/external/folly/folly/ScopeGuard.h +420 -0
  184. package/external/folly/folly/SharedMutex.cpp +81 -0
  185. package/external/folly/folly/SharedMutex.h +1751 -0
  186. package/external/folly/folly/Singleton-inl.h +332 -0
  187. package/external/folly/folly/Singleton.cpp +512 -0
  188. package/external/folly/folly/Singleton.h +891 -0
  189. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  190. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  191. package/external/folly/folly/SocketAddress.cpp +786 -0
  192. package/external/folly/folly/SocketAddress.h +768 -0
  193. package/external/folly/folly/SpinLock.h +55 -0
  194. package/external/folly/folly/String-inl.h +668 -0
  195. package/external/folly/folly/String.cpp +777 -0
  196. package/external/folly/folly/String.h +767 -0
  197. package/external/folly/folly/Subprocess.cpp +1142 -0
  198. package/external/folly/folly/Subprocess.h +1055 -0
  199. package/external/folly/folly/Synchronized.h +1833 -0
  200. package/external/folly/folly/SynchronizedPtr.h +106 -0
  201. package/external/folly/folly/ThreadCachedInt.h +175 -0
  202. package/external/folly/folly/ThreadLocal.h +478 -0
  203. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  204. package/external/folly/folly/TimeoutQueue.h +123 -0
  205. package/external/folly/folly/TokenBucket.h +673 -0
  206. package/external/folly/folly/Traits.h +1442 -0
  207. package/external/folly/folly/Try-inl.h +372 -0
  208. package/external/folly/folly/Try.cpp +23 -0
  209. package/external/folly/folly/Try.h +728 -0
  210. package/external/folly/folly/UTF8String.h +56 -0
  211. package/external/folly/folly/Unicode.cpp +201 -0
  212. package/external/folly/folly/Unicode.h +94 -0
  213. package/external/folly/folly/Unit.h +65 -0
  214. package/external/folly/folly/Uri-inl.h +101 -0
  215. package/external/folly/folly/Uri.cpp +190 -0
  216. package/external/folly/folly/Uri.h +142 -0
  217. package/external/folly/folly/Utility.h +932 -0
  218. package/external/folly/folly/VERSION +1 -0
  219. package/external/folly/folly/Varint.h +230 -0
  220. package/external/folly/folly/VirtualExecutor.h +17 -0
  221. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  222. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  223. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  224. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  225. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  226. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  227. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  228. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  229. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  230. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  231. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  232. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  233. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  234. package/external/folly/folly/base64.h +264 -0
  235. package/external/folly/folly/chrono/BUCK +29 -0
  236. package/external/folly/folly/chrono/Clock.h +65 -0
  237. package/external/folly/folly/chrono/Conv.h +712 -0
  238. package/external/folly/folly/chrono/test/BUCK +26 -0
  239. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  240. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  241. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  242. package/external/folly/folly/concurrency/BUCK +170 -0
  243. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  244. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  245. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  246. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  247. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  248. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  249. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  250. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  251. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  252. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  253. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  254. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  255. package/external/folly/folly/concurrency/container/BUCK +77 -0
  256. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  257. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  258. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  259. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  260. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  261. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  262. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  263. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  264. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  265. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  266. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  267. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  268. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  269. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  270. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  271. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  272. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  273. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  274. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  275. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  276. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  277. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  278. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  279. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  280. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  281. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  282. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  283. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  284. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  285. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  286. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  287. package/external/folly/folly/concurrency/test/BUCK +229 -0
  288. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  289. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  290. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  291. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  292. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  293. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  294. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  295. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  296. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  297. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  298. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  299. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  300. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  301. package/external/folly/folly/container/Access.h +57 -0
  302. package/external/folly/folly/container/Array.h +87 -0
  303. package/external/folly/folly/container/BUCK +353 -0
  304. package/external/folly/folly/container/BitIterator.h +203 -0
  305. package/external/folly/folly/container/Enumerate.h +162 -0
  306. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  307. package/external/folly/folly/container/F14.md +300 -0
  308. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  309. package/external/folly/folly/container/F14Map.h +2108 -0
  310. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  311. package/external/folly/folly/container/F14Set.h +1603 -0
  312. package/external/folly/folly/container/FBVector.h +1711 -0
  313. package/external/folly/folly/container/Foreach-inl.h +316 -0
  314. package/external/folly/folly/container/Foreach.h +209 -0
  315. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  316. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  317. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  318. package/external/folly/folly/container/IntrusiveList.h +131 -0
  319. package/external/folly/folly/container/Iterator.h +843 -0
  320. package/external/folly/folly/container/MapUtil.h +376 -0
  321. package/external/folly/folly/container/Merge.h +90 -0
  322. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  323. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  324. package/external/folly/folly/container/Reserve.h +109 -0
  325. package/external/folly/folly/container/SparseByteSet.h +123 -0
  326. package/external/folly/folly/container/View.h +81 -0
  327. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  328. package/external/folly/folly/container/detail/BUCK +115 -0
  329. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  330. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  331. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  332. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  333. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  334. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  335. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  336. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  337. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  338. package/external/folly/folly/container/detail/Util.h +303 -0
  339. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  340. package/external/folly/folly/container/detail/test/BUCK +14 -0
  341. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  342. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  343. package/external/folly/folly/container/range_traits.h +81 -0
  344. package/external/folly/folly/container/small_vector.h +1476 -0
  345. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  346. package/external/folly/folly/container/span.h +408 -0
  347. package/external/folly/folly/container/tape.h +608 -0
  348. package/external/folly/folly/container/test/.clang-tidy +12 -0
  349. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  350. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  351. package/external/folly/folly/container/test/BUCK +568 -0
  352. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  353. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  354. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  355. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  356. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  357. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  358. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  359. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  360. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  361. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  362. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  363. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  364. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  365. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  366. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  367. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  368. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  369. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  370. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  371. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  372. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  373. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  374. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  375. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  376. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  377. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  378. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  379. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  380. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  381. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  382. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  383. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  384. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  385. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  386. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  387. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  388. package/external/folly/folly/container/test/span_test.cpp +520 -0
  389. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  390. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  391. package/external/folly/folly/defs.bzl +238 -0
  392. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  393. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  394. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  395. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  396. package/external/folly/folly/detail/BUCK +406 -0
  397. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  398. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  399. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  400. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  401. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  402. package/external/folly/folly/detail/Futex-inl.h +123 -0
  403. package/external/folly/folly/detail/Futex.cpp +273 -0
  404. package/external/folly/folly/detail/Futex.h +109 -0
  405. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  406. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  407. package/external/folly/folly/detail/IPAddress.h +57 -0
  408. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  409. package/external/folly/folly/detail/Iterators.h +156 -0
  410. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  411. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  412. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  413. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  414. package/external/folly/folly/detail/PerfScoped.h +70 -0
  415. package/external/folly/folly/detail/PolyDetail.h +921 -0
  416. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  417. package/external/folly/folly/detail/RangeCommon.h +93 -0
  418. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  419. package/external/folly/folly/detail/RangeSse42.h +30 -0
  420. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  421. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  422. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  423. package/external/folly/folly/detail/Singleton.h +34 -0
  424. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  425. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  426. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  427. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  428. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  429. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  430. package/external/folly/folly/detail/Sse.cpp +35 -0
  431. package/external/folly/folly/detail/Sse.h +45 -0
  432. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  433. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  434. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  435. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  436. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  437. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  438. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  439. package/external/folly/folly/detail/TypeList.h +551 -0
  440. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  441. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  442. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  443. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  444. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  445. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  446. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  447. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  448. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  449. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  450. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  451. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  452. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  453. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  454. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  455. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  456. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  457. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  458. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  459. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  460. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  461. package/external/folly/folly/detail/test/BUCK +118 -0
  462. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  463. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  464. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  465. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  466. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  467. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  468. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  469. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  470. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  471. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  472. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  473. package/external/folly/folly/docs/AtomicHashMap.md +134 -0
  474. package/external/folly/folly/docs/Benchmark.md +310 -0
  475. package/external/folly/folly/docs/Conv.md +291 -0
  476. package/external/folly/folly/docs/Dynamic.md +220 -0
  477. package/external/folly/folly/docs/DynamicConverter.md +71 -0
  478. package/external/folly/folly/docs/Executors.md +63 -0
  479. package/external/folly/folly/docs/FBString.md +46 -0
  480. package/external/folly/folly/docs/FBVector.md +200 -0
  481. package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
  482. package/external/folly/folly/docs/Format.md +177 -0
  483. package/external/folly/folly/docs/Function.md +92 -0
  484. package/external/folly/folly/docs/Futures.md +263 -0
  485. package/external/folly/folly/docs/GroupVarint.md +46 -0
  486. package/external/folly/folly/docs/Histogram.md +104 -0
  487. package/external/folly/folly/docs/MapUtils.md +80 -0
  488. package/external/folly/folly/docs/Overview.md +263 -0
  489. package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
  490. package/external/folly/folly/docs/Poly.md +500 -0
  491. package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
  492. package/external/folly/folly/docs/Rcu.md +218 -0
  493. package/external/folly/folly/docs/SmallLocks.md +24 -0
  494. package/external/folly/folly/docs/Synchronized.md +793 -0
  495. package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
  496. package/external/folly/folly/docs/ThreadLocal.md +105 -0
  497. package/external/folly/folly/docs/Traits.md +161 -0
  498. package/external/folly/folly/docs/small_vector.md +64 -0
  499. package/external/folly/folly/docs/style.css +23 -0
  500. package/external/folly/folly/dynamic-inl.h +17 -0
  501. package/external/folly/folly/dynamic.h +17 -0
  502. package/external/folly/folly/folly_extended_library.bzl +28 -0
  503. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  504. package/external/folly/folly/functional/BUCK +57 -0
  505. package/external/folly/folly/functional/Invoke.h +880 -0
  506. package/external/folly/folly/functional/Partial.h +130 -0
  507. package/external/folly/folly/functional/protocol.h +203 -0
  508. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  509. package/external/folly/folly/functional/test/BUCK +57 -0
  510. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  511. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  512. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  513. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  514. package/external/folly/folly/functional/traits.h +675 -0
  515. package/external/folly/folly/hash/BUCK +86 -0
  516. package/external/folly/folly/hash/Checksum.cpp +275 -0
  517. package/external/folly/folly/hash/Checksum.h +94 -0
  518. package/external/folly/folly/hash/FarmHash.h +46 -0
  519. package/external/folly/folly/hash/Hash.h +1045 -0
  520. package/external/folly/folly/hash/MurmurHash.h +86 -0
  521. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  522. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  523. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  524. package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
  525. package/external/folly/folly/hash/detail/BUCK +26 -0
  526. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  527. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  528. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  529. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  530. package/external/folly/folly/hash/test/BUCK +132 -0
  531. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  532. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  533. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  534. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  535. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  536. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  537. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  538. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  539. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  540. package/external/folly/folly/hash/traits.h +115 -0
  541. package/external/folly/folly/json/BUCK +155 -0
  542. package/external/folly/folly/json/DynamicConverter.h +464 -0
  543. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  544. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  545. package/external/folly/folly/json/DynamicParser.h +394 -0
  546. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  547. package/external/folly/folly/json/JSONSchema.h +73 -0
  548. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  549. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  550. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  551. package/external/folly/folly/json/bser/BUCK +24 -0
  552. package/external/folly/folly/json/bser/Bser.h +107 -0
  553. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  554. package/external/folly/folly/json/bser/Load.cpp +246 -0
  555. package/external/folly/folly/json/bser/test/BUCK +14 -0
  556. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  557. package/external/folly/folly/json/dynamic.cpp +552 -0
  558. package/external/folly/folly/json/dynamic.h +1346 -0
  559. package/external/folly/folly/json/json.h +238 -0
  560. package/external/folly/folly/json/json_patch.cpp +325 -0
  561. package/external/folly/folly/json/json_patch.h +126 -0
  562. package/external/folly/folly/json/json_pointer.cpp +114 -0
  563. package/external/folly/folly/json/json_pointer.h +87 -0
  564. package/external/folly/folly/json/test/BUCK +147 -0
  565. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  566. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  567. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  568. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  569. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  570. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  571. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  572. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  573. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  574. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  575. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  576. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  577. package/external/folly/folly/json/tool/BUCK +13 -0
  578. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  579. package/external/folly/folly/json.h +17 -0
  580. package/external/folly/folly/json_patch.h +17 -0
  581. package/external/folly/folly/json_pointer.h +17 -0
  582. package/external/folly/folly/lang/Access.h +29 -0
  583. package/external/folly/folly/lang/Align.h +240 -0
  584. package/external/folly/folly/lang/Aligned.h +92 -0
  585. package/external/folly/folly/lang/Assume.h +82 -0
  586. package/external/folly/folly/lang/BUCK +287 -0
  587. package/external/folly/folly/lang/Badge.h +108 -0
  588. package/external/folly/folly/lang/Bits.h +570 -0
  589. package/external/folly/folly/lang/BitsClass.h +312 -0
  590. package/external/folly/folly/lang/Builtin.h +74 -0
  591. package/external/folly/folly/lang/CArray.h +34 -0
  592. package/external/folly/folly/lang/CString.cpp +86 -0
  593. package/external/folly/folly/lang/CString.h +55 -0
  594. package/external/folly/folly/lang/Cast.h +51 -0
  595. package/external/folly/folly/lang/CheckedMath.h +253 -0
  596. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  597. package/external/folly/folly/lang/Exception.cpp +822 -0
  598. package/external/folly/folly/lang/Exception.h +716 -0
  599. package/external/folly/folly/lang/Extern.h +55 -0
  600. package/external/folly/folly/lang/Hint-inl.h +144 -0
  601. package/external/folly/folly/lang/Hint.h +238 -0
  602. package/external/folly/folly/lang/Keep.h +98 -0
  603. package/external/folly/folly/lang/New.h +124 -0
  604. package/external/folly/folly/lang/Ordering.h +140 -0
  605. package/external/folly/folly/lang/Pretty.h +159 -0
  606. package/external/folly/folly/lang/PropagateConst.h +413 -0
  607. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  608. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  609. package/external/folly/folly/lang/StaticConst.h +33 -0
  610. package/external/folly/folly/lang/Thunk.h +100 -0
  611. package/external/folly/folly/lang/TypeInfo.h +58 -0
  612. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  613. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  614. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  615. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  616. package/external/folly/folly/lang/test/BUCK +258 -0
  617. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  618. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  619. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  620. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  621. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  622. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  623. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  624. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  625. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  626. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  627. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  628. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  629. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  630. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  631. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  632. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  633. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  634. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  635. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  636. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  637. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  638. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  639. package/external/folly/folly/memcpy.S +292 -0
  640. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  641. package/external/folly/folly/memory/Arena-inl.h +83 -0
  642. package/external/folly/folly/memory/Arena.h +325 -0
  643. package/external/folly/folly/memory/BUCK +191 -0
  644. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  645. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  646. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  647. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  648. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  649. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  650. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  651. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  652. package/external/folly/folly/memory/Malloc.h +551 -0
  653. package/external/folly/folly/memory/MemoryResource.h +57 -0
  654. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  655. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  656. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  657. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  658. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  659. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  660. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  661. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  662. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  663. package/external/folly/folly/memory/detail/BUCK +10 -0
  664. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  665. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  666. package/external/folly/folly/memory/not_null-inl.h +522 -0
  667. package/external/folly/folly/memory/not_null.h +449 -0
  668. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  669. package/external/folly/folly/memory/test/BUCK +146 -0
  670. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  671. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  672. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  673. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  674. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  675. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  676. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  677. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  678. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  679. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  680. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  681. package/external/folly/folly/memset.S +245 -0
  682. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  683. package/external/folly/folly/portability/Asm.h +50 -0
  684. package/external/folly/folly/portability/Atomic.h +31 -0
  685. package/external/folly/folly/portability/BUCK +456 -0
  686. package/external/folly/folly/portability/Builtins.cpp +31 -0
  687. package/external/folly/folly/portability/Builtins.h +161 -0
  688. package/external/folly/folly/portability/Config.h +43 -0
  689. package/external/folly/folly/portability/Constexpr.h +145 -0
  690. package/external/folly/folly/portability/Dirent.cpp +140 -0
  691. package/external/folly/folly/portability/Dirent.h +41 -0
  692. package/external/folly/folly/portability/Event.h +44 -0
  693. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  694. package/external/folly/folly/portability/Fcntl.h +67 -0
  695. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  696. package/external/folly/folly/portability/Filesystem.h +114 -0
  697. package/external/folly/folly/portability/FmtCompile.h +40 -0
  698. package/external/folly/folly/portability/GFlags.h +139 -0
  699. package/external/folly/folly/portability/GMock.h +35 -0
  700. package/external/folly/folly/portability/GTest.h +35 -0
  701. package/external/folly/folly/portability/IOVec.h +34 -0
  702. package/external/folly/folly/portability/Libgen.cpp +59 -0
  703. package/external/folly/folly/portability/Libgen.h +29 -0
  704. package/external/folly/folly/portability/Libunwind.h +21 -0
  705. package/external/folly/folly/portability/Malloc.cpp +31 -0
  706. package/external/folly/folly/portability/Malloc.h +53 -0
  707. package/external/folly/folly/portability/Math.h +90 -0
  708. package/external/folly/folly/portability/Memory.h +26 -0
  709. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  710. package/external/folly/folly/portability/OpenSSL.h +102 -0
  711. package/external/folly/folly/portability/PThread.cpp +697 -0
  712. package/external/folly/folly/portability/PThread.h +148 -0
  713. package/external/folly/folly/portability/README.md +21 -0
  714. package/external/folly/folly/portability/Sched.cpp +41 -0
  715. package/external/folly/folly/portability/Sched.h +45 -0
  716. package/external/folly/folly/portability/Sockets.cpp +245 -0
  717. package/external/folly/folly/portability/Sockets.h +155 -0
  718. package/external/folly/folly/portability/SourceLocation.h +49 -0
  719. package/external/folly/folly/portability/Stdio.cpp +77 -0
  720. package/external/folly/folly/portability/Stdio.h +32 -0
  721. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  722. package/external/folly/folly/portability/Stdlib.h +64 -0
  723. package/external/folly/folly/portability/String.cpp +53 -0
  724. package/external/folly/folly/portability/String.h +39 -0
  725. package/external/folly/folly/portability/SysFile.cpp +46 -0
  726. package/external/folly/folly/portability/SysFile.h +27 -0
  727. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  728. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  729. package/external/folly/folly/portability/SysMman.cpp +242 -0
  730. package/external/folly/folly/portability/SysMman.h +68 -0
  731. package/external/folly/folly/portability/SysResource.cpp +108 -0
  732. package/external/folly/folly/portability/SysResource.h +71 -0
  733. package/external/folly/folly/portability/SysStat.cpp +66 -0
  734. package/external/folly/folly/portability/SysStat.h +52 -0
  735. package/external/folly/folly/portability/SysSyscall.h +73 -0
  736. package/external/folly/folly/portability/SysTime.cpp +62 -0
  737. package/external/folly/folly/portability/SysTime.h +50 -0
  738. package/external/folly/folly/portability/SysTypes.h +44 -0
  739. package/external/folly/folly/portability/SysUio.cpp +179 -0
  740. package/external/folly/folly/portability/SysUio.h +51 -0
  741. package/external/folly/folly/portability/Syslog.h +39 -0
  742. package/external/folly/folly/portability/Time.cpp +357 -0
  743. package/external/folly/folly/portability/Time.h +74 -0
  744. package/external/folly/folly/portability/Unistd.h +111 -0
  745. package/external/folly/folly/portability/Windows.h +108 -0
  746. package/external/folly/folly/portability/openat2.c +30 -0
  747. package/external/folly/folly/portability/openat2.h +39 -0
  748. package/external/folly/folly/portability/test/BUCK +59 -0
  749. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  750. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  751. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  752. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  753. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  754. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  755. package/external/folly/folly/small_vector.h +17 -0
  756. package/external/folly/folly/somerge_defs.bzl +399 -0
  757. package/external/folly/folly/sorted_vector_types.h +17 -0
  758. package/external/folly/folly/stop_watch.h +317 -0
  759. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  760. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  761. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  762. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  763. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  764. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  765. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  766. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  767. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  768. package/external/folly/folly/synchronization/BUCK +418 -0
  769. package/external/folly/folly/synchronization/Baton.h +419 -0
  770. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  771. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  772. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  773. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  774. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  775. package/external/folly/folly/synchronization/EventCount.h +200 -0
  776. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  777. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  778. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  779. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  780. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  781. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  782. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  783. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  784. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  785. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  786. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  787. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  788. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  789. package/external/folly/folly/synchronization/Latch.h +160 -0
  790. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  791. package/external/folly/folly/synchronization/Lock.h +887 -0
  792. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  793. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  794. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  795. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  796. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  797. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  798. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  799. package/external/folly/folly/synchronization/Rcu.h +553 -0
  800. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  801. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  802. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  803. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  804. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  805. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  806. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  807. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  808. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  809. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  810. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  811. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  812. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  813. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  814. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  815. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  816. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  817. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  818. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  819. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  820. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  821. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  822. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  823. package/external/folly/folly/synchronization/example/BUCK +27 -0
  824. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  825. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  826. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  827. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  828. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  829. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  830. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  831. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  832. package/external/folly/folly/synchronization/test/BUCK +495 -0
  833. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  834. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  835. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  836. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  837. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  838. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  839. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  840. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  841. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  842. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  843. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  844. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  845. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  846. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  847. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  848. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  849. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  850. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  851. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  852. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  853. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  854. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  855. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  856. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  857. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  858. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  859. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  860. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  861. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  862. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  863. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  864. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  865. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  866. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  867. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  868. package/external/folly/folly/system/AtFork.cpp +205 -0
  869. package/external/folly/folly/system/AtFork.h +116 -0
  870. package/external/folly/folly/system/AuxVector.h +198 -0
  871. package/external/folly/folly/system/BUCK +144 -0
  872. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  873. package/external/folly/folly/system/EnvUtil.h +113 -0
  874. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  875. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  876. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  877. package/external/folly/folly/system/MemoryMapping.h +287 -0
  878. package/external/folly/folly/system/Pid.cpp +87 -0
  879. package/external/folly/folly/system/Pid.h +34 -0
  880. package/external/folly/folly/system/Shell.cpp +33 -0
  881. package/external/folly/folly/system/Shell.h +93 -0
  882. package/external/folly/folly/system/ThreadId.cpp +89 -0
  883. package/external/folly/folly/system/ThreadId.h +62 -0
  884. package/external/folly/folly/system/ThreadName.cpp +330 -0
  885. package/external/folly/folly/system/ThreadName.h +72 -0
  886. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  887. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  888. package/external/folly/folly/system/test/BUCK +120 -0
  889. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  890. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  891. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  892. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  893. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  894. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  895. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  896. package/external/folly/folly.vcxitems +164 -0
  897. package/external/folly/static/logo.svg +1 -0
  898. package/external/folly/sync-config.json +8 -0
  899. package/package.json +3 -3
  900. package/template/cpp-app/proj/MyApp.sln +0 -33
  901. package/template/cpp-lib/proj/MyLib.sln +0 -33
  902. package/template/cs-app/proj/MyApp.sln +0 -33
  903. package/template/cs-lib/proj/MyLib.sln +0 -33
  904. package/templates/cpp-app/windows/MyApp.sln +0 -33
  905. package/templates/cpp-lib/example/metro.config.js +31 -6
  906. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  907. package/Folly/Folly.vcxproj +0 -383
  908. package/Folly/Folly.vcxproj.filters +0 -558
  909. package/Folly/Folly.win32.vcxproj +0 -11
  910. package/Folly/packages.lock.win32.json +0 -20
  911. package/Scripts/Warm-RnwFeedCache.ps1 +0 -413
  912. package/fmt/fmt.vcxproj +0 -163
  913. package/fmt/fmt.vcxproj.filters +0 -59
  914. package/fmt/fmt.win32.vcxproj +0 -10
  915. package/fmt/pch.cpp +0 -4
  916. package/fmt/pch.h +0 -2
  917. /package/{Folly → external/folly}/Folly.natvis +0 -0
  918. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  919. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  920. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  921. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  922. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  923. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  924. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  925. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  926. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  927. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  928. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,1240 @@
1
+ #ifndef FASTFLOAT_FLOAT_COMMON_H
2
+ #define FASTFLOAT_FLOAT_COMMON_H
3
+
4
+ #include <cfloat>
5
+ #include <cstdint>
6
+ #include <cassert>
7
+ #include <cstring>
8
+ #include <limits>
9
+ #include <type_traits>
10
+ #include <system_error>
11
+ #ifdef __has_include
12
+ #if __has_include(<stdfloat>) && (__cplusplus > 202002L || _MSVC_LANG > 202002L)
13
+ #include <stdfloat>
14
+ #endif
15
+ #endif
16
+ #include "constexpr_feature_detect.h"
17
+
18
+ #define FASTFLOAT_VERSION_MAJOR 8
19
+ #define FASTFLOAT_VERSION_MINOR 0
20
+ #define FASTFLOAT_VERSION_PATCH 0
21
+
22
+ #define FASTFLOAT_STRINGIZE_IMPL(x) #x
23
+ #define FASTFLOAT_STRINGIZE(x) FASTFLOAT_STRINGIZE_IMPL(x)
24
+
25
+ #define FASTFLOAT_VERSION_STR \
26
+ FASTFLOAT_STRINGIZE(FASTFLOAT_VERSION_MAJOR) \
27
+ "." FASTFLOAT_STRINGIZE(FASTFLOAT_VERSION_MINOR) "." FASTFLOAT_STRINGIZE( \
28
+ FASTFLOAT_VERSION_PATCH)
29
+
30
+ #define FASTFLOAT_VERSION \
31
+ (FASTFLOAT_VERSION_MAJOR * 10000 + FASTFLOAT_VERSION_MINOR * 100 + \
32
+ FASTFLOAT_VERSION_PATCH)
33
+
34
+ namespace fast_float {
35
+
36
+ enum class chars_format : uint64_t;
37
+
38
+ namespace detail {
39
+ constexpr chars_format basic_json_fmt = chars_format(1 << 5);
40
+ constexpr chars_format basic_fortran_fmt = chars_format(1 << 6);
41
+ } // namespace detail
42
+
43
+ enum class chars_format : uint64_t {
44
+ scientific = 1 << 0,
45
+ fixed = 1 << 2,
46
+ hex = 1 << 3,
47
+ no_infnan = 1 << 4,
48
+ // RFC 8259: https://datatracker.ietf.org/doc/html/rfc8259#section-6
49
+ json = uint64_t(detail::basic_json_fmt) | fixed | scientific | no_infnan,
50
+ // Extension of RFC 8259 where, e.g., "inf" and "nan" are allowed.
51
+ json_or_infnan = uint64_t(detail::basic_json_fmt) | fixed | scientific,
52
+ fortran = uint64_t(detail::basic_fortran_fmt) | fixed | scientific,
53
+ general = fixed | scientific,
54
+ allow_leading_plus = 1 << 7,
55
+ skip_white_space = 1 << 8,
56
+ };
57
+
58
+ template <typename UC> struct from_chars_result_t {
59
+ UC const *ptr;
60
+ std::errc ec;
61
+ };
62
+
63
+ using from_chars_result = from_chars_result_t<char>;
64
+
65
+ template <typename UC> struct parse_options_t {
66
+ constexpr explicit parse_options_t(chars_format fmt = chars_format::general,
67
+ UC dot = UC('.'), int b = 10)
68
+ : format(fmt), decimal_point(dot), base(b) {}
69
+
70
+ /** Which number formats are accepted */
71
+ chars_format format;
72
+ /** The character used as decimal point */
73
+ UC decimal_point;
74
+ /** The base used for integers */
75
+ int base;
76
+ };
77
+
78
+ using parse_options = parse_options_t<char>;
79
+
80
+ } // namespace fast_float
81
+
82
+ #if FASTFLOAT_HAS_BIT_CAST
83
+ #include <bit>
84
+ #endif
85
+
86
+ #if (defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
87
+ defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) || \
88
+ defined(__MINGW64__) || defined(__s390x__) || \
89
+ (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \
90
+ defined(__PPC64LE__)) || \
91
+ defined(__loongarch64))
92
+ #define FASTFLOAT_64BIT 1
93
+ #elif (defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
94
+ defined(__arm__) || defined(_M_ARM) || defined(__ppc__) || \
95
+ defined(__MINGW32__) || defined(__EMSCRIPTEN__))
96
+ #define FASTFLOAT_32BIT 1
97
+ #else
98
+ // Need to check incrementally, since SIZE_MAX is a size_t, avoid overflow.
99
+ // We can never tell the register width, but the SIZE_MAX is a good
100
+ // approximation. UINTPTR_MAX and INTPTR_MAX are optional, so avoid them for max
101
+ // portability.
102
+ #if SIZE_MAX == 0xffff
103
+ #error Unknown platform (16-bit, unsupported)
104
+ #elif SIZE_MAX == 0xffffffff
105
+ #define FASTFLOAT_32BIT 1
106
+ #elif SIZE_MAX == 0xffffffffffffffff
107
+ #define FASTFLOAT_64BIT 1
108
+ #else
109
+ #error Unknown platform (not 32-bit, not 64-bit?)
110
+ #endif
111
+ #endif
112
+
113
+ #if ((defined(_WIN32) || defined(_WIN64)) && !defined(__clang__)) || \
114
+ (defined(_M_ARM64) && !defined(__MINGW32__))
115
+ #include <intrin.h>
116
+ #endif
117
+
118
+ #if defined(_MSC_VER) && !defined(__clang__)
119
+ #define FASTFLOAT_VISUAL_STUDIO 1
120
+ #endif
121
+
122
+ #if defined __BYTE_ORDER__ && defined __ORDER_BIG_ENDIAN__
123
+ #define FASTFLOAT_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
124
+ #elif defined _WIN32
125
+ #define FASTFLOAT_IS_BIG_ENDIAN 0
126
+ #else
127
+ #if defined(__APPLE__) || defined(__FreeBSD__)
128
+ #include <machine/endian.h>
129
+ #elif defined(sun) || defined(__sun)
130
+ #include <sys/byteorder.h>
131
+ #elif defined(__MVS__)
132
+ #include <sys/endian.h>
133
+ #else
134
+ #ifdef __has_include
135
+ #if __has_include(<endian.h>)
136
+ #include <endian.h>
137
+ #endif //__has_include(<endian.h>)
138
+ #endif //__has_include
139
+ #endif
140
+ #
141
+ #ifndef __BYTE_ORDER__
142
+ // safe choice
143
+ #define FASTFLOAT_IS_BIG_ENDIAN 0
144
+ #endif
145
+ #
146
+ #ifndef __ORDER_LITTLE_ENDIAN__
147
+ // safe choice
148
+ #define FASTFLOAT_IS_BIG_ENDIAN 0
149
+ #endif
150
+ #
151
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
152
+ #define FASTFLOAT_IS_BIG_ENDIAN 0
153
+ #else
154
+ #define FASTFLOAT_IS_BIG_ENDIAN 1
155
+ #endif
156
+ #endif
157
+
158
+ #if defined(__SSE2__) || (defined(FASTFLOAT_VISUAL_STUDIO) && \
159
+ (defined(_M_AMD64) || defined(_M_X64) || \
160
+ (defined(_M_IX86_FP) && _M_IX86_FP == 2)))
161
+ #define FASTFLOAT_SSE2 1
162
+ #endif
163
+
164
+ #if defined(__aarch64__) || defined(_M_ARM64)
165
+ #define FASTFLOAT_NEON 1
166
+ #endif
167
+
168
+ #if defined(FASTFLOAT_SSE2) || defined(FASTFLOAT_NEON)
169
+ #define FASTFLOAT_HAS_SIMD 1
170
+ #endif
171
+
172
+ #if defined(__GNUC__)
173
+ // disable -Wcast-align=strict (GCC only)
174
+ #define FASTFLOAT_SIMD_DISABLE_WARNINGS \
175
+ _Pragma("GCC diagnostic push") \
176
+ _Pragma("GCC diagnostic ignored \"-Wcast-align\"")
177
+ #else
178
+ #define FASTFLOAT_SIMD_DISABLE_WARNINGS
179
+ #endif
180
+
181
+ #if defined(__GNUC__)
182
+ #define FASTFLOAT_SIMD_RESTORE_WARNINGS _Pragma("GCC diagnostic pop")
183
+ #else
184
+ #define FASTFLOAT_SIMD_RESTORE_WARNINGS
185
+ #endif
186
+
187
+ #ifdef FASTFLOAT_VISUAL_STUDIO
188
+ #define fastfloat_really_inline __forceinline
189
+ #else
190
+ #define fastfloat_really_inline inline __attribute__((always_inline))
191
+ #endif
192
+
193
+ #ifndef FASTFLOAT_ASSERT
194
+ #define FASTFLOAT_ASSERT(x) \
195
+ { ((void)(x)); }
196
+ #endif
197
+
198
+ #ifndef FASTFLOAT_DEBUG_ASSERT
199
+ #define FASTFLOAT_DEBUG_ASSERT(x) \
200
+ { ((void)(x)); }
201
+ #endif
202
+
203
+ // rust style `try!()` macro, or `?` operator
204
+ #define FASTFLOAT_TRY(x) \
205
+ { \
206
+ if (!(x)) \
207
+ return false; \
208
+ }
209
+
210
+ #define FASTFLOAT_ENABLE_IF(...) \
211
+ typename std::enable_if<(__VA_ARGS__), int>::type
212
+
213
+ namespace fast_float {
214
+
215
+ fastfloat_really_inline constexpr bool cpp20_and_in_constexpr() {
216
+ #if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED
217
+ return std::is_constant_evaluated();
218
+ #else
219
+ return false;
220
+ #endif
221
+ }
222
+
223
+ template <typename T>
224
+ struct is_supported_float_type
225
+ : std::integral_constant<
226
+ bool, std::is_same<T, double>::value || std::is_same<T, float>::value
227
+ #ifdef __STDCPP_FLOAT64_T__
228
+ || std::is_same<T, std::float64_t>::value
229
+ #endif
230
+ #ifdef __STDCPP_FLOAT32_T__
231
+ || std::is_same<T, std::float32_t>::value
232
+ #endif
233
+ #ifdef __STDCPP_FLOAT16_T__
234
+ || std::is_same<T, std::float16_t>::value
235
+ #endif
236
+ #ifdef __STDCPP_BFLOAT16_T__
237
+ || std::is_same<T, std::bfloat16_t>::value
238
+ #endif
239
+ > {
240
+ };
241
+
242
+ template <typename T>
243
+ using equiv_uint_t = typename std::conditional<
244
+ sizeof(T) == 1, uint8_t,
245
+ typename std::conditional<
246
+ sizeof(T) == 2, uint16_t,
247
+ typename std::conditional<sizeof(T) == 4, uint32_t,
248
+ uint64_t>::type>::type>::type;
249
+
250
+ template <typename T> struct is_supported_integer_type : std::is_integral<T> {};
251
+
252
+ template <typename UC>
253
+ struct is_supported_char_type
254
+ : std::integral_constant<bool, std::is_same<UC, char>::value ||
255
+ std::is_same<UC, wchar_t>::value ||
256
+ std::is_same<UC, char16_t>::value ||
257
+ std::is_same<UC, char32_t>::value
258
+ #ifdef __cpp_char8_t
259
+ || std::is_same<UC, char8_t>::value
260
+ #endif
261
+ > {
262
+ };
263
+
264
+ // Compares two ASCII strings in a case insensitive manner.
265
+ template <typename UC>
266
+ inline FASTFLOAT_CONSTEXPR14 bool
267
+ fastfloat_strncasecmp(UC const *actual_mixedcase, UC const *expected_lowercase,
268
+ size_t length) {
269
+ for (size_t i = 0; i < length; ++i) {
270
+ UC const actual = actual_mixedcase[i];
271
+ if ((actual < 256 ? actual | 32 : actual) != expected_lowercase[i]) {
272
+ return false;
273
+ }
274
+ }
275
+ return true;
276
+ }
277
+
278
+ #ifndef FLT_EVAL_METHOD
279
+ #error "FLT_EVAL_METHOD should be defined, please include cfloat."
280
+ #endif
281
+
282
+ // a pointer and a length to a contiguous block of memory
283
+ template <typename T> struct span {
284
+ T const *ptr;
285
+ size_t length;
286
+
287
+ constexpr span(T const *_ptr, size_t _length) : ptr(_ptr), length(_length) {}
288
+
289
+ constexpr span() : ptr(nullptr), length(0) {}
290
+
291
+ constexpr size_t len() const noexcept { return length; }
292
+
293
+ FASTFLOAT_CONSTEXPR14 const T &operator[](size_t index) const noexcept {
294
+ FASTFLOAT_DEBUG_ASSERT(index < length);
295
+ return ptr[index];
296
+ }
297
+ };
298
+
299
+ struct value128 {
300
+ uint64_t low;
301
+ uint64_t high;
302
+
303
+ constexpr value128(uint64_t _low, uint64_t _high) : low(_low), high(_high) {}
304
+
305
+ constexpr value128() : low(0), high(0) {}
306
+ };
307
+
308
+ /* Helper C++14 constexpr generic implementation of leading_zeroes */
309
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 int
310
+ leading_zeroes_generic(uint64_t input_num, int last_bit = 0) {
311
+ if (input_num & uint64_t(0xffffffff00000000)) {
312
+ input_num >>= 32;
313
+ last_bit |= 32;
314
+ }
315
+ if (input_num & uint64_t(0xffff0000)) {
316
+ input_num >>= 16;
317
+ last_bit |= 16;
318
+ }
319
+ if (input_num & uint64_t(0xff00)) {
320
+ input_num >>= 8;
321
+ last_bit |= 8;
322
+ }
323
+ if (input_num & uint64_t(0xf0)) {
324
+ input_num >>= 4;
325
+ last_bit |= 4;
326
+ }
327
+ if (input_num & uint64_t(0xc)) {
328
+ input_num >>= 2;
329
+ last_bit |= 2;
330
+ }
331
+ if (input_num & uint64_t(0x2)) { /* input_num >>= 1; */
332
+ last_bit |= 1;
333
+ }
334
+ return 63 - last_bit;
335
+ }
336
+
337
+ /* result might be undefined when input_num is zero */
338
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR20 int
339
+ leading_zeroes(uint64_t input_num) {
340
+ assert(input_num > 0);
341
+ if (cpp20_and_in_constexpr()) {
342
+ return leading_zeroes_generic(input_num);
343
+ }
344
+ #ifdef FASTFLOAT_VISUAL_STUDIO
345
+ #if defined(_M_X64) || defined(_M_ARM64)
346
+ unsigned long leading_zero = 0;
347
+ // Search the mask data from most significant bit (MSB)
348
+ // to least significant bit (LSB) for a set bit (1).
349
+ _BitScanReverse64(&leading_zero, input_num);
350
+ return (int)(63 - leading_zero);
351
+ #else
352
+ return leading_zeroes_generic(input_num);
353
+ #endif
354
+ #else
355
+ return __builtin_clzll(input_num);
356
+ #endif
357
+ }
358
+
359
+ // slow emulation routine for 32-bit
360
+ fastfloat_really_inline constexpr uint64_t emulu(uint32_t x, uint32_t y) {
361
+ return x * (uint64_t)y;
362
+ }
363
+
364
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 uint64_t
365
+ umul128_generic(uint64_t ab, uint64_t cd, uint64_t *hi) {
366
+ uint64_t ad = emulu((uint32_t)(ab >> 32), (uint32_t)cd);
367
+ uint64_t bd = emulu((uint32_t)ab, (uint32_t)cd);
368
+ uint64_t adbc = ad + emulu((uint32_t)ab, (uint32_t)(cd >> 32));
369
+ uint64_t adbc_carry = (uint64_t)(adbc < ad);
370
+ uint64_t lo = bd + (adbc << 32);
371
+ *hi = emulu((uint32_t)(ab >> 32), (uint32_t)(cd >> 32)) + (adbc >> 32) +
372
+ (adbc_carry << 32) + (uint64_t)(lo < bd);
373
+ return lo;
374
+ }
375
+
376
+ #ifdef FASTFLOAT_32BIT
377
+
378
+ // slow emulation routine for 32-bit
379
+ #if !defined(__MINGW64__)
380
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 uint64_t _umul128(uint64_t ab,
381
+ uint64_t cd,
382
+ uint64_t *hi) {
383
+ return umul128_generic(ab, cd, hi);
384
+ }
385
+ #endif // !__MINGW64__
386
+
387
+ #endif // FASTFLOAT_32BIT
388
+
389
+ // compute 64-bit a*b
390
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR20 value128
391
+ full_multiplication(uint64_t a, uint64_t b) {
392
+ if (cpp20_and_in_constexpr()) {
393
+ value128 answer;
394
+ answer.low = umul128_generic(a, b, &answer.high);
395
+ return answer;
396
+ }
397
+ value128 answer;
398
+ #if defined(_M_ARM64) && !defined(__MINGW32__)
399
+ // ARM64 has native support for 64-bit multiplications, no need to emulate
400
+ // But MinGW on ARM64 doesn't have native support for 64-bit multiplications
401
+ answer.high = __umulh(a, b);
402
+ answer.low = a * b;
403
+ #elif defined(FASTFLOAT_32BIT) || \
404
+ (defined(_WIN64) && !defined(__clang__) && !defined(_M_ARM64))
405
+ answer.low = _umul128(a, b, &answer.high); // _umul128 not available on ARM64
406
+ #elif defined(FASTFLOAT_64BIT) && defined(__SIZEOF_INT128__)
407
+ __uint128_t r = ((__uint128_t)a) * b;
408
+ answer.low = uint64_t(r);
409
+ answer.high = uint64_t(r >> 64);
410
+ #else
411
+ answer.low = umul128_generic(a, b, &answer.high);
412
+ #endif
413
+ return answer;
414
+ }
415
+
416
+ struct adjusted_mantissa {
417
+ uint64_t mantissa{0};
418
+ int32_t power2{0}; // a negative value indicates an invalid result
419
+ adjusted_mantissa() = default;
420
+
421
+ constexpr bool operator==(adjusted_mantissa const &o) const {
422
+ return mantissa == o.mantissa && power2 == o.power2;
423
+ }
424
+
425
+ constexpr bool operator!=(adjusted_mantissa const &o) const {
426
+ return mantissa != o.mantissa || power2 != o.power2;
427
+ }
428
+ };
429
+
430
+ // Bias so we can get the real exponent with an invalid adjusted_mantissa.
431
+ constexpr static int32_t invalid_am_bias = -0x8000;
432
+
433
+ // used for binary_format_lookup_tables<T>::max_mantissa
434
+ constexpr uint64_t constant_55555 = 5 * 5 * 5 * 5 * 5;
435
+
436
+ template <typename T, typename U = void> struct binary_format_lookup_tables;
437
+
438
+ template <typename T> struct binary_format : binary_format_lookup_tables<T> {
439
+ using equiv_uint = equiv_uint_t<T>;
440
+
441
+ static constexpr int mantissa_explicit_bits();
442
+ static constexpr int minimum_exponent();
443
+ static constexpr int infinite_power();
444
+ static constexpr int sign_index();
445
+ static constexpr int
446
+ min_exponent_fast_path(); // used when fegetround() == FE_TONEAREST
447
+ static constexpr int max_exponent_fast_path();
448
+ static constexpr int max_exponent_round_to_even();
449
+ static constexpr int min_exponent_round_to_even();
450
+ static constexpr uint64_t max_mantissa_fast_path(int64_t power);
451
+ static constexpr uint64_t
452
+ max_mantissa_fast_path(); // used when fegetround() == FE_TONEAREST
453
+ static constexpr int largest_power_of_ten();
454
+ static constexpr int smallest_power_of_ten();
455
+ static constexpr T exact_power_of_ten(int64_t power);
456
+ static constexpr size_t max_digits();
457
+ static constexpr equiv_uint exponent_mask();
458
+ static constexpr equiv_uint mantissa_mask();
459
+ static constexpr equiv_uint hidden_bit_mask();
460
+ };
461
+
462
+ template <typename U> struct binary_format_lookup_tables<double, U> {
463
+ static constexpr double powers_of_ten[] = {
464
+ 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11,
465
+ 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22};
466
+
467
+ // Largest integer value v so that (5**index * v) <= 1<<53.
468
+ // 0x20000000000000 == 1 << 53
469
+ static constexpr uint64_t max_mantissa[] = {
470
+ 0x20000000000000,
471
+ 0x20000000000000 / 5,
472
+ 0x20000000000000 / (5 * 5),
473
+ 0x20000000000000 / (5 * 5 * 5),
474
+ 0x20000000000000 / (5 * 5 * 5 * 5),
475
+ 0x20000000000000 / (constant_55555),
476
+ 0x20000000000000 / (constant_55555 * 5),
477
+ 0x20000000000000 / (constant_55555 * 5 * 5),
478
+ 0x20000000000000 / (constant_55555 * 5 * 5 * 5),
479
+ 0x20000000000000 / (constant_55555 * 5 * 5 * 5 * 5),
480
+ 0x20000000000000 / (constant_55555 * constant_55555),
481
+ 0x20000000000000 / (constant_55555 * constant_55555 * 5),
482
+ 0x20000000000000 / (constant_55555 * constant_55555 * 5 * 5),
483
+ 0x20000000000000 / (constant_55555 * constant_55555 * 5 * 5 * 5),
484
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555),
485
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555 * 5),
486
+ 0x20000000000000 /
487
+ (constant_55555 * constant_55555 * constant_55555 * 5 * 5),
488
+ 0x20000000000000 /
489
+ (constant_55555 * constant_55555 * constant_55555 * 5 * 5 * 5),
490
+ 0x20000000000000 /
491
+ (constant_55555 * constant_55555 * constant_55555 * 5 * 5 * 5 * 5),
492
+ 0x20000000000000 /
493
+ (constant_55555 * constant_55555 * constant_55555 * constant_55555),
494
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555 *
495
+ constant_55555 * 5),
496
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555 *
497
+ constant_55555 * 5 * 5),
498
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555 *
499
+ constant_55555 * 5 * 5 * 5),
500
+ 0x20000000000000 / (constant_55555 * constant_55555 * constant_55555 *
501
+ constant_55555 * 5 * 5 * 5 * 5)};
502
+ };
503
+
504
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
505
+
506
+ template <typename U>
507
+ constexpr double binary_format_lookup_tables<double, U>::powers_of_ten[];
508
+
509
+ template <typename U>
510
+ constexpr uint64_t binary_format_lookup_tables<double, U>::max_mantissa[];
511
+
512
+ #endif
513
+
514
+ template <typename U> struct binary_format_lookup_tables<float, U> {
515
+ static constexpr float powers_of_ten[] = {1e0f, 1e1f, 1e2f, 1e3f, 1e4f, 1e5f,
516
+ 1e6f, 1e7f, 1e8f, 1e9f, 1e10f};
517
+
518
+ // Largest integer value v so that (5**index * v) <= 1<<24.
519
+ // 0x1000000 == 1<<24
520
+ static constexpr uint64_t max_mantissa[] = {
521
+ 0x1000000,
522
+ 0x1000000 / 5,
523
+ 0x1000000 / (5 * 5),
524
+ 0x1000000 / (5 * 5 * 5),
525
+ 0x1000000 / (5 * 5 * 5 * 5),
526
+ 0x1000000 / (constant_55555),
527
+ 0x1000000 / (constant_55555 * 5),
528
+ 0x1000000 / (constant_55555 * 5 * 5),
529
+ 0x1000000 / (constant_55555 * 5 * 5 * 5),
530
+ 0x1000000 / (constant_55555 * 5 * 5 * 5 * 5),
531
+ 0x1000000 / (constant_55555 * constant_55555),
532
+ 0x1000000 / (constant_55555 * constant_55555 * 5)};
533
+ };
534
+
535
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
536
+
537
+ template <typename U>
538
+ constexpr float binary_format_lookup_tables<float, U>::powers_of_ten[];
539
+
540
+ template <typename U>
541
+ constexpr uint64_t binary_format_lookup_tables<float, U>::max_mantissa[];
542
+
543
+ #endif
544
+
545
+ template <>
546
+ inline constexpr int binary_format<double>::min_exponent_fast_path() {
547
+ #if (FLT_EVAL_METHOD != 1) && (FLT_EVAL_METHOD != 0)
548
+ return 0;
549
+ #else
550
+ return -22;
551
+ #endif
552
+ }
553
+
554
+ template <>
555
+ inline constexpr int binary_format<float>::min_exponent_fast_path() {
556
+ #if (FLT_EVAL_METHOD != 1) && (FLT_EVAL_METHOD != 0)
557
+ return 0;
558
+ #else
559
+ return -10;
560
+ #endif
561
+ }
562
+
563
+ template <>
564
+ inline constexpr int binary_format<double>::mantissa_explicit_bits() {
565
+ return 52;
566
+ }
567
+
568
+ template <>
569
+ inline constexpr int binary_format<float>::mantissa_explicit_bits() {
570
+ return 23;
571
+ }
572
+
573
+ template <>
574
+ inline constexpr int binary_format<double>::max_exponent_round_to_even() {
575
+ return 23;
576
+ }
577
+
578
+ template <>
579
+ inline constexpr int binary_format<float>::max_exponent_round_to_even() {
580
+ return 10;
581
+ }
582
+
583
+ template <>
584
+ inline constexpr int binary_format<double>::min_exponent_round_to_even() {
585
+ return -4;
586
+ }
587
+
588
+ template <>
589
+ inline constexpr int binary_format<float>::min_exponent_round_to_even() {
590
+ return -17;
591
+ }
592
+
593
+ template <> inline constexpr int binary_format<double>::minimum_exponent() {
594
+ return -1023;
595
+ }
596
+
597
+ template <> inline constexpr int binary_format<float>::minimum_exponent() {
598
+ return -127;
599
+ }
600
+
601
+ template <> inline constexpr int binary_format<double>::infinite_power() {
602
+ return 0x7FF;
603
+ }
604
+
605
+ template <> inline constexpr int binary_format<float>::infinite_power() {
606
+ return 0xFF;
607
+ }
608
+
609
+ template <> inline constexpr int binary_format<double>::sign_index() {
610
+ return 63;
611
+ }
612
+
613
+ template <> inline constexpr int binary_format<float>::sign_index() {
614
+ return 31;
615
+ }
616
+
617
+ template <>
618
+ inline constexpr int binary_format<double>::max_exponent_fast_path() {
619
+ return 22;
620
+ }
621
+
622
+ template <>
623
+ inline constexpr int binary_format<float>::max_exponent_fast_path() {
624
+ return 10;
625
+ }
626
+
627
+ template <>
628
+ inline constexpr uint64_t binary_format<double>::max_mantissa_fast_path() {
629
+ return uint64_t(2) << mantissa_explicit_bits();
630
+ }
631
+
632
+ template <>
633
+ inline constexpr uint64_t binary_format<float>::max_mantissa_fast_path() {
634
+ return uint64_t(2) << mantissa_explicit_bits();
635
+ }
636
+
637
+ // credit: Jakub Jelínek
638
+ #ifdef __STDCPP_FLOAT16_T__
639
+ template <typename U> struct binary_format_lookup_tables<std::float16_t, U> {
640
+ static constexpr std::float16_t powers_of_ten[] = {1e0f16, 1e1f16, 1e2f16,
641
+ 1e3f16, 1e4f16};
642
+
643
+ // Largest integer value v so that (5**index * v) <= 1<<11.
644
+ // 0x800 == 1<<11
645
+ static constexpr uint64_t max_mantissa[] = {0x800,
646
+ 0x800 / 5,
647
+ 0x800 / (5 * 5),
648
+ 0x800 / (5 * 5 * 5),
649
+ 0x800 / (5 * 5 * 5 * 5),
650
+ 0x800 / (constant_55555)};
651
+ };
652
+
653
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
654
+
655
+ template <typename U>
656
+ constexpr std::float16_t
657
+ binary_format_lookup_tables<std::float16_t, U>::powers_of_ten[];
658
+
659
+ template <typename U>
660
+ constexpr uint64_t
661
+ binary_format_lookup_tables<std::float16_t, U>::max_mantissa[];
662
+
663
+ #endif
664
+
665
+ template <>
666
+ inline constexpr std::float16_t
667
+ binary_format<std::float16_t>::exact_power_of_ten(int64_t power) {
668
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
669
+ return (void)powers_of_ten[0], powers_of_ten[power];
670
+ }
671
+
672
+ template <>
673
+ inline constexpr binary_format<std::float16_t>::equiv_uint
674
+ binary_format<std::float16_t>::exponent_mask() {
675
+ return 0x7C00;
676
+ }
677
+
678
+ template <>
679
+ inline constexpr binary_format<std::float16_t>::equiv_uint
680
+ binary_format<std::float16_t>::mantissa_mask() {
681
+ return 0x03FF;
682
+ }
683
+
684
+ template <>
685
+ inline constexpr binary_format<std::float16_t>::equiv_uint
686
+ binary_format<std::float16_t>::hidden_bit_mask() {
687
+ return 0x0400;
688
+ }
689
+
690
+ template <>
691
+ inline constexpr int binary_format<std::float16_t>::max_exponent_fast_path() {
692
+ return 4;
693
+ }
694
+
695
+ template <>
696
+ inline constexpr int binary_format<std::float16_t>::mantissa_explicit_bits() {
697
+ return 10;
698
+ }
699
+
700
+ template <>
701
+ inline constexpr uint64_t
702
+ binary_format<std::float16_t>::max_mantissa_fast_path() {
703
+ return uint64_t(2) << mantissa_explicit_bits();
704
+ }
705
+
706
+ template <>
707
+ inline constexpr uint64_t
708
+ binary_format<std::float16_t>::max_mantissa_fast_path(int64_t power) {
709
+ // caller is responsible to ensure that
710
+ // power >= 0 && power <= 4
711
+ //
712
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
713
+ return (void)max_mantissa[0], max_mantissa[power];
714
+ }
715
+
716
+ template <>
717
+ inline constexpr int binary_format<std::float16_t>::min_exponent_fast_path() {
718
+ return 0;
719
+ }
720
+
721
+ template <>
722
+ inline constexpr int
723
+ binary_format<std::float16_t>::max_exponent_round_to_even() {
724
+ return 5;
725
+ }
726
+
727
+ template <>
728
+ inline constexpr int
729
+ binary_format<std::float16_t>::min_exponent_round_to_even() {
730
+ return -22;
731
+ }
732
+
733
+ template <>
734
+ inline constexpr int binary_format<std::float16_t>::minimum_exponent() {
735
+ return -15;
736
+ }
737
+
738
+ template <>
739
+ inline constexpr int binary_format<std::float16_t>::infinite_power() {
740
+ return 0x1F;
741
+ }
742
+
743
+ template <> inline constexpr int binary_format<std::float16_t>::sign_index() {
744
+ return 15;
745
+ }
746
+
747
+ template <>
748
+ inline constexpr int binary_format<std::float16_t>::largest_power_of_ten() {
749
+ return 4;
750
+ }
751
+
752
+ template <>
753
+ inline constexpr int binary_format<std::float16_t>::smallest_power_of_ten() {
754
+ return -27;
755
+ }
756
+
757
+ template <>
758
+ inline constexpr size_t binary_format<std::float16_t>::max_digits() {
759
+ return 22;
760
+ }
761
+ #endif // __STDCPP_FLOAT16_T__
762
+
763
+ // credit: Jakub Jelínek
764
+ #ifdef __STDCPP_BFLOAT16_T__
765
+ template <typename U> struct binary_format_lookup_tables<std::bfloat16_t, U> {
766
+ static constexpr std::bfloat16_t powers_of_ten[] = {1e0bf16, 1e1bf16, 1e2bf16,
767
+ 1e3bf16};
768
+
769
+ // Largest integer value v so that (5**index * v) <= 1<<8.
770
+ // 0x100 == 1<<8
771
+ static constexpr uint64_t max_mantissa[] = {0x100, 0x100 / 5, 0x100 / (5 * 5),
772
+ 0x100 / (5 * 5 * 5),
773
+ 0x100 / (5 * 5 * 5 * 5)};
774
+ };
775
+
776
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
777
+
778
+ template <typename U>
779
+ constexpr std::bfloat16_t
780
+ binary_format_lookup_tables<std::bfloat16_t, U>::powers_of_ten[];
781
+
782
+ template <typename U>
783
+ constexpr uint64_t
784
+ binary_format_lookup_tables<std::bfloat16_t, U>::max_mantissa[];
785
+
786
+ #endif
787
+
788
+ template <>
789
+ inline constexpr std::bfloat16_t
790
+ binary_format<std::bfloat16_t>::exact_power_of_ten(int64_t power) {
791
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
792
+ return (void)powers_of_ten[0], powers_of_ten[power];
793
+ }
794
+
795
+ template <>
796
+ inline constexpr int binary_format<std::bfloat16_t>::max_exponent_fast_path() {
797
+ return 3;
798
+ }
799
+
800
+ template <>
801
+ inline constexpr binary_format<std::bfloat16_t>::equiv_uint
802
+ binary_format<std::bfloat16_t>::exponent_mask() {
803
+ return 0x7F80;
804
+ }
805
+
806
+ template <>
807
+ inline constexpr binary_format<std::bfloat16_t>::equiv_uint
808
+ binary_format<std::bfloat16_t>::mantissa_mask() {
809
+ return 0x007F;
810
+ }
811
+
812
+ template <>
813
+ inline constexpr binary_format<std::bfloat16_t>::equiv_uint
814
+ binary_format<std::bfloat16_t>::hidden_bit_mask() {
815
+ return 0x0080;
816
+ }
817
+
818
+ template <>
819
+ inline constexpr int binary_format<std::bfloat16_t>::mantissa_explicit_bits() {
820
+ return 7;
821
+ }
822
+
823
+ template <>
824
+ inline constexpr uint64_t
825
+ binary_format<std::bfloat16_t>::max_mantissa_fast_path() {
826
+ return uint64_t(2) << mantissa_explicit_bits();
827
+ }
828
+
829
+ template <>
830
+ inline constexpr uint64_t
831
+ binary_format<std::bfloat16_t>::max_mantissa_fast_path(int64_t power) {
832
+ // caller is responsible to ensure that
833
+ // power >= 0 && power <= 3
834
+ //
835
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
836
+ return (void)max_mantissa[0], max_mantissa[power];
837
+ }
838
+
839
+ template <>
840
+ inline constexpr int binary_format<std::bfloat16_t>::min_exponent_fast_path() {
841
+ return 0;
842
+ }
843
+
844
+ template <>
845
+ inline constexpr int
846
+ binary_format<std::bfloat16_t>::max_exponent_round_to_even() {
847
+ return 3;
848
+ }
849
+
850
+ template <>
851
+ inline constexpr int
852
+ binary_format<std::bfloat16_t>::min_exponent_round_to_even() {
853
+ return -24;
854
+ }
855
+
856
+ template <>
857
+ inline constexpr int binary_format<std::bfloat16_t>::minimum_exponent() {
858
+ return -127;
859
+ }
860
+
861
+ template <>
862
+ inline constexpr int binary_format<std::bfloat16_t>::infinite_power() {
863
+ return 0xFF;
864
+ }
865
+
866
+ template <> inline constexpr int binary_format<std::bfloat16_t>::sign_index() {
867
+ return 15;
868
+ }
869
+
870
+ template <>
871
+ inline constexpr int binary_format<std::bfloat16_t>::largest_power_of_ten() {
872
+ return 38;
873
+ }
874
+
875
+ template <>
876
+ inline constexpr int binary_format<std::bfloat16_t>::smallest_power_of_ten() {
877
+ return -60;
878
+ }
879
+
880
+ template <>
881
+ inline constexpr size_t binary_format<std::bfloat16_t>::max_digits() {
882
+ return 98;
883
+ }
884
+ #endif // __STDCPP_BFLOAT16_T__
885
+
886
+ template <>
887
+ inline constexpr uint64_t
888
+ binary_format<double>::max_mantissa_fast_path(int64_t power) {
889
+ // caller is responsible to ensure that
890
+ // power >= 0 && power <= 22
891
+ //
892
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
893
+ return (void)max_mantissa[0], max_mantissa[power];
894
+ }
895
+
896
+ template <>
897
+ inline constexpr uint64_t
898
+ binary_format<float>::max_mantissa_fast_path(int64_t power) {
899
+ // caller is responsible to ensure that
900
+ // power >= 0 && power <= 10
901
+ //
902
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
903
+ return (void)max_mantissa[0], max_mantissa[power];
904
+ }
905
+
906
+ template <>
907
+ inline constexpr double
908
+ binary_format<double>::exact_power_of_ten(int64_t power) {
909
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
910
+ return (void)powers_of_ten[0], powers_of_ten[power];
911
+ }
912
+
913
+ template <>
914
+ inline constexpr float binary_format<float>::exact_power_of_ten(int64_t power) {
915
+ // Work around clang bug https://godbolt.org/z/zedh7rrhc
916
+ return (void)powers_of_ten[0], powers_of_ten[power];
917
+ }
918
+
919
+ template <> inline constexpr int binary_format<double>::largest_power_of_ten() {
920
+ return 308;
921
+ }
922
+
923
+ template <> inline constexpr int binary_format<float>::largest_power_of_ten() {
924
+ return 38;
925
+ }
926
+
927
+ template <>
928
+ inline constexpr int binary_format<double>::smallest_power_of_ten() {
929
+ return -342;
930
+ }
931
+
932
+ template <> inline constexpr int binary_format<float>::smallest_power_of_ten() {
933
+ return -64;
934
+ }
935
+
936
+ template <> inline constexpr size_t binary_format<double>::max_digits() {
937
+ return 769;
938
+ }
939
+
940
+ template <> inline constexpr size_t binary_format<float>::max_digits() {
941
+ return 114;
942
+ }
943
+
944
+ template <>
945
+ inline constexpr binary_format<float>::equiv_uint
946
+ binary_format<float>::exponent_mask() {
947
+ return 0x7F800000;
948
+ }
949
+
950
+ template <>
951
+ inline constexpr binary_format<double>::equiv_uint
952
+ binary_format<double>::exponent_mask() {
953
+ return 0x7FF0000000000000;
954
+ }
955
+
956
+ template <>
957
+ inline constexpr binary_format<float>::equiv_uint
958
+ binary_format<float>::mantissa_mask() {
959
+ return 0x007FFFFF;
960
+ }
961
+
962
+ template <>
963
+ inline constexpr binary_format<double>::equiv_uint
964
+ binary_format<double>::mantissa_mask() {
965
+ return 0x000FFFFFFFFFFFFF;
966
+ }
967
+
968
+ template <>
969
+ inline constexpr binary_format<float>::equiv_uint
970
+ binary_format<float>::hidden_bit_mask() {
971
+ return 0x00800000;
972
+ }
973
+
974
+ template <>
975
+ inline constexpr binary_format<double>::equiv_uint
976
+ binary_format<double>::hidden_bit_mask() {
977
+ return 0x0010000000000000;
978
+ }
979
+
980
+ template <typename T>
981
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR20 void
982
+ to_float(bool negative, adjusted_mantissa am, T &value) {
983
+ using equiv_uint = equiv_uint_t<T>;
984
+ equiv_uint word = equiv_uint(am.mantissa);
985
+ word = equiv_uint(word | equiv_uint(am.power2)
986
+ << binary_format<T>::mantissa_explicit_bits());
987
+ word =
988
+ equiv_uint(word | equiv_uint(negative) << binary_format<T>::sign_index());
989
+ #if FASTFLOAT_HAS_BIT_CAST
990
+ value = std::bit_cast<T>(word);
991
+ #else
992
+ ::memcpy(&value, &word, sizeof(T));
993
+ #endif
994
+ }
995
+
996
+ template <typename = void> struct space_lut {
997
+ static constexpr bool value[] = {
998
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1002
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1005
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1007
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1009
+ };
1010
+
1011
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
1012
+
1013
+ template <typename T> constexpr bool space_lut<T>::value[];
1014
+
1015
+ #endif
1016
+
1017
+ template <typename UC> constexpr bool is_space(UC c) {
1018
+ return c < 256 && space_lut<>::value[uint8_t(c)];
1019
+ }
1020
+
1021
+ template <typename UC> static constexpr uint64_t int_cmp_zeros() {
1022
+ static_assert((sizeof(UC) == 1) || (sizeof(UC) == 2) || (sizeof(UC) == 4),
1023
+ "Unsupported character size");
1024
+ return (sizeof(UC) == 1) ? 0x3030303030303030
1025
+ : (sizeof(UC) == 2)
1026
+ ? (uint64_t(UC('0')) << 48 | uint64_t(UC('0')) << 32 |
1027
+ uint64_t(UC('0')) << 16 | UC('0'))
1028
+ : (uint64_t(UC('0')) << 32 | UC('0'));
1029
+ }
1030
+
1031
+ template <typename UC> static constexpr int int_cmp_len() {
1032
+ return sizeof(uint64_t) / sizeof(UC);
1033
+ }
1034
+
1035
+ template <typename UC> constexpr UC const *str_const_nan();
1036
+
1037
+ template <> constexpr char const *str_const_nan<char>() { return "nan"; }
1038
+
1039
+ template <> constexpr wchar_t const *str_const_nan<wchar_t>() { return L"nan"; }
1040
+
1041
+ template <> constexpr char16_t const *str_const_nan<char16_t>() {
1042
+ return u"nan";
1043
+ }
1044
+
1045
+ template <> constexpr char32_t const *str_const_nan<char32_t>() {
1046
+ return U"nan";
1047
+ }
1048
+
1049
+ #ifdef __cpp_char8_t
1050
+ template <> constexpr char8_t const *str_const_nan<char8_t>() {
1051
+ return u8"nan";
1052
+ }
1053
+ #endif
1054
+
1055
+ template <typename UC> constexpr UC const *str_const_inf();
1056
+
1057
+ template <> constexpr char const *str_const_inf<char>() { return "infinity"; }
1058
+
1059
+ template <> constexpr wchar_t const *str_const_inf<wchar_t>() {
1060
+ return L"infinity";
1061
+ }
1062
+
1063
+ template <> constexpr char16_t const *str_const_inf<char16_t>() {
1064
+ return u"infinity";
1065
+ }
1066
+
1067
+ template <> constexpr char32_t const *str_const_inf<char32_t>() {
1068
+ return U"infinity";
1069
+ }
1070
+
1071
+ #ifdef __cpp_char8_t
1072
+ template <> constexpr char8_t const *str_const_inf<char8_t>() {
1073
+ return u8"infinity";
1074
+ }
1075
+ #endif
1076
+
1077
+ template <typename = void> struct int_luts {
1078
+ static constexpr uint8_t chdigit[] = {
1079
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1080
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1081
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1082
+ 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255,
1083
+ 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1084
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1085
+ 35, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17,
1086
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1087
+ 33, 34, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1088
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1089
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1090
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1091
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1092
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1093
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1094
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1095
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1096
+ 255};
1097
+
1098
+ static constexpr size_t maxdigits_u64[] = {
1099
+ 64, 41, 32, 28, 25, 23, 22, 21, 20, 19, 18, 18, 17, 17, 16, 16, 16, 16,
1100
+ 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13};
1101
+
1102
+ static constexpr uint64_t min_safe_u64[] = {
1103
+ 9223372036854775808ull, 12157665459056928801ull, 4611686018427387904,
1104
+ 7450580596923828125, 4738381338321616896, 3909821048582988049,
1105
+ 9223372036854775808ull, 12157665459056928801ull, 10000000000000000000ull,
1106
+ 5559917313492231481, 2218611106740436992, 8650415919381337933,
1107
+ 2177953337809371136, 6568408355712890625, 1152921504606846976,
1108
+ 2862423051509815793, 6746640616477458432, 15181127029874798299ull,
1109
+ 1638400000000000000, 3243919932521508681, 6221821273427820544,
1110
+ 11592836324538749809ull, 876488338465357824, 1490116119384765625,
1111
+ 2481152873203736576, 4052555153018976267, 6502111422497947648,
1112
+ 10260628712958602189ull, 15943230000000000000ull, 787662783788549761,
1113
+ 1152921504606846976, 1667889514952984961, 2386420683693101056,
1114
+ 3379220508056640625, 4738381338321616896};
1115
+ };
1116
+
1117
+ #if FASTFLOAT_DETAIL_MUST_DEFINE_CONSTEXPR_VARIABLE
1118
+
1119
+ template <typename T> constexpr uint8_t int_luts<T>::chdigit[];
1120
+
1121
+ template <typename T> constexpr size_t int_luts<T>::maxdigits_u64[];
1122
+
1123
+ template <typename T> constexpr uint64_t int_luts<T>::min_safe_u64[];
1124
+
1125
+ #endif
1126
+
1127
+ template <typename UC>
1128
+ fastfloat_really_inline constexpr uint8_t ch_to_digit(UC c) {
1129
+ return int_luts<>::chdigit[static_cast<unsigned char>(c)];
1130
+ }
1131
+
1132
+ fastfloat_really_inline constexpr size_t max_digits_u64(int base) {
1133
+ return int_luts<>::maxdigits_u64[base - 2];
1134
+ }
1135
+
1136
+ // If a u64 is exactly max_digits_u64() in length, this is
1137
+ // the value below which it has definitely overflowed.
1138
+ fastfloat_really_inline constexpr uint64_t min_safe_u64(int base) {
1139
+ return int_luts<>::min_safe_u64[base - 2];
1140
+ }
1141
+
1142
+ static_assert(std::is_same<equiv_uint_t<double>, uint64_t>::value,
1143
+ "equiv_uint should be uint64_t for double");
1144
+ static_assert(std::numeric_limits<double>::is_iec559,
1145
+ "double must fulfill the requirements of IEC 559 (IEEE 754)");
1146
+
1147
+ static_assert(std::is_same<equiv_uint_t<float>, uint32_t>::value,
1148
+ "equiv_uint should be uint32_t for float");
1149
+ static_assert(std::numeric_limits<float>::is_iec559,
1150
+ "float must fulfill the requirements of IEC 559 (IEEE 754)");
1151
+
1152
+ #ifdef __STDCPP_FLOAT64_T__
1153
+ static_assert(std::is_same<equiv_uint_t<std::float64_t>, uint64_t>::value,
1154
+ "equiv_uint should be uint64_t for std::float64_t");
1155
+ static_assert(
1156
+ std::numeric_limits<std::float64_t>::is_iec559,
1157
+ "std::float64_t must fulfill the requirements of IEC 559 (IEEE 754)");
1158
+ #endif // __STDCPP_FLOAT64_T__
1159
+
1160
+ #ifdef __STDCPP_FLOAT32_T__
1161
+ static_assert(std::is_same<equiv_uint_t<std::float32_t>, uint32_t>::value,
1162
+ "equiv_uint should be uint32_t for std::float32_t");
1163
+ static_assert(
1164
+ std::numeric_limits<std::float32_t>::is_iec559,
1165
+ "std::float32_t must fulfill the requirements of IEC 559 (IEEE 754)");
1166
+ #endif // __STDCPP_FLOAT32_T__
1167
+
1168
+ #ifdef __STDCPP_FLOAT16_T__
1169
+ static_assert(
1170
+ std::is_same<binary_format<std::float16_t>::equiv_uint, uint16_t>::value,
1171
+ "equiv_uint should be uint16_t for std::float16_t");
1172
+ static_assert(
1173
+ std::numeric_limits<std::float16_t>::is_iec559,
1174
+ "std::float16_t must fulfill the requirements of IEC 559 (IEEE 754)");
1175
+ #endif // __STDCPP_FLOAT16_T__
1176
+
1177
+ #ifdef __STDCPP_BFLOAT16_T__
1178
+ static_assert(
1179
+ std::is_same<binary_format<std::bfloat16_t>::equiv_uint, uint16_t>::value,
1180
+ "equiv_uint should be uint16_t for std::bfloat16_t");
1181
+ static_assert(
1182
+ std::numeric_limits<std::bfloat16_t>::is_iec559,
1183
+ "std::bfloat16_t must fulfill the requirements of IEC 559 (IEEE 754)");
1184
+ #endif // __STDCPP_BFLOAT16_T__
1185
+
1186
+ constexpr chars_format operator~(chars_format rhs) noexcept {
1187
+ using int_type = std::underlying_type<chars_format>::type;
1188
+ return static_cast<chars_format>(~static_cast<int_type>(rhs));
1189
+ }
1190
+
1191
+ constexpr chars_format operator&(chars_format lhs, chars_format rhs) noexcept {
1192
+ using int_type = std::underlying_type<chars_format>::type;
1193
+ return static_cast<chars_format>(static_cast<int_type>(lhs) &
1194
+ static_cast<int_type>(rhs));
1195
+ }
1196
+
1197
+ constexpr chars_format operator|(chars_format lhs, chars_format rhs) noexcept {
1198
+ using int_type = std::underlying_type<chars_format>::type;
1199
+ return static_cast<chars_format>(static_cast<int_type>(lhs) |
1200
+ static_cast<int_type>(rhs));
1201
+ }
1202
+
1203
+ constexpr chars_format operator^(chars_format lhs, chars_format rhs) noexcept {
1204
+ using int_type = std::underlying_type<chars_format>::type;
1205
+ return static_cast<chars_format>(static_cast<int_type>(lhs) ^
1206
+ static_cast<int_type>(rhs));
1207
+ }
1208
+
1209
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 chars_format &
1210
+ operator&=(chars_format &lhs, chars_format rhs) noexcept {
1211
+ return lhs = (lhs & rhs);
1212
+ }
1213
+
1214
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 chars_format &
1215
+ operator|=(chars_format &lhs, chars_format rhs) noexcept {
1216
+ return lhs = (lhs | rhs);
1217
+ }
1218
+
1219
+ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 chars_format &
1220
+ operator^=(chars_format &lhs, chars_format rhs) noexcept {
1221
+ return lhs = (lhs ^ rhs);
1222
+ }
1223
+
1224
+ namespace detail {
1225
+ // adjust for deprecated feature macros
1226
+ constexpr chars_format adjust_for_feature_macros(chars_format fmt) {
1227
+ return fmt
1228
+ #ifdef FASTFLOAT_ALLOWS_LEADING_PLUS
1229
+ | chars_format::allow_leading_plus
1230
+ #endif
1231
+ #ifdef FASTFLOAT_SKIP_WHITE_SPACE
1232
+ | chars_format::skip_white_space
1233
+ #endif
1234
+ ;
1235
+ }
1236
+ } // namespace detail
1237
+
1238
+ } // namespace fast_float
1239
+
1240
+ #endif