react-native-windows 0.81.34 → 0.81.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (882) 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/Microsoft.ReactNative.vcxproj +1 -7
  8. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
  9. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  10. package/PropertySheets/React.Cpp.props +3 -3
  11. package/ReactCommon/ReactCommon.vcxproj +0 -10
  12. package/ReactCommon/packages.lock.win32.json +0 -10
  13. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
  14. package/Shared/Shared.vcxitems +2 -0
  15. package/{Folly → external}/.clang-format +0 -1
  16. package/external/External.vcxitems +10 -0
  17. package/external/fast-float/.syncignore +11 -0
  18. package/external/fast-float/LICENSE-APACHE +190 -0
  19. package/external/fast-float/LICENSE-BOOST +23 -0
  20. package/external/fast-float/LICENSE-MIT +27 -0
  21. package/external/fast-float/cgmanifest.json +15 -0
  22. package/external/fast-float/fast-float.vcxitems +14 -0
  23. package/external/fast-float/include/fast_float/ascii_number.h +588 -0
  24. package/external/fast-float/include/fast_float/bigint.h +638 -0
  25. package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
  26. package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
  27. package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
  28. package/external/fast-float/include/fast_float/fast_float.h +59 -0
  29. package/external/fast-float/include/fast_float/fast_table.h +708 -0
  30. package/external/fast-float/include/fast_float/float_common.h +1240 -0
  31. package/external/fast-float/include/fast_float/parse_number.h +399 -0
  32. package/external/fast-float/sync-config.json +8 -0
  33. package/external/fmt/.syncignore +12 -0
  34. package/external/fmt/CONTRIBUTING.md +20 -0
  35. package/external/fmt/LICENSE +27 -0
  36. package/{fmt → external/fmt}/cgmanifest.json +1 -1
  37. package/external/fmt/fmt.vcxitems +28 -0
  38. package/external/fmt/include/fmt/args.h +228 -0
  39. package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
  40. package/external/fmt/include/fmt/chrono.h +2432 -0
  41. package/external/fmt/include/fmt/color.h +612 -0
  42. package/external/fmt/include/fmt/compile.h +529 -0
  43. package/external/fmt/include/fmt/core.h +5 -0
  44. package/external/fmt/include/fmt/format-inl.h +1928 -0
  45. package/external/fmt/include/fmt/format.h +4427 -0
  46. package/external/fmt/include/fmt/os.h +439 -0
  47. package/external/fmt/include/fmt/ostream.h +211 -0
  48. package/external/fmt/include/fmt/printf.h +656 -0
  49. package/external/fmt/include/fmt/ranges.h +882 -0
  50. package/external/fmt/include/fmt/std.h +699 -0
  51. package/external/fmt/include/fmt/xchar.h +322 -0
  52. package/external/fmt/src/fmt.cc +135 -0
  53. package/external/fmt/src/format.cc +43 -0
  54. package/external/fmt/src/os.cc +403 -0
  55. package/external/fmt/sync-config.json +8 -0
  56. package/external/folly/.syncignore +61 -0
  57. package/external/folly/LICENSE +200 -0
  58. package/{fmt → external/folly/folly}/.clang-format +0 -1
  59. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  60. package/external/folly/folly/AtomicHashArray.h +431 -0
  61. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  62. package/external/folly/folly/AtomicHashMap.h +484 -0
  63. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  64. package/external/folly/folly/AtomicLinkedList.h +110 -0
  65. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  66. package/external/folly/folly/BUCK +1631 -0
  67. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  68. package/external/folly/folly/Benchmark.cpp +986 -0
  69. package/external/folly/folly/Benchmark.h +680 -0
  70. package/external/folly/folly/BenchmarkUtil.h +47 -0
  71. package/external/folly/folly/Bits.h +17 -0
  72. package/external/folly/folly/CMakeLists.txt +110 -0
  73. package/external/folly/folly/CPortability.h +338 -0
  74. package/external/folly/folly/CancellationToken-inl.h +449 -0
  75. package/external/folly/folly/CancellationToken.cpp +250 -0
  76. package/external/folly/folly/CancellationToken.h +365 -0
  77. package/external/folly/folly/Chrono.h +132 -0
  78. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  79. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  80. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  81. package/external/folly/folly/ConcurrentLazy.h +74 -0
  82. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  83. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  84. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  85. package/external/folly/folly/Conv.h +2026 -0
  86. package/external/folly/folly/CppAttributes.h +170 -0
  87. package/external/folly/folly/CpuId.h +297 -0
  88. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  89. package/external/folly/folly/Demangle.cpp +255 -0
  90. package/external/folly/folly/Demangle.h +73 -0
  91. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  92. package/external/folly/folly/DynamicConverter.h +17 -0
  93. package/external/folly/folly/Exception.h +150 -0
  94. package/external/folly/folly/ExceptionString.cpp +51 -0
  95. package/external/folly/folly/ExceptionString.h +33 -0
  96. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  97. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  98. package/external/folly/folly/ExceptionWrapper.h +377 -0
  99. package/external/folly/folly/Executor.cpp +111 -0
  100. package/external/folly/folly/Executor.h +351 -0
  101. package/external/folly/folly/Expected.h +1725 -0
  102. package/external/folly/folly/FBString.h +2888 -0
  103. package/external/folly/folly/FBVector.h +17 -0
  104. package/external/folly/folly/File.cpp +180 -0
  105. package/external/folly/folly/File.h +177 -0
  106. package/external/folly/folly/FileUtil.cpp +378 -0
  107. package/external/folly/folly/FileUtil.h +332 -0
  108. package/external/folly/folly/Fingerprint.cpp +135 -0
  109. package/external/folly/folly/Fingerprint.h +289 -0
  110. package/external/folly/folly/FixedString.h +2965 -0
  111. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  112. package/external/folly/folly/FollyMemcpy.h +23 -0
  113. package/external/folly/folly/FollyMemset.cpp +29 -0
  114. package/external/folly/folly/FollyMemset.h +25 -0
  115. package/external/folly/folly/Format-inl.h +1152 -0
  116. package/external/folly/folly/Format.cpp +429 -0
  117. package/external/folly/folly/Format.h +463 -0
  118. package/external/folly/folly/FormatArg.h +285 -0
  119. package/external/folly/folly/FormatTraits.h +65 -0
  120. package/external/folly/folly/Function.h +1159 -0
  121. package/external/folly/folly/GLog.h +85 -0
  122. package/external/folly/folly/GroupVarint.cpp +153 -0
  123. package/external/folly/folly/GroupVarint.h +630 -0
  124. package/external/folly/folly/Hash.h +20 -0
  125. package/external/folly/folly/IPAddress.cpp +490 -0
  126. package/external/folly/folly/IPAddress.h +667 -0
  127. package/external/folly/folly/IPAddressException.h +82 -0
  128. package/external/folly/folly/IPAddressV4.cpp +305 -0
  129. package/external/folly/folly/IPAddressV4.h +495 -0
  130. package/external/folly/folly/IPAddressV6.cpp +541 -0
  131. package/external/folly/folly/IPAddressV6.h +627 -0
  132. package/external/folly/folly/Indestructible.h +164 -0
  133. package/external/folly/folly/IndexedMemPool.h +550 -0
  134. package/external/folly/folly/IntrusiveList.h +17 -0
  135. package/external/folly/folly/Lazy.h +142 -0
  136. package/external/folly/folly/Likely.h +76 -0
  137. package/external/folly/folly/MPMCPipeline.h +280 -0
  138. package/external/folly/folly/MPMCQueue.h +1556 -0
  139. package/external/folly/folly/MacAddress.cpp +188 -0
  140. package/external/folly/folly/MacAddress.h +260 -0
  141. package/external/folly/folly/MapUtil.h +17 -0
  142. package/external/folly/folly/Math.h +258 -0
  143. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  144. package/external/folly/folly/Memory.h +900 -0
  145. package/external/folly/folly/MicroLock.cpp +76 -0
  146. package/external/folly/folly/MicroLock.h +354 -0
  147. package/external/folly/folly/MicroSpinLock.h +17 -0
  148. package/external/folly/folly/MoveWrapper.h +76 -0
  149. package/external/folly/folly/ObserverContainer.h +1026 -0
  150. package/external/folly/folly/Optional.h +743 -0
  151. package/external/folly/folly/Overload.h +325 -0
  152. package/external/folly/folly/PackedSyncPtr.h +147 -0
  153. package/external/folly/folly/Padded.h +464 -0
  154. package/external/folly/folly/Poly-inl.h +230 -0
  155. package/external/folly/folly/Poly.h +1095 -0
  156. package/external/folly/folly/PolyException.h +43 -0
  157. package/external/folly/folly/Portability.h +644 -0
  158. package/external/folly/folly/Preprocessor.h +236 -0
  159. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  160. package/external/folly/folly/RWSpinLock.h +17 -0
  161. package/external/folly/folly/Random-inl.h +86 -0
  162. package/external/folly/folly/Random.cpp +184 -0
  163. package/external/folly/folly/Random.h +434 -0
  164. package/external/folly/folly/Range.h +1772 -0
  165. package/external/folly/folly/Replaceable.h +636 -0
  166. package/external/folly/folly/ScopeGuard.cpp +29 -0
  167. package/external/folly/folly/ScopeGuard.h +420 -0
  168. package/external/folly/folly/SharedMutex.cpp +81 -0
  169. package/external/folly/folly/SharedMutex.h +1751 -0
  170. package/external/folly/folly/Singleton-inl.h +332 -0
  171. package/external/folly/folly/Singleton.cpp +512 -0
  172. package/external/folly/folly/Singleton.h +891 -0
  173. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  174. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  175. package/external/folly/folly/SocketAddress.cpp +786 -0
  176. package/external/folly/folly/SocketAddress.h +768 -0
  177. package/external/folly/folly/SpinLock.h +55 -0
  178. package/external/folly/folly/String-inl.h +668 -0
  179. package/external/folly/folly/String.cpp +777 -0
  180. package/external/folly/folly/String.h +767 -0
  181. package/external/folly/folly/Subprocess.cpp +1142 -0
  182. package/external/folly/folly/Subprocess.h +1055 -0
  183. package/external/folly/folly/Synchronized.h +1833 -0
  184. package/external/folly/folly/SynchronizedPtr.h +106 -0
  185. package/external/folly/folly/ThreadCachedInt.h +175 -0
  186. package/external/folly/folly/ThreadLocal.h +478 -0
  187. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  188. package/external/folly/folly/TimeoutQueue.h +123 -0
  189. package/external/folly/folly/TokenBucket.h +673 -0
  190. package/external/folly/folly/Traits.h +1442 -0
  191. package/external/folly/folly/Try-inl.h +372 -0
  192. package/external/folly/folly/Try.cpp +23 -0
  193. package/external/folly/folly/Try.h +728 -0
  194. package/external/folly/folly/UTF8String.h +56 -0
  195. package/external/folly/folly/Unicode.cpp +201 -0
  196. package/external/folly/folly/Unicode.h +94 -0
  197. package/external/folly/folly/Unit.h +65 -0
  198. package/external/folly/folly/Uri-inl.h +101 -0
  199. package/external/folly/folly/Uri.cpp +190 -0
  200. package/external/folly/folly/Uri.h +142 -0
  201. package/external/folly/folly/Utility.h +932 -0
  202. package/external/folly/folly/VERSION +1 -0
  203. package/external/folly/folly/Varint.h +230 -0
  204. package/external/folly/folly/VirtualExecutor.h +17 -0
  205. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  206. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  207. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  208. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  209. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  210. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  211. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  212. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  213. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  214. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  215. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  216. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  217. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  218. package/external/folly/folly/base64.h +264 -0
  219. package/external/folly/folly/chrono/BUCK +29 -0
  220. package/external/folly/folly/chrono/Clock.h +65 -0
  221. package/external/folly/folly/chrono/Conv.h +712 -0
  222. package/external/folly/folly/chrono/test/BUCK +26 -0
  223. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  224. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  225. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  226. package/external/folly/folly/concurrency/BUCK +170 -0
  227. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  228. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  229. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  230. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  231. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  232. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  233. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  234. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  235. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  236. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  237. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  238. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  239. package/external/folly/folly/concurrency/container/BUCK +77 -0
  240. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  241. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  242. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  243. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  244. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  245. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  246. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  247. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  248. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  249. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  250. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  251. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  252. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  253. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  254. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  255. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  256. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  257. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  258. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  259. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  260. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  261. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  262. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  263. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  264. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  265. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  266. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  267. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  268. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  269. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  270. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  271. package/external/folly/folly/concurrency/test/BUCK +229 -0
  272. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  273. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  274. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  275. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  276. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  277. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  278. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  279. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  280. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  281. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  282. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  283. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  284. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  285. package/external/folly/folly/container/Access.h +57 -0
  286. package/external/folly/folly/container/Array.h +87 -0
  287. package/external/folly/folly/container/BUCK +353 -0
  288. package/external/folly/folly/container/BitIterator.h +203 -0
  289. package/external/folly/folly/container/Enumerate.h +162 -0
  290. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  291. package/external/folly/folly/container/F14.md +300 -0
  292. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  293. package/external/folly/folly/container/F14Map.h +2108 -0
  294. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  295. package/external/folly/folly/container/F14Set.h +1603 -0
  296. package/external/folly/folly/container/FBVector.h +1711 -0
  297. package/external/folly/folly/container/Foreach-inl.h +316 -0
  298. package/external/folly/folly/container/Foreach.h +209 -0
  299. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  300. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  301. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  302. package/external/folly/folly/container/IntrusiveList.h +131 -0
  303. package/external/folly/folly/container/Iterator.h +843 -0
  304. package/external/folly/folly/container/MapUtil.h +376 -0
  305. package/external/folly/folly/container/Merge.h +90 -0
  306. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  307. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  308. package/external/folly/folly/container/Reserve.h +109 -0
  309. package/external/folly/folly/container/SparseByteSet.h +123 -0
  310. package/external/folly/folly/container/View.h +81 -0
  311. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  312. package/external/folly/folly/container/detail/BUCK +115 -0
  313. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  314. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  315. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  316. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  317. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  318. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  319. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  320. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  321. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  322. package/external/folly/folly/container/detail/Util.h +303 -0
  323. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  324. package/external/folly/folly/container/detail/test/BUCK +14 -0
  325. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  326. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  327. package/external/folly/folly/container/range_traits.h +81 -0
  328. package/external/folly/folly/container/small_vector.h +1476 -0
  329. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  330. package/external/folly/folly/container/span.h +408 -0
  331. package/external/folly/folly/container/tape.h +608 -0
  332. package/external/folly/folly/container/test/.clang-tidy +12 -0
  333. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  334. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  335. package/external/folly/folly/container/test/BUCK +568 -0
  336. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  337. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  338. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  339. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  340. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  341. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  342. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  343. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  344. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  345. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  346. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  347. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  348. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  349. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  350. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  351. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  352. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  353. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  354. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  355. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  356. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  357. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  358. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  359. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  360. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  361. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  362. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  363. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  364. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  365. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  366. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  367. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  368. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  369. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  370. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  371. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  372. package/external/folly/folly/container/test/span_test.cpp +520 -0
  373. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  374. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  375. package/external/folly/folly/defs.bzl +238 -0
  376. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  377. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  378. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  379. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  380. package/external/folly/folly/detail/BUCK +406 -0
  381. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  382. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  383. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  384. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  385. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  386. package/external/folly/folly/detail/Futex-inl.h +123 -0
  387. package/external/folly/folly/detail/Futex.cpp +273 -0
  388. package/external/folly/folly/detail/Futex.h +109 -0
  389. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  390. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  391. package/external/folly/folly/detail/IPAddress.h +57 -0
  392. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  393. package/external/folly/folly/detail/Iterators.h +156 -0
  394. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  395. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  396. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  397. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  398. package/external/folly/folly/detail/PerfScoped.h +70 -0
  399. package/external/folly/folly/detail/PolyDetail.h +921 -0
  400. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  401. package/external/folly/folly/detail/RangeCommon.h +93 -0
  402. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  403. package/external/folly/folly/detail/RangeSse42.h +30 -0
  404. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  405. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  406. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  407. package/external/folly/folly/detail/Singleton.h +34 -0
  408. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  409. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  410. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  411. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  412. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  413. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  414. package/external/folly/folly/detail/Sse.cpp +35 -0
  415. package/external/folly/folly/detail/Sse.h +45 -0
  416. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  417. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  418. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  419. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  420. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  421. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  422. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  423. package/external/folly/folly/detail/TypeList.h +551 -0
  424. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  425. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  426. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  427. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  428. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  429. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  430. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  431. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  432. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  433. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  434. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  435. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  436. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  437. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  438. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  439. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  440. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  441. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  442. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  443. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  444. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  445. package/external/folly/folly/detail/test/BUCK +118 -0
  446. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  447. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  448. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  449. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  450. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  451. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  452. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  453. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  454. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  455. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  456. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  457. package/external/folly/folly/dynamic-inl.h +17 -0
  458. package/external/folly/folly/dynamic.h +17 -0
  459. package/external/folly/folly/folly_extended_library.bzl +28 -0
  460. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  461. package/external/folly/folly/functional/BUCK +57 -0
  462. package/external/folly/folly/functional/Invoke.h +880 -0
  463. package/external/folly/folly/functional/Partial.h +130 -0
  464. package/external/folly/folly/functional/protocol.h +203 -0
  465. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  466. package/external/folly/folly/functional/test/BUCK +57 -0
  467. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  468. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  469. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  470. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  471. package/external/folly/folly/functional/traits.h +675 -0
  472. package/external/folly/folly/hash/BUCK +86 -0
  473. package/external/folly/folly/hash/Checksum.cpp +275 -0
  474. package/external/folly/folly/hash/Checksum.h +94 -0
  475. package/external/folly/folly/hash/FarmHash.h +46 -0
  476. package/external/folly/folly/hash/Hash.h +1045 -0
  477. package/external/folly/folly/hash/MurmurHash.h +86 -0
  478. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  479. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  480. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  481. package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
  482. package/external/folly/folly/hash/detail/BUCK +26 -0
  483. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  484. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  485. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  486. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  487. package/external/folly/folly/hash/test/BUCK +132 -0
  488. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  489. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  490. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  491. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  492. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  493. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  494. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  495. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  496. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  497. package/external/folly/folly/hash/traits.h +115 -0
  498. package/external/folly/folly/json/BUCK +155 -0
  499. package/external/folly/folly/json/DynamicConverter.h +464 -0
  500. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  501. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  502. package/external/folly/folly/json/DynamicParser.h +394 -0
  503. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  504. package/external/folly/folly/json/JSONSchema.h +73 -0
  505. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  506. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  507. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  508. package/external/folly/folly/json/bser/BUCK +24 -0
  509. package/external/folly/folly/json/bser/Bser.h +107 -0
  510. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  511. package/external/folly/folly/json/bser/Load.cpp +246 -0
  512. package/external/folly/folly/json/bser/test/BUCK +14 -0
  513. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  514. package/external/folly/folly/json/dynamic.cpp +552 -0
  515. package/external/folly/folly/json/dynamic.h +1346 -0
  516. package/external/folly/folly/json/json.h +238 -0
  517. package/external/folly/folly/json/json_patch.cpp +325 -0
  518. package/external/folly/folly/json/json_patch.h +126 -0
  519. package/external/folly/folly/json/json_pointer.cpp +114 -0
  520. package/external/folly/folly/json/json_pointer.h +87 -0
  521. package/external/folly/folly/json/test/BUCK +147 -0
  522. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  523. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  524. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  525. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  526. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  527. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  528. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  529. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  530. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  531. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  532. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  533. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  534. package/external/folly/folly/json/tool/BUCK +13 -0
  535. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  536. package/external/folly/folly/json.h +17 -0
  537. package/external/folly/folly/json_patch.h +17 -0
  538. package/external/folly/folly/json_pointer.h +17 -0
  539. package/external/folly/folly/lang/Access.h +29 -0
  540. package/external/folly/folly/lang/Align.h +240 -0
  541. package/external/folly/folly/lang/Aligned.h +92 -0
  542. package/external/folly/folly/lang/Assume.h +82 -0
  543. package/external/folly/folly/lang/BUCK +287 -0
  544. package/external/folly/folly/lang/Badge.h +108 -0
  545. package/external/folly/folly/lang/Bits.h +570 -0
  546. package/external/folly/folly/lang/BitsClass.h +312 -0
  547. package/external/folly/folly/lang/Builtin.h +74 -0
  548. package/external/folly/folly/lang/CArray.h +34 -0
  549. package/external/folly/folly/lang/CString.cpp +86 -0
  550. package/external/folly/folly/lang/CString.h +55 -0
  551. package/external/folly/folly/lang/Cast.h +51 -0
  552. package/external/folly/folly/lang/CheckedMath.h +253 -0
  553. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  554. package/external/folly/folly/lang/Exception.cpp +822 -0
  555. package/external/folly/folly/lang/Exception.h +716 -0
  556. package/external/folly/folly/lang/Extern.h +55 -0
  557. package/external/folly/folly/lang/Hint-inl.h +144 -0
  558. package/external/folly/folly/lang/Hint.h +238 -0
  559. package/external/folly/folly/lang/Keep.h +98 -0
  560. package/external/folly/folly/lang/New.h +124 -0
  561. package/external/folly/folly/lang/Ordering.h +140 -0
  562. package/external/folly/folly/lang/Pretty.h +159 -0
  563. package/external/folly/folly/lang/PropagateConst.h +413 -0
  564. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  565. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  566. package/external/folly/folly/lang/StaticConst.h +33 -0
  567. package/external/folly/folly/lang/Thunk.h +100 -0
  568. package/external/folly/folly/lang/TypeInfo.h +58 -0
  569. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  570. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  571. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  572. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  573. package/external/folly/folly/lang/test/BUCK +258 -0
  574. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  575. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  576. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  577. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  578. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  579. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  580. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  581. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  582. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  583. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  584. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  585. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  586. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  587. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  588. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  589. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  590. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  591. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  592. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  593. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  594. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  595. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  596. package/external/folly/folly/memcpy.S +292 -0
  597. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  598. package/external/folly/folly/memory/Arena-inl.h +83 -0
  599. package/external/folly/folly/memory/Arena.h +325 -0
  600. package/external/folly/folly/memory/BUCK +191 -0
  601. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  602. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  603. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  604. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  605. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  606. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  607. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  608. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  609. package/external/folly/folly/memory/Malloc.h +551 -0
  610. package/external/folly/folly/memory/MemoryResource.h +57 -0
  611. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  612. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  613. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  614. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  615. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  616. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  617. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  618. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  619. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  620. package/external/folly/folly/memory/detail/BUCK +10 -0
  621. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  622. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  623. package/external/folly/folly/memory/not_null-inl.h +522 -0
  624. package/external/folly/folly/memory/not_null.h +449 -0
  625. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  626. package/external/folly/folly/memory/test/BUCK +146 -0
  627. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  628. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  629. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  630. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  631. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  632. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  633. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  634. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  635. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  636. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  637. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  638. package/external/folly/folly/memset.S +245 -0
  639. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  640. package/external/folly/folly/portability/Asm.h +50 -0
  641. package/external/folly/folly/portability/Atomic.h +31 -0
  642. package/external/folly/folly/portability/BUCK +456 -0
  643. package/external/folly/folly/portability/Builtins.cpp +31 -0
  644. package/external/folly/folly/portability/Builtins.h +161 -0
  645. package/external/folly/folly/portability/Config.h +43 -0
  646. package/external/folly/folly/portability/Constexpr.h +145 -0
  647. package/external/folly/folly/portability/Dirent.cpp +140 -0
  648. package/external/folly/folly/portability/Dirent.h +41 -0
  649. package/external/folly/folly/portability/Event.h +44 -0
  650. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  651. package/external/folly/folly/portability/Fcntl.h +67 -0
  652. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  653. package/external/folly/folly/portability/Filesystem.h +114 -0
  654. package/external/folly/folly/portability/FmtCompile.h +40 -0
  655. package/external/folly/folly/portability/GFlags.h +139 -0
  656. package/external/folly/folly/portability/GMock.h +35 -0
  657. package/external/folly/folly/portability/GTest.h +35 -0
  658. package/external/folly/folly/portability/IOVec.h +34 -0
  659. package/external/folly/folly/portability/Libgen.cpp +59 -0
  660. package/external/folly/folly/portability/Libgen.h +29 -0
  661. package/external/folly/folly/portability/Libunwind.h +21 -0
  662. package/external/folly/folly/portability/Malloc.cpp +31 -0
  663. package/external/folly/folly/portability/Malloc.h +53 -0
  664. package/external/folly/folly/portability/Math.h +90 -0
  665. package/external/folly/folly/portability/Memory.h +26 -0
  666. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  667. package/external/folly/folly/portability/OpenSSL.h +102 -0
  668. package/external/folly/folly/portability/PThread.cpp +697 -0
  669. package/external/folly/folly/portability/PThread.h +148 -0
  670. package/external/folly/folly/portability/README.md +21 -0
  671. package/external/folly/folly/portability/Sched.cpp +41 -0
  672. package/external/folly/folly/portability/Sched.h +45 -0
  673. package/external/folly/folly/portability/Sockets.cpp +245 -0
  674. package/external/folly/folly/portability/Sockets.h +155 -0
  675. package/external/folly/folly/portability/SourceLocation.h +49 -0
  676. package/external/folly/folly/portability/Stdio.cpp +77 -0
  677. package/external/folly/folly/portability/Stdio.h +32 -0
  678. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  679. package/external/folly/folly/portability/Stdlib.h +64 -0
  680. package/external/folly/folly/portability/String.cpp +53 -0
  681. package/external/folly/folly/portability/String.h +39 -0
  682. package/external/folly/folly/portability/SysFile.cpp +46 -0
  683. package/external/folly/folly/portability/SysFile.h +27 -0
  684. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  685. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  686. package/external/folly/folly/portability/SysMman.cpp +242 -0
  687. package/external/folly/folly/portability/SysMman.h +68 -0
  688. package/external/folly/folly/portability/SysResource.cpp +108 -0
  689. package/external/folly/folly/portability/SysResource.h +71 -0
  690. package/external/folly/folly/portability/SysStat.cpp +66 -0
  691. package/external/folly/folly/portability/SysStat.h +52 -0
  692. package/external/folly/folly/portability/SysSyscall.h +73 -0
  693. package/external/folly/folly/portability/SysTime.cpp +62 -0
  694. package/external/folly/folly/portability/SysTime.h +50 -0
  695. package/external/folly/folly/portability/SysTypes.h +44 -0
  696. package/external/folly/folly/portability/SysUio.cpp +179 -0
  697. package/external/folly/folly/portability/SysUio.h +51 -0
  698. package/external/folly/folly/portability/Syslog.h +39 -0
  699. package/external/folly/folly/portability/Time.cpp +357 -0
  700. package/external/folly/folly/portability/Time.h +74 -0
  701. package/external/folly/folly/portability/Unistd.h +111 -0
  702. package/external/folly/folly/portability/Windows.h +108 -0
  703. package/external/folly/folly/portability/openat2.c +30 -0
  704. package/external/folly/folly/portability/openat2.h +39 -0
  705. package/external/folly/folly/portability/test/BUCK +59 -0
  706. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  707. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  708. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  709. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  710. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  711. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  712. package/external/folly/folly/small_vector.h +17 -0
  713. package/external/folly/folly/somerge_defs.bzl +399 -0
  714. package/external/folly/folly/sorted_vector_types.h +17 -0
  715. package/external/folly/folly/stop_watch.h +317 -0
  716. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  717. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  718. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  719. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  720. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  721. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  722. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  723. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  724. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  725. package/external/folly/folly/synchronization/BUCK +418 -0
  726. package/external/folly/folly/synchronization/Baton.h +419 -0
  727. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  728. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  729. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  730. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  731. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  732. package/external/folly/folly/synchronization/EventCount.h +200 -0
  733. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  734. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  735. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  736. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  737. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  738. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  739. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  740. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  741. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  742. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  743. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  744. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  745. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  746. package/external/folly/folly/synchronization/Latch.h +160 -0
  747. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  748. package/external/folly/folly/synchronization/Lock.h +887 -0
  749. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  750. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  751. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  752. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  753. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  754. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  755. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  756. package/external/folly/folly/synchronization/Rcu.h +553 -0
  757. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  758. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  759. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  760. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  761. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  762. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  763. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  764. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  765. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  766. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  767. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  768. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  769. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  770. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  771. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  772. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  773. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  774. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  775. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  776. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  777. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  778. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  779. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  780. package/external/folly/folly/synchronization/example/BUCK +27 -0
  781. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  782. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  783. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  784. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  785. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  786. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  787. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  788. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  789. package/external/folly/folly/synchronization/test/BUCK +495 -0
  790. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  791. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  792. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  793. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  794. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  795. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  796. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  797. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  798. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  799. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  800. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  801. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  802. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  803. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  804. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  805. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  806. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  807. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  808. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  809. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  810. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  811. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  812. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  813. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  814. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  815. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  816. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  817. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  818. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  819. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  820. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  821. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  822. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  823. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  824. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  825. package/external/folly/folly/system/AtFork.cpp +205 -0
  826. package/external/folly/folly/system/AtFork.h +116 -0
  827. package/external/folly/folly/system/AuxVector.h +198 -0
  828. package/external/folly/folly/system/BUCK +144 -0
  829. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  830. package/external/folly/folly/system/EnvUtil.h +113 -0
  831. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  832. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  833. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  834. package/external/folly/folly/system/MemoryMapping.h +287 -0
  835. package/external/folly/folly/system/Pid.cpp +87 -0
  836. package/external/folly/folly/system/Pid.h +34 -0
  837. package/external/folly/folly/system/Shell.cpp +33 -0
  838. package/external/folly/folly/system/Shell.h +93 -0
  839. package/external/folly/folly/system/ThreadId.cpp +89 -0
  840. package/external/folly/folly/system/ThreadId.h +62 -0
  841. package/external/folly/folly/system/ThreadName.cpp +330 -0
  842. package/external/folly/folly/system/ThreadName.h +72 -0
  843. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  844. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  845. package/external/folly/folly/system/test/BUCK +120 -0
  846. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  847. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  848. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  849. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  850. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  851. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  852. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  853. package/external/folly/folly.vcxitems +164 -0
  854. package/external/folly/sync-config.json +8 -0
  855. package/package.json +3 -3
  856. package/template/cpp-app/proj/MyApp.sln +0 -33
  857. package/template/cpp-lib/proj/MyLib.sln +0 -33
  858. package/template/cs-app/proj/MyApp.sln +0 -33
  859. package/template/cs-lib/proj/MyLib.sln +0 -33
  860. package/templates/cpp-app/windows/MyApp.sln +0 -33
  861. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  862. package/Folly/Folly.vcxproj +0 -383
  863. package/Folly/Folly.vcxproj.filters +0 -558
  864. package/Folly/Folly.win32.vcxproj +0 -11
  865. package/Folly/packages.lock.win32.json +0 -20
  866. package/fmt/fmt.vcxproj +0 -163
  867. package/fmt/fmt.vcxproj.filters +0 -59
  868. package/fmt/fmt.win32.vcxproj +0 -10
  869. package/fmt/pch.cpp +0 -4
  870. package/fmt/pch.h +0 -2
  871. /package/{Folly → external/folly}/Folly.natvis +0 -0
  872. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  873. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  874. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  875. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  876. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  877. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  878. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  879. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  880. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  881. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  882. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,464 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #pragma once
18
+
19
+ #include <algorithm>
20
+ #include <cassert>
21
+ #include <cstdint>
22
+ #include <cstring>
23
+ #include <functional>
24
+ #include <iterator>
25
+ #include <limits>
26
+ #include <type_traits>
27
+
28
+ #include <boost/iterator/iterator_adaptor.hpp>
29
+
30
+ #include <folly/Portability.h>
31
+ #include <folly/Traits.h>
32
+ #include <folly/functional/Invoke.h>
33
+ #include <folly/portability/SysTypes.h>
34
+
35
+ /**
36
+ * Code that aids in storing data aligned on block (possibly cache-line)
37
+ * boundaries, perhaps with padding.
38
+ *
39
+ * Class Node represents one block. Given an iterator to a container of
40
+ * Node, class Iterator encapsulates an iterator to the underlying elements.
41
+ * Adaptor converts a sequence of Node into a sequence of underlying elements
42
+ * (not fully compatible with STL container requirements, see comments
43
+ * near the Node class declaration).
44
+ */
45
+
46
+ namespace folly {
47
+ namespace padded {
48
+
49
+ /**
50
+ * A Node is a fixed-size container of as many objects of type T as would
51
+ * fit in a region of memory of size NS. The last NS % sizeof(T)
52
+ * bytes are ignored and uninitialized.
53
+ *
54
+ * Node only works for trivial types, which is usually not a concern. This
55
+ * is intentional: Node itself is trivial, which means that it can be
56
+ * serialized / deserialized using a simple memcpy.
57
+ */
58
+ template <class T, size_t NS>
59
+ class Node {
60
+ static_assert(
61
+ std::is_trivial_v<T> && sizeof(T) <= NS && NS % alignof(T) == 0);
62
+
63
+ public:
64
+ typedef T value_type;
65
+ static constexpr size_t kNodeSize = NS;
66
+ static constexpr size_t kElementCount = NS / sizeof(T);
67
+ static constexpr size_t kPaddingBytes = NS % sizeof(T);
68
+
69
+ T* data() { return storage_.data; }
70
+ const T* data() const { return storage_.data; }
71
+
72
+ bool operator==(const Node& other) const {
73
+ return memcmp(data(), other.data(), sizeof(T) * kElementCount) == 0;
74
+ }
75
+ bool operator!=(const Node& other) const { return !(*this == other); }
76
+
77
+ /**
78
+ * Return the number of nodes needed to represent n values. Rounds up.
79
+ */
80
+ static constexpr size_t nodeCount(size_t n) {
81
+ return (n + kElementCount - 1) / kElementCount;
82
+ }
83
+
84
+ /**
85
+ * Return the total byte size needed to represent n values, rounded up
86
+ * to the nearest full node.
87
+ */
88
+ static constexpr size_t paddedByteSize(size_t n) { return nodeCount(n) * NS; }
89
+
90
+ /**
91
+ * Return the number of bytes used for padding n values.
92
+ * Note that, even if n is a multiple of kElementCount, this may
93
+ * return non-zero if kPaddingBytes != 0, as the padding at the end of
94
+ * the last node is not included in the result.
95
+ */
96
+ static constexpr size_t paddingBytes(size_t n) {
97
+ return (
98
+ n ? (kPaddingBytes +
99
+ (kElementCount - 1 - (n - 1) % kElementCount) * sizeof(T))
100
+ : 0);
101
+ }
102
+
103
+ /**
104
+ * Return the minimum byte size needed to represent n values.
105
+ * Does not round up. Even if n is a multiple of kElementCount, this
106
+ * may be different from paddedByteSize() if kPaddingBytes != 0, as
107
+ * the padding at the end of the last node is not included in the result.
108
+ * Note that the calculation below works for n=0 correctly (returns 0).
109
+ */
110
+ static constexpr size_t unpaddedByteSize(size_t n) {
111
+ return paddedByteSize(n) - paddingBytes(n);
112
+ }
113
+
114
+ private:
115
+ union Storage {
116
+ unsigned char bytes[NS];
117
+ T data[kElementCount];
118
+ } storage_;
119
+ };
120
+
121
+ // We must define kElementCount and kPaddingBytes to work around a bug
122
+ // in gtest that odr-uses them.
123
+ template <class T, size_t NS>
124
+ constexpr size_t Node<T, NS>::kNodeSize;
125
+ template <class T, size_t NS>
126
+ constexpr size_t Node<T, NS>::kElementCount;
127
+ template <class T, size_t NS>
128
+ constexpr size_t Node<T, NS>::kPaddingBytes;
129
+
130
+ template <class Iter>
131
+ class Iterator;
132
+
133
+ namespace detail {
134
+
135
+ FOLLY_CREATE_MEMBER_INVOKER(emplace_back, emplace_back);
136
+
137
+ // Helper class template to define a base class for Iterator (below) and save
138
+ // typing.
139
+ template <
140
+ template <class>
141
+ class Class,
142
+ class Iter,
143
+ class Traits = std::iterator_traits<Iter>,
144
+ class Ref = typename Traits::reference,
145
+ class Val = typename Traits::value_type::value_type>
146
+ using IteratorBase = boost::iterator_adaptor<
147
+ Class<Iter>, // CRTC
148
+ Iter, // Base iterator type
149
+ Val, // Value type
150
+ boost::use_default, // Category or traversal
151
+ like_t<Ref, Val>>; // Reference type
152
+
153
+ } // namespace detail
154
+
155
+ /**
156
+ * Wrapper around iterators to Node to return iterators to the underlying
157
+ * node elements.
158
+ */
159
+ template <class Iter>
160
+ class Iterator : public detail::IteratorBase<Iterator, Iter> {
161
+ using Super = detail::IteratorBase<Iterator, Iter>;
162
+
163
+ public:
164
+ using Node = typename std::iterator_traits<Iter>::value_type;
165
+
166
+ Iterator() : pos_(0) {}
167
+
168
+ explicit Iterator(Iter base) : Super(base), pos_(0) {}
169
+
170
+ // Return the current node and the position inside the node
171
+ const Node& node() const { return *this->base_reference(); }
172
+ size_t pos() const { return pos_; }
173
+
174
+ private:
175
+ typename Super::reference dereference() const {
176
+ return (*this->base_reference()).data()[pos_];
177
+ }
178
+
179
+ bool equal(const Iterator& other) const {
180
+ return (
181
+ this->base_reference() == other.base_reference() && pos_ == other.pos_);
182
+ }
183
+
184
+ void advance(typename Super::difference_type n) {
185
+ constexpr ssize_t elementCount = Node::kElementCount; // signed!
186
+ ssize_t newPos = pos_ + n;
187
+ if (newPos >= 0 && newPos < elementCount) {
188
+ pos_ = newPos;
189
+ return;
190
+ }
191
+ ssize_t nblocks = newPos / elementCount;
192
+ newPos %= elementCount;
193
+ if (newPos < 0) {
194
+ --nblocks; // negative
195
+ newPos += elementCount;
196
+ }
197
+ this->base_reference() += nblocks;
198
+ pos_ = newPos;
199
+ }
200
+
201
+ void increment() {
202
+ if (++pos_ == Node::kElementCount) {
203
+ ++this->base_reference();
204
+ pos_ = 0;
205
+ }
206
+ }
207
+
208
+ void decrement() {
209
+ if (--pos_ == -1) {
210
+ --this->base_reference();
211
+ pos_ = Node::kElementCount - 1;
212
+ }
213
+ }
214
+
215
+ typename Super::difference_type distance_to(const Iterator& other) const {
216
+ constexpr ssize_t elementCount = Node::kElementCount; // signed!
217
+ ssize_t nblocks =
218
+ std::distance(this->base_reference(), other.base_reference());
219
+ return nblocks * elementCount + (other.pos_ - pos_);
220
+ }
221
+
222
+ friend class boost::iterator_core_access;
223
+ ssize_t pos_; // signed for easier advance() implementation
224
+ };
225
+
226
+ /**
227
+ * Given a container to Node, return iterators to the first element in
228
+ * the first Node / one past the last element in the last Node.
229
+ * Note that the last node is assumed to be full; if that's not the case,
230
+ * subtract from end() as appropriate.
231
+ */
232
+
233
+ template <class Container>
234
+ Iterator<typename Container::const_iterator> cbegin(const Container& c) {
235
+ return Iterator<typename Container::const_iterator>(std::begin(c));
236
+ }
237
+
238
+ template <class Container>
239
+ Iterator<typename Container::const_iterator> cend(const Container& c) {
240
+ return Iterator<typename Container::const_iterator>(std::end(c));
241
+ }
242
+
243
+ template <class Container>
244
+ Iterator<typename Container::const_iterator> begin(const Container& c) {
245
+ return cbegin(c);
246
+ }
247
+
248
+ template <class Container>
249
+ Iterator<typename Container::const_iterator> end(const Container& c) {
250
+ return cend(c);
251
+ }
252
+
253
+ template <class Container>
254
+ Iterator<typename Container::iterator> begin(Container& c) {
255
+ return Iterator<typename Container::iterator>(std::begin(c));
256
+ }
257
+
258
+ template <class Container>
259
+ Iterator<typename Container::iterator> end(Container& c) {
260
+ return Iterator<typename Container::iterator>(std::end(c));
261
+ }
262
+
263
+ /**
264
+ * Adaptor around a STL sequence container.
265
+ *
266
+ * Converts a sequence of Node into a sequence of its underlying elements
267
+ * (with enough functionality to make it useful, although it's not fully
268
+ * compatible with the STL container requirements, see below).
269
+ *
270
+ * Provides iterators (of the same category as those of the underlying
271
+ * container), size(), front(), back(), push_back(), pop_back(), and const /
272
+ * non-const versions of operator[] (if the underlying container supports
273
+ * them). Does not provide push_front() / pop_front() or arbitrary insert /
274
+ * emplace / erase. Also provides reserve() / capacity() if supported by the
275
+ * underlying container.
276
+ *
277
+ * Yes, it's called Adaptor, not Adapter, as that's the name used by the STL
278
+ * and by boost. Deal with it.
279
+ *
280
+ * Internally, we hold a container of Node and the number of elements in
281
+ * the last block. We don't keep empty blocks, so the number of elements in
282
+ * the last block is always between 1 and Node::kElementCount (inclusive).
283
+ * (this is true if the container is empty as well to make push_back() simpler,
284
+ * see the implementation of the size() method for details).
285
+ */
286
+ template <class Container>
287
+ class Adaptor {
288
+ public:
289
+ typedef typename Container::value_type Node;
290
+ typedef typename Node::value_type value_type;
291
+ typedef value_type& reference;
292
+ typedef const value_type& const_reference;
293
+ typedef Iterator<typename Container::iterator> iterator;
294
+ typedef Iterator<typename Container::const_iterator> const_iterator;
295
+ typedef typename const_iterator::difference_type difference_type;
296
+ typedef typename Container::size_type size_type;
297
+
298
+ static constexpr size_t kElementsPerNode = Node::kElementCount;
299
+ // Constructors
300
+ Adaptor() : lastCount_(Node::kElementCount) {}
301
+ explicit Adaptor(Container c, size_t lastCount = Node::kElementCount)
302
+ : c_(std::move(c)), lastCount_(lastCount) {}
303
+ explicit Adaptor(size_t n, const value_type& value = value_type())
304
+ : c_(Node::nodeCount(n), fullNode(value)) {
305
+ const auto count = n % Node::kElementCount;
306
+ lastCount_ = count != 0 ? count : Node::kElementCount;
307
+ }
308
+
309
+ Adaptor(const Adaptor&) = default;
310
+ Adaptor& operator=(const Adaptor&) = default;
311
+ Adaptor(Adaptor&& other) noexcept
312
+ : c_(std::move(other.c_)), lastCount_(other.lastCount_) {
313
+ other.lastCount_ = Node::kElementCount;
314
+ }
315
+ Adaptor& operator=(Adaptor&& other) {
316
+ if (this != &other) {
317
+ c_ = std::move(other.c_);
318
+ lastCount_ = other.lastCount_;
319
+ other.lastCount_ = Node::kElementCount;
320
+ }
321
+ return *this;
322
+ }
323
+
324
+ // Iterators
325
+ const_iterator cbegin() const { return const_iterator(c_.begin()); }
326
+ const_iterator cend() const {
327
+ auto it = const_iterator(c_.end());
328
+ if (lastCount_ != Node::kElementCount) {
329
+ it -= (Node::kElementCount - lastCount_);
330
+ }
331
+ return it;
332
+ }
333
+ const_iterator begin() const { return cbegin(); }
334
+ const_iterator end() const { return cend(); }
335
+ iterator begin() { return iterator(c_.begin()); }
336
+ iterator end() {
337
+ auto it = iterator(c_.end());
338
+ if (lastCount_ != Node::kElementCount) {
339
+ it -= difference_type(Node::kElementCount - lastCount_);
340
+ }
341
+ return it;
342
+ }
343
+ void swap(Adaptor& other) {
344
+ using std::swap;
345
+ swap(c_, other.c_);
346
+ swap(lastCount_, other.lastCount_);
347
+ }
348
+ bool empty() const { return c_.empty(); }
349
+ size_type size() const {
350
+ return (
351
+ c_.empty() ? 0 : (c_.size() - 1) * Node::kElementCount + lastCount_);
352
+ }
353
+ size_type max_size() const {
354
+ return (
355
+ (c_.max_size() <=
356
+ std::numeric_limits<size_type>::max() / Node::kElementCount)
357
+ ? c_.max_size() * Node::kElementCount
358
+ : std::numeric_limits<size_type>::max());
359
+ }
360
+
361
+ const value_type& front() const {
362
+ assert(!empty());
363
+ return c_.front().data()[0];
364
+ }
365
+ value_type& front() {
366
+ assert(!empty());
367
+ return c_.front().data()[0];
368
+ }
369
+
370
+ const value_type& back() const {
371
+ assert(!empty());
372
+ return c_.back().data()[lastCount_ - 1];
373
+ }
374
+ value_type& back() {
375
+ assert(!empty());
376
+ return c_.back().data()[lastCount_ - 1];
377
+ }
378
+
379
+ template <typename... Args>
380
+ void emplace_back(Args&&... args) {
381
+ new (allocate_back()) value_type(std::forward<Args>(args)...);
382
+ }
383
+
384
+ void push_back(value_type x) { emplace_back(std::move(x)); }
385
+
386
+ void pop_back() {
387
+ assert(!empty());
388
+ if (--lastCount_ == 0) {
389
+ c_.pop_back();
390
+ lastCount_ = Node::kElementCount;
391
+ }
392
+ }
393
+
394
+ void clear() {
395
+ c_.clear();
396
+ lastCount_ = Node::kElementCount;
397
+ }
398
+
399
+ void reserve(size_type n) {
400
+ assert(n >= 0);
401
+ c_.reserve(Node::nodeCount(n));
402
+ }
403
+
404
+ size_type capacity() const { return c_.capacity() * Node::kElementCount; }
405
+
406
+ const value_type& operator[](size_type idx) const {
407
+ return c_[idx / Node::kElementCount].data()[idx % Node::kElementCount];
408
+ }
409
+ value_type& operator[](size_type idx) {
410
+ return c_[idx / Node::kElementCount].data()[idx % Node::kElementCount];
411
+ }
412
+
413
+ /**
414
+ * Return the underlying container and number of elements in the last block,
415
+ * and clear *this. Useful when you want to process the data as Nodes
416
+ * (again) and want to avoid copies.
417
+ */
418
+ std::pair<Container, size_t> move() {
419
+ std::pair<Container, size_t> p(std::move(c_), lastCount_);
420
+ lastCount_ = Node::kElementCount;
421
+ return p;
422
+ }
423
+
424
+ /**
425
+ * Return a const reference to the underlying container and the current
426
+ * number of elements in the last block.
427
+ */
428
+ std::pair<const Container&, size_t> peek() const {
429
+ return std::make_pair(std::cref(c_), lastCount_);
430
+ }
431
+
432
+ void padToFullNode(const value_type& padValue) {
433
+ // the if is necessary because c_ may be empty so we can't call c_.back()
434
+ if (lastCount_ != Node::kElementCount) {
435
+ auto last = c_.back().data();
436
+ std::fill(last + lastCount_, last + Node::kElementCount, padValue);
437
+ lastCount_ = Node::kElementCount;
438
+ }
439
+ }
440
+
441
+ private:
442
+ value_type* allocate_back() {
443
+ if (lastCount_ == Node::kElementCount) {
444
+ if constexpr (is_invocable_v<detail::emplace_back, Container&>) {
445
+ c_.emplace_back();
446
+ } else {
447
+ c_.push_back(typename Container::value_type());
448
+ }
449
+ lastCount_ = 0;
450
+ }
451
+ return &c_.back().data()[lastCount_++];
452
+ }
453
+
454
+ static Node fullNode(const value_type& value) {
455
+ Node n;
456
+ std::fill(n.data(), n.data() + kElementsPerNode, value);
457
+ return n;
458
+ }
459
+ Container c_; // container of Nodes
460
+ size_t lastCount_; // number of elements in last Node
461
+ };
462
+
463
+ } // namespace padded
464
+ } // namespace folly
@@ -0,0 +1,230 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ namespace folly {
18
+ namespace detail {
19
+
20
+ template <class I>
21
+ inline PolyVal<I>::PolyVal(PolyVal&& that) noexcept {
22
+ that.vptr_->ops_(Op::eMove, &that, static_cast<Data*>(this));
23
+ vptr_ = std::exchange(that.vptr_, vtable<I>());
24
+ }
25
+
26
+ template <class I>
27
+ inline PolyVal<I>::PolyVal(PolyOrNonesuch const& that) {
28
+ that.vptr_->ops_(
29
+ Op::eCopy, const_cast<Data*>(that._data_()), PolyAccess::data(*this));
30
+ vptr_ = that.vptr_;
31
+ }
32
+
33
+ template <class I>
34
+ inline PolyVal<I>::~PolyVal() {
35
+ vptr_->ops_(Op::eNuke, this, nullptr);
36
+ }
37
+
38
+ template <class I>
39
+ inline Poly<I>& PolyVal<I>::operator=(PolyVal that) noexcept {
40
+ vptr_->ops_(Op::eNuke, _data_(), nullptr);
41
+ that.vptr_->ops_(Op::eMove, that._data_(), _data_());
42
+ vptr_ = std::exchange(that.vptr_, vtable<I>());
43
+ return static_cast<Poly<I>&>(*this);
44
+ }
45
+
46
+ template <class I>
47
+ template <class T, std::enable_if_t<ModelsInterface<T, I>::value, int>>
48
+ inline PolyVal<I>::PolyVal(T&& t) {
49
+ using U = std::decay_t<T>;
50
+ static_assert(
51
+ std::is_copy_constructible<U>::value || !Copyable::value,
52
+ "This Poly<> requires copyability, and the source object is not "
53
+ "copyable");
54
+ // The static and dynamic types should match; otherwise, this will slice.
55
+ assert(
56
+ typeid(t) == typeid(std::decay_t<T>) &&
57
+ "Dynamic and static exception types don't match. Object would "
58
+ "be sliced when storing in Poly.");
59
+ if (inSitu<U>()) {
60
+ auto const buff = static_cast<void*>(&_data_()->buff_);
61
+ ::new (buff) U(static_cast<T&&>(t));
62
+ } else {
63
+ _data_()->pobj_ = new U(static_cast<T&&>(t));
64
+ }
65
+ vptr_ = vtableFor<I, U>();
66
+ }
67
+
68
+ template <class I>
69
+ template <class I2, std::enable_if_t<ValueCompatible<I, I2>::value, int>>
70
+ inline PolyVal<I>::PolyVal(Poly<I2> that) {
71
+ static_assert(
72
+ !Copyable::value || std::is_copy_constructible<Poly<I2>>::value,
73
+ "This Poly<> requires copyability, and the source object is not "
74
+ "copyable");
75
+ auto* that_vptr = PolyAccess::vtable(that);
76
+ if (that_vptr->state_ != State::eEmpty) {
77
+ that_vptr->ops_(Op::eMove, PolyAccess::data(that), _data_());
78
+ vptr_ = &select<I>(*std::exchange(that_vptr, vtable<std::decay_t<I2>>()));
79
+ }
80
+ }
81
+
82
+ template <class I>
83
+ template <class T, std::enable_if_t<ModelsInterface<T, I>::value, int>>
84
+ inline Poly<I>& PolyVal<I>::operator=(T&& t) {
85
+ *this = PolyVal(static_cast<T&&>(t));
86
+ return static_cast<Poly<I>&>(*this);
87
+ }
88
+
89
+ template <class I>
90
+ template <class I2, std::enable_if_t<ValueCompatible<I, I2>::value, int>>
91
+ inline Poly<I>& PolyVal<I>::operator=(Poly<I2> that) {
92
+ *this = PolyVal(std::move(that));
93
+ return static_cast<Poly<I>&>(*this);
94
+ }
95
+
96
+ template <class I>
97
+ inline void PolyVal<I>::swap(Poly<I>& that) noexcept {
98
+ switch (vptr_->state_) {
99
+ case State::eEmpty:
100
+ *this = std::move(that);
101
+ break;
102
+ case State::eOnHeap:
103
+ if (State::eOnHeap == that.vptr_->state_) {
104
+ std::swap(_data_()->pobj_, that._data_()->pobj_);
105
+ std::swap(vptr_, that.vptr_);
106
+ return;
107
+ }
108
+ [[fallthrough]];
109
+ case State::eInSitu:
110
+ std::swap(
111
+ *this, static_cast<PolyVal<I>&>(that)); // NOTE: qualified, not ADL
112
+ }
113
+ }
114
+
115
+ template <class I>
116
+ inline AddCvrefOf<PolyRoot<I>, I>& PolyRef<I>::_polyRoot_() const noexcept {
117
+ return const_cast<AddCvrefOf<PolyRoot<I>, I>&>(
118
+ static_cast<PolyRoot<I> const&>(*this));
119
+ }
120
+
121
+ template <class I>
122
+ constexpr RefType PolyRef<I>::refType() noexcept {
123
+ using J = std::remove_reference_t<I>;
124
+ return std::is_rvalue_reference<I>::value ? RefType::eRvalue
125
+ : std::is_const<J>::value ? RefType::eConstLvalue
126
+ : RefType::eLvalue;
127
+ }
128
+
129
+ template <class I>
130
+ template <class That, class I2>
131
+ inline PolyRef<I>::PolyRef(That&& that, Type<I2>) {
132
+ auto* that_vptr = PolyAccess::vtable(PolyAccess::root(that));
133
+ detail::State const that_state = that_vptr->state_;
134
+ if (that_state == State::eEmpty) {
135
+ throw BadPolyAccess();
136
+ }
137
+ auto* that_data = PolyAccess::data(PolyAccess::root(that));
138
+ _data_()->pobj_ = that_state == State::eInSitu
139
+ ? const_cast<void*>(static_cast<void const*>(&that_data->buff_))
140
+ : that_data->pobj_;
141
+ this->vptr_ = &select<std::decay_t<I>>(
142
+ *static_cast<VTable<std::decay_t<I2>> const*>(that_vptr->ops_(
143
+ Op::eRefr, nullptr, reinterpret_cast<void*>(refType()))));
144
+ }
145
+
146
+ template <class I>
147
+ inline PolyRef<I>::PolyRef(PolyRef const& that) noexcept {
148
+ _data_()->pobj_ = that._data_()->pobj_;
149
+ this->vptr_ = that.vptr_;
150
+ }
151
+
152
+ template <class I>
153
+ inline Poly<I>& PolyRef<I>::operator=(PolyRef const& that) noexcept {
154
+ _data_()->pobj_ = that._data_()->pobj_;
155
+ this->vptr_ = that.vptr_;
156
+ return static_cast<Poly<I>&>(*this);
157
+ }
158
+
159
+ template <class I>
160
+ template <class T, std::enable_if_t<ModelsInterface<T, I>::value, int>>
161
+ inline PolyRef<I>::PolyRef(T&& t) noexcept {
162
+ _data_()->pobj_ =
163
+ const_cast<void*>(static_cast<void const*>(std::addressof(t)));
164
+ this->vptr_ = vtableFor<std::decay_t<I>, AddCvrefOf<std::decay_t<T>, I>>();
165
+ }
166
+
167
+ template <class I>
168
+ template <
169
+ class I2,
170
+ std::enable_if_t<ReferenceCompatible<I, I2, I2&&>::value, int>>
171
+ inline PolyRef<I>::PolyRef(Poly<I2>&& that) noexcept(
172
+ std::is_reference<I2>::value)
173
+ : PolyRef{that, Type<I2>{}} {
174
+ static_assert(
175
+ Disjunction<std::is_reference<I2>, std::is_rvalue_reference<I>>::value,
176
+ "Attempting to construct a Poly that is a reference to a temporary. "
177
+ "This is probably a mistake.");
178
+ }
179
+
180
+ template <class I>
181
+ template <class T, std::enable_if_t<ModelsInterface<T, I>::value, int>>
182
+ inline Poly<I>& PolyRef<I>::operator=(T&& t) noexcept {
183
+ *this = PolyRef(static_cast<T&&>(t));
184
+ return static_cast<Poly<I>&>(*this);
185
+ }
186
+
187
+ template <class I>
188
+ template <
189
+ class I2,
190
+ std::enable_if_t<ReferenceCompatible<I, I2, I2&&>::value, int>>
191
+ inline Poly<I>& PolyRef<I>::operator=(Poly<I2>&& that) noexcept(
192
+ std::is_reference<I2>::value) {
193
+ *this = PolyRef(std::move(that));
194
+ return static_cast<Poly<I>&>(*this);
195
+ }
196
+
197
+ template <class I>
198
+ template <
199
+ class I2,
200
+ std::enable_if_t<ReferenceCompatible<I, I2, I2&>::value, int>>
201
+ inline Poly<I>& PolyRef<I>::operator=(Poly<I2>& that) noexcept(
202
+ std::is_reference<I2>::value) {
203
+ *this = PolyRef(that);
204
+ return static_cast<Poly<I>&>(*this);
205
+ }
206
+
207
+ template <class I>
208
+ template <
209
+ class I2,
210
+ std::enable_if_t<ReferenceCompatible<I, I2, I2 const&>::value, int>>
211
+ inline Poly<I>& PolyRef<I>::operator=(Poly<I2> const& that) noexcept(
212
+ std::is_reference<I2>::value) {
213
+ *this = PolyRef(that);
214
+ return static_cast<Poly<I>&>(*this);
215
+ }
216
+
217
+ template <class I>
218
+ inline void PolyRef<I>::swap(Poly<I>& that) noexcept {
219
+ std::swap(_data_()->pobj_, that._data_()->pobj_);
220
+ std::swap(this->vptr_, that.vptr_);
221
+ }
222
+
223
+ template <class I>
224
+ inline AddCvrefOf<PolyImpl<I>, I>& PolyRef<I>::get() const noexcept {
225
+ return const_cast<AddCvrefOf<PolyImpl<I>, I>&>(
226
+ static_cast<PolyImpl<I> const&>(*this));
227
+ }
228
+
229
+ } // namespace detail
230
+ } // namespace folly