react-native-windows 0.84.0 → 0.85.0-preview.2

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 (1347) hide show
  1. package/.flowconfig +1 -5
  2. package/Directory.Build.props +2 -17
  3. package/Directory.Build.targets +12 -4
  4. package/Folly/ThreadNameStub.cpp +4 -6
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
  6. package/Libraries/Animated/Animated.d.ts +8 -1
  7. package/Libraries/Animated/AnimatedEvent.js +4 -4
  8. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  9. package/Libraries/Animated/animations/Animation.js +3 -3
  10. package/Libraries/Animated/animations/DecayAnimation.js +4 -4
  11. package/Libraries/Animated/animations/SpringAnimation.js +5 -5
  12. package/Libraries/Animated/animations/TimingAnimation.js +5 -5
  13. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  14. package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
  16. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  17. package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  23. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  24. package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
  25. package/Libraries/Animated/useAnimatedColor.js +25 -0
  26. package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
  27. package/Libraries/Animated/useAnimatedValueXY.js +26 -0
  28. package/Libraries/AppState/AppState.js +1 -1
  29. package/Libraries/BatchedBridge/MessageQueue.js +3 -3
  30. package/Libraries/BatchedBridge/NativeModules.js +12 -10
  31. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +34 -30
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
  34. package/Libraries/Components/Button.js +2 -2
  35. package/Libraries/Components/Button.windows.js +2 -2
  36. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
  37. package/Libraries/Components/Keyboard/Keyboard.js +6 -6
  38. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  39. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  40. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
  41. package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
  42. package/Libraries/Components/Pressable/Pressable.js +3 -3
  43. package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
  44. package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
  45. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  46. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
  47. package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
  48. package/Libraries/Components/RefreshControl/RefreshControl.windows.js +5 -5
  49. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
  51. package/Libraries/Components/ScrollView/ScrollView.js +19 -9
  52. package/Libraries/Components/ScrollView/ScrollView.windows.js +19 -9
  53. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
  54. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +8 -18
  55. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
  56. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  57. package/Libraries/Components/StaticRenderer.js +1 -1
  58. package/Libraries/Components/StatusBar/StatusBar.js +8 -8
  59. package/Libraries/Components/Switch/Switch.js +3 -3
  60. package/Libraries/Components/Switch/Switch.windows.js +3 -3
  61. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
  62. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  63. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
  64. package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
  65. package/Libraries/Components/TextInput/TextInput.flow.windows.js +23 -22
  66. package/Libraries/Components/TextInput/TextInput.js +8 -4
  67. package/Libraries/Components/TextInput/TextInput.windows.js +3 -4
  68. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +33 -48
  69. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  70. package/Libraries/Components/Touchable/Touchable.js +2 -2
  71. package/Libraries/Components/Touchable/Touchable.windows.js +2 -2
  72. package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
  73. package/Libraries/Components/Touchable/TouchableBounce.windows.js +4 -4
  74. package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
  75. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -9
  76. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +7 -7
  78. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
  79. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +4 -4
  80. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
  81. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +1 -1
  82. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  83. package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
  84. package/Libraries/Components/View/View.windows.js +1 -1
  85. package/Libraries/Components/View/ViewAccessibility.js +7 -7
  86. package/Libraries/Components/View/ViewAccessibility.windows.js +7 -7
  87. package/Libraries/Components/View/ViewPropTypes.js +14 -14
  88. package/Libraries/Components/View/ViewPropTypes.windows.js +18 -16
  89. package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
  90. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  91. package/Libraries/Core/ExceptionsManager.js +2 -2
  92. package/Libraries/Core/ExtendedError.js +3 -3
  93. package/Libraries/Core/RawEventEmitter.js +1 -1
  94. package/Libraries/Core/ReactNativeVersion.js +2 -2
  95. package/Libraries/Core/Timers/JSTimers.js +3 -2
  96. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  97. package/Libraries/Core/setUpErrorHandling.js +4 -2
  98. package/Libraries/Core/setUpReactDevTools.js +23 -6
  99. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  100. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  101. package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
  102. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
  103. package/Libraries/Image/AssetSourceResolver.js +1 -1
  104. package/Libraries/Image/AssetSourceResolver.windows.js +1 -1
  105. package/Libraries/Image/Image.android.js +172 -306
  106. package/Libraries/Image/ImageProps.js +9 -11
  107. package/Libraries/Image/ImageSource.js +2 -2
  108. package/Libraries/Image/ImageSourceUtils.js +8 -4
  109. package/Libraries/Image/ImageTypes.flow.js +2 -2
  110. package/Libraries/Image/ImageViewNativeComponent.js +7 -16
  111. package/Libraries/Image/nativeImageSource.js +1 -1
  112. package/Libraries/Interaction/InteractionManager.js +5 -4
  113. package/Libraries/Interaction/PanResponder.js +1 -1
  114. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  115. package/Libraries/Linking/Linking.js +1 -1
  116. package/Libraries/Lists/FlatList.js +3 -3
  117. package/Libraries/Lists/SectionList.js +1 -1
  118. package/Libraries/Lists/SectionListModern.js +2 -2
  119. package/Libraries/LogBox/Data/LogBoxData.js +38 -24
  120. package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
  121. package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
  122. package/Libraries/LogBox/LogBox.js +42 -19
  123. package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
  124. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  125. package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
  126. package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
  127. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
  128. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -9
  129. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
  131. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  132. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  133. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
  134. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
  135. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
  136. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +15 -16
  137. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  138. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
  139. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
  140. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.windows.js +3 -5
  141. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
  142. package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
  143. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  144. package/Libraries/Modal/Modal.d.ts +4 -0
  145. package/Libraries/Modal/Modal.js +3 -3
  146. package/Libraries/Modal/Modal.windows.js +7 -3
  147. package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
  148. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
  149. package/Libraries/NativeComponent/BaseViewConfig.windows.js +26 -17
  150. package/Libraries/Network/RCTNetworking.android.js +1 -1
  151. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  152. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  153. package/Libraries/Network/RCTNetworking.windows.js +1 -1
  154. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
  155. package/Libraries/Network/XMLHttpRequest.js +1 -1
  156. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  157. package/Libraries/Pressability/Pressability.js +5 -5
  158. package/Libraries/Pressability/Pressability.windows.js +5 -5
  159. package/Libraries/Pressability/PressabilityDebug.js +1 -1
  160. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  161. package/Libraries/Pressability/usePressability.js +3 -14
  162. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  163. package/Libraries/ReactNative/AppContainer-dev.js +18 -1
  164. package/Libraries/ReactNative/AppContainer.js +1 -1
  165. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  166. package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
  167. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  168. package/Libraries/ReactNative/RendererImplementation.js +4 -4
  169. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  170. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
  171. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
  172. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
  173. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  174. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  175. package/Libraries/Renderer/shims/ReactNative.js +3 -2
  176. package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
  177. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +1 -3
  178. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  179. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  180. package/Libraries/StyleSheet/PointPropType.js +1 -1
  181. package/Libraries/StyleSheet/Rect.js +1 -1
  182. package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
  183. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  184. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  185. package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
  186. package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
  187. package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
  188. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
  189. package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
  190. package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
  191. package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
  192. package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
  193. package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
  194. package/Libraries/StyleSheet/processBoxShadow.js +44 -4
  195. package/Libraries/StyleSheet/processColorArray.js +2 -2
  196. package/Libraries/StyleSheet/processFilter.js +2 -2
  197. package/Libraries/Text/Text.js +295 -627
  198. package/Libraries/Text/Text.windows.js +342 -717
  199. package/Libraries/Text/TextNativeComponent.js +14 -7
  200. package/Libraries/Text/TextProps.js +4 -4
  201. package/Libraries/Text/TextProps.windows.js +4 -4
  202. package/Libraries/Types/CodegenTypes.js +1 -1
  203. package/Libraries/Types/CoreEventTypes.js +21 -21
  204. package/Libraries/Types/CoreEventTypes.windows.js +21 -21
  205. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  206. package/Libraries/Utilities/Appearance.js +6 -1
  207. package/Libraries/Utilities/Dimensions.js +1 -1
  208. package/Libraries/Utilities/HMRClient.js +32 -5
  209. package/Libraries/Utilities/IPerformanceLogger.js +4 -4
  210. package/Libraries/Utilities/codegenNativeCommands.js +4 -4
  211. package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
  212. package/Libraries/Utilities/codegenNativeComponent.js +2 -2
  213. package/Libraries/Utilities/logError.js +1 -1
  214. package/Libraries/Utilities/stringifySafe.js +3 -3
  215. package/Libraries/Utilities/useMergeRefs.js +2 -2
  216. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  217. package/Libraries/vendor/emitter/EventEmitter.js +16 -20
  218. package/Microsoft.ReactNative/CallInvoker.cpp +14 -4
  219. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
  220. package/Microsoft.ReactNative/Fabric/AbiPortalShadowNode.cpp +2 -2
  221. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
  222. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +73 -97
  223. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.h +4 -1
  224. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -1
  225. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +28 -46
  226. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +0 -3
  227. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +4 -4
  228. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +154 -31
  229. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +10 -0
  230. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +7 -2
  231. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +2 -0
  232. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +170 -15
  233. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +3 -1
  234. package/Microsoft.ReactNative/Fabric/Composition/SelectionItemAutomationEvent.h +73 -0
  235. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
  236. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +1 -1
  237. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +105 -32
  238. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -2
  239. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -0
  240. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -0
  241. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +3 -0
  242. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorUtils.cpp +0 -3
  243. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +2 -7
  244. package/Microsoft.ReactNative/IReactPackageBuilder.idl +6 -0
  245. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -61
  246. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +1 -26
  247. package/Microsoft.ReactNative/Modules/AlertModule.cpp +2 -1
  248. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -17
  249. package/Microsoft.ReactNative/Modules/AppStateModule.h +0 -4
  250. package/Microsoft.ReactNative/Modules/AppThemeModuleUwp.cpp +0 -2
  251. package/Microsoft.ReactNative/Modules/AppearanceModule.cpp +16 -15
  252. package/Microsoft.ReactNative/Modules/AppearanceModule.h +5 -1
  253. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -7
  254. package/Microsoft.ReactNative/Modules/DeviceInfoModule.h +0 -1
  255. package/Microsoft.ReactNative/Modules/I18nManagerModule.h +4 -4
  256. package/Microsoft.ReactNative/QuirkSettings.cpp +0 -133
  257. package/Microsoft.ReactNative/QuirkSettings.h +0 -43
  258. package/Microsoft.ReactNative/QuirkSettings.idl +0 -41
  259. package/Microsoft.ReactNative/ReactHost/CrashManager.cpp +0 -4
  260. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +0 -2
  261. package/Microsoft.ReactNative/ReactHost/React.h +0 -5
  262. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +0 -1
  263. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +3 -26
  264. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -5
  265. package/Microsoft.ReactNative/ReactHost/React_Win.h +0 -2
  266. package/Microsoft.ReactNative/ReactNativeAppBuilder.idl +3 -0
  267. package/Microsoft.ReactNative/ReactPackageBuilder.cpp +7 -0
  268. package/Microsoft.ReactNative/ReactPackageBuilder.h +1 -0
  269. package/Microsoft.ReactNative/RedBox.cpp +0 -9
  270. package/Microsoft.ReactNative/RedBoxHandler.cpp +0 -4
  271. package/Microsoft.ReactNative/TurboModulesProvider.cpp +5 -10
  272. package/Microsoft.ReactNative/TurboModulesProvider.h +2 -0
  273. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  274. package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +0 -7
  275. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +0 -22
  276. package/Microsoft.ReactNative.Cxx/ModuleRegistration.cpp +8 -2
  277. package/Microsoft.ReactNative.Cxx/ModuleRegistration.h +36 -20
  278. package/Microsoft.ReactNative.Cxx/NamespaceRedirect.h +0 -3
  279. package/Microsoft.ReactNative.Cxx/NativeModules.h +8 -2
  280. package/Microsoft.ReactNative.Cxx/XamlUtils.h +0 -9
  281. package/Microsoft.ReactNative.Managed/ReactContext.cs +0 -9
  282. package/PropertySheets/Autolink.props +1 -1
  283. package/PropertySheets/Bundle.props +1 -1
  284. package/PropertySheets/CIBuildOptimizations.props +2 -2
  285. package/PropertySheets/Codegen.props +1 -1
  286. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  287. package/PropertySheets/JSEngine.props +1 -1
  288. package/PropertySheets/NuGet.LockFile.props +2 -1
  289. package/PropertySheets/React.Cpp.props +4 -4
  290. package/PropertySheets/ReactNativeArchitecture.props +6 -24
  291. package/ReactCommon/ReactCommon.vcxproj +5 -6
  292. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1 -1
  293. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +15 -4
  294. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +13 -0
  295. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/defaults/DefaultTurboModules.cpp +69 -0
  296. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp +717 -0
  297. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +10 -10
  298. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +2 -21
  299. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.cpp +151 -0
  300. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/TouchEventEmitter.h +50 -0
  301. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/mapbuffer/MapBuffer.cpp +178 -0
  302. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +69 -39
  303. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +54 -5
  304. package/Scripts/OfficeReact.Win32.nuspec +0 -1
  305. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -39
  306. package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
  307. package/Scripts/creaternwapp.cmd +29 -17
  308. package/Scripts/creaternwlib.cmd +31 -35
  309. package/Shared/DevSettings.h +0 -3
  310. package/Shared/Networking/WinRTWebSocketResource.cpp +23 -408
  311. package/Shared/Networking/WinRTWebSocketResource.h +3 -119
  312. package/Shared/Shared.vcxitems +63 -38
  313. package/Shared/Shared.vcxitems.filters +54 -0
  314. package/Shared/Utils.cpp +0 -88
  315. package/Shared/Utils.h +0 -14
  316. package/Shared/WebSocketResourceFactory.cpp +28 -0
  317. package/Shared/tracing/fbsystrace.h +1 -0
  318. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +172 -160
  319. package/codegen/react/components/rnwcore/ModalHostView.g.h +8 -0
  320. package/codegen/react/components/rnwcore/Props.cpp +17 -7
  321. package/codegen/react/components/rnwcore/Props.h +3 -1
  322. package/codegen/react/components/rnwcore/VirtualViewExperimental.g.h +4 -4
  323. package/codegen/rnwcoreJSI.h +93 -77
  324. package/{Folly → external}/.clang-format +0 -1
  325. package/external/External.vcxitems +10 -0
  326. package/external/fast-float/.syncignore +10 -0
  327. package/external/fast-float/LICENSE-APACHE +190 -0
  328. package/external/fast-float/LICENSE-BOOST +23 -0
  329. package/external/fast-float/LICENSE-MIT +27 -0
  330. package/external/fast-float/README.md +545 -0
  331. package/external/fast-float/cgmanifest.json +15 -0
  332. package/external/fast-float/fast-float.vcxitems +14 -0
  333. package/external/fast-float/include/fast_float/ascii_number.h +588 -0
  334. package/external/fast-float/include/fast_float/bigint.h +638 -0
  335. package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
  336. package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
  337. package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
  338. package/external/fast-float/include/fast_float/fast_float.h +59 -0
  339. package/external/fast-float/include/fast_float/fast_table.h +708 -0
  340. package/external/fast-float/include/fast_float/float_common.h +1240 -0
  341. package/external/fast-float/include/fast_float/parse_number.h +399 -0
  342. package/external/fast-float/sync-config.json +8 -0
  343. package/external/fmt/.syncignore +10 -0
  344. package/external/fmt/CONTRIBUTING.md +20 -0
  345. package/external/fmt/LICENSE +27 -0
  346. package/external/fmt/README.md +484 -0
  347. package/external/fmt/doc/ChangeLog-old.md +3290 -0
  348. package/external/fmt/doc/api.md +650 -0
  349. package/external/fmt/doc/fmt.css +61 -0
  350. package/external/fmt/doc/fmt.js +4 -0
  351. package/external/fmt/doc/get-started.md +222 -0
  352. package/external/fmt/doc/index.md +151 -0
  353. package/external/fmt/doc/perf.svg +1 -0
  354. package/external/fmt/doc/python-license.txt +290 -0
  355. package/external/fmt/doc/syntax.md +887 -0
  356. package/external/fmt/fmt.vcxitems +28 -0
  357. package/external/fmt/include/fmt/args.h +228 -0
  358. package/external/fmt/include/fmt/base.h +3077 -0
  359. package/external/fmt/include/fmt/chrono.h +2432 -0
  360. package/external/fmt/include/fmt/color.h +612 -0
  361. package/external/fmt/include/fmt/compile.h +529 -0
  362. package/external/fmt/include/fmt/core.h +5 -0
  363. package/external/fmt/include/fmt/format-inl.h +1928 -0
  364. package/external/fmt/include/fmt/format.h +4427 -0
  365. package/external/fmt/include/fmt/os.h +439 -0
  366. package/external/fmt/include/fmt/ostream.h +211 -0
  367. package/external/fmt/include/fmt/printf.h +656 -0
  368. package/external/fmt/include/fmt/ranges.h +882 -0
  369. package/external/fmt/include/fmt/std.h +699 -0
  370. package/external/fmt/include/fmt/xchar.h +322 -0
  371. package/external/fmt/src/fmt.cc +135 -0
  372. package/external/fmt/src/format.cc +43 -0
  373. package/external/fmt/src/os.cc +403 -0
  374. package/external/fmt/sync-config.json +8 -0
  375. package/external/folly/.syncignore +60 -0
  376. package/external/folly/LICENSE +200 -0
  377. package/external/folly/README.md +263 -0
  378. package/{fmt → external/folly/folly}/.clang-format +0 -1
  379. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  380. package/external/folly/folly/AtomicHashArray.h +431 -0
  381. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  382. package/external/folly/folly/AtomicHashMap.h +484 -0
  383. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  384. package/external/folly/folly/AtomicLinkedList.h +110 -0
  385. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  386. package/external/folly/folly/BUCK +1631 -0
  387. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  388. package/external/folly/folly/Benchmark.cpp +986 -0
  389. package/external/folly/folly/Benchmark.h +680 -0
  390. package/external/folly/folly/BenchmarkUtil.h +47 -0
  391. package/external/folly/folly/Bits.h +17 -0
  392. package/external/folly/folly/CMakeLists.txt +110 -0
  393. package/external/folly/folly/CPortability.h +338 -0
  394. package/external/folly/folly/CancellationToken-inl.h +449 -0
  395. package/external/folly/folly/CancellationToken.cpp +250 -0
  396. package/external/folly/folly/CancellationToken.h +365 -0
  397. package/external/folly/folly/Chrono.h +132 -0
  398. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  399. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  400. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  401. package/external/folly/folly/ConcurrentLazy.h +74 -0
  402. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  403. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  404. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  405. package/external/folly/folly/Conv.h +2026 -0
  406. package/external/folly/folly/CppAttributes.h +170 -0
  407. package/external/folly/folly/CpuId.h +297 -0
  408. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  409. package/external/folly/folly/Demangle.cpp +255 -0
  410. package/external/folly/folly/Demangle.h +73 -0
  411. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  412. package/external/folly/folly/DynamicConverter.h +17 -0
  413. package/external/folly/folly/Exception.h +150 -0
  414. package/external/folly/folly/ExceptionString.cpp +51 -0
  415. package/external/folly/folly/ExceptionString.h +33 -0
  416. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  417. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  418. package/external/folly/folly/ExceptionWrapper.h +377 -0
  419. package/external/folly/folly/Executor.cpp +111 -0
  420. package/external/folly/folly/Executor.h +351 -0
  421. package/external/folly/folly/Expected.h +1725 -0
  422. package/external/folly/folly/FBString.h +2888 -0
  423. package/external/folly/folly/FBVector.h +17 -0
  424. package/external/folly/folly/File.cpp +180 -0
  425. package/external/folly/folly/File.h +177 -0
  426. package/external/folly/folly/FileUtil.cpp +378 -0
  427. package/external/folly/folly/FileUtil.h +332 -0
  428. package/external/folly/folly/Fingerprint.cpp +135 -0
  429. package/external/folly/folly/Fingerprint.h +289 -0
  430. package/external/folly/folly/FixedString.h +2965 -0
  431. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  432. package/external/folly/folly/FollyMemcpy.h +23 -0
  433. package/external/folly/folly/FollyMemset.cpp +29 -0
  434. package/external/folly/folly/FollyMemset.h +25 -0
  435. package/external/folly/folly/Format-inl.h +1152 -0
  436. package/external/folly/folly/Format.cpp +429 -0
  437. package/external/folly/folly/Format.h +463 -0
  438. package/external/folly/folly/FormatArg.h +285 -0
  439. package/external/folly/folly/FormatTraits.h +65 -0
  440. package/external/folly/folly/Function.h +1159 -0
  441. package/external/folly/folly/GLog.h +85 -0
  442. package/external/folly/folly/GroupVarint.cpp +153 -0
  443. package/external/folly/folly/GroupVarint.h +630 -0
  444. package/external/folly/folly/Hash.h +20 -0
  445. package/external/folly/folly/IPAddress.cpp +490 -0
  446. package/external/folly/folly/IPAddress.h +667 -0
  447. package/external/folly/folly/IPAddressException.h +82 -0
  448. package/external/folly/folly/IPAddressV4.cpp +305 -0
  449. package/external/folly/folly/IPAddressV4.h +495 -0
  450. package/external/folly/folly/IPAddressV6.cpp +541 -0
  451. package/external/folly/folly/IPAddressV6.h +627 -0
  452. package/external/folly/folly/Indestructible.h +164 -0
  453. package/external/folly/folly/IndexedMemPool.h +550 -0
  454. package/external/folly/folly/IntrusiveList.h +17 -0
  455. package/external/folly/folly/Lazy.h +142 -0
  456. package/external/folly/folly/Likely.h +76 -0
  457. package/external/folly/folly/MPMCPipeline.h +280 -0
  458. package/external/folly/folly/MPMCQueue.h +1556 -0
  459. package/external/folly/folly/MacAddress.cpp +188 -0
  460. package/external/folly/folly/MacAddress.h +260 -0
  461. package/external/folly/folly/MapUtil.h +17 -0
  462. package/external/folly/folly/Math.h +258 -0
  463. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  464. package/external/folly/folly/Memory.h +900 -0
  465. package/external/folly/folly/MicroLock.cpp +76 -0
  466. package/external/folly/folly/MicroLock.h +354 -0
  467. package/external/folly/folly/MicroSpinLock.h +17 -0
  468. package/external/folly/folly/MoveWrapper.h +76 -0
  469. package/external/folly/folly/ObserverContainer.h +1026 -0
  470. package/external/folly/folly/Optional.h +743 -0
  471. package/external/folly/folly/Overload.h +325 -0
  472. package/external/folly/folly/PackedSyncPtr.h +147 -0
  473. package/external/folly/folly/Padded.h +464 -0
  474. package/external/folly/folly/Poly-inl.h +230 -0
  475. package/external/folly/folly/Poly.h +1095 -0
  476. package/external/folly/folly/PolyException.h +43 -0
  477. package/external/folly/folly/Portability.h +644 -0
  478. package/external/folly/folly/Preprocessor.h +236 -0
  479. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  480. package/external/folly/folly/RWSpinLock.h +17 -0
  481. package/external/folly/folly/Random-inl.h +86 -0
  482. package/external/folly/folly/Random.cpp +184 -0
  483. package/external/folly/folly/Random.h +434 -0
  484. package/external/folly/folly/Range.h +1772 -0
  485. package/external/folly/folly/Replaceable.h +636 -0
  486. package/external/folly/folly/ScopeGuard.cpp +29 -0
  487. package/external/folly/folly/ScopeGuard.h +420 -0
  488. package/external/folly/folly/SharedMutex.cpp +81 -0
  489. package/external/folly/folly/SharedMutex.h +1751 -0
  490. package/external/folly/folly/Singleton-inl.h +332 -0
  491. package/external/folly/folly/Singleton.cpp +512 -0
  492. package/external/folly/folly/Singleton.h +891 -0
  493. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  494. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  495. package/external/folly/folly/SocketAddress.cpp +786 -0
  496. package/external/folly/folly/SocketAddress.h +768 -0
  497. package/external/folly/folly/SpinLock.h +55 -0
  498. package/external/folly/folly/String-inl.h +668 -0
  499. package/external/folly/folly/String.cpp +777 -0
  500. package/external/folly/folly/String.h +767 -0
  501. package/external/folly/folly/Subprocess.cpp +1142 -0
  502. package/external/folly/folly/Subprocess.h +1055 -0
  503. package/external/folly/folly/Synchronized.h +1833 -0
  504. package/external/folly/folly/SynchronizedPtr.h +106 -0
  505. package/external/folly/folly/ThreadCachedInt.h +175 -0
  506. package/external/folly/folly/ThreadLocal.h +478 -0
  507. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  508. package/external/folly/folly/TimeoutQueue.h +123 -0
  509. package/external/folly/folly/TokenBucket.h +673 -0
  510. package/external/folly/folly/Traits.h +1442 -0
  511. package/external/folly/folly/Try-inl.h +372 -0
  512. package/external/folly/folly/Try.cpp +23 -0
  513. package/external/folly/folly/Try.h +728 -0
  514. package/external/folly/folly/UTF8String.h +56 -0
  515. package/external/folly/folly/Unicode.cpp +201 -0
  516. package/external/folly/folly/Unicode.h +94 -0
  517. package/external/folly/folly/Unit.h +65 -0
  518. package/external/folly/folly/Uri-inl.h +101 -0
  519. package/external/folly/folly/Uri.cpp +190 -0
  520. package/external/folly/folly/Uri.h +142 -0
  521. package/external/folly/folly/Utility.h +932 -0
  522. package/external/folly/folly/VERSION +1 -0
  523. package/external/folly/folly/Varint.h +230 -0
  524. package/external/folly/folly/VirtualExecutor.h +17 -0
  525. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  526. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  527. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  528. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  529. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  530. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  531. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  532. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  533. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  534. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  535. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  536. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  537. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  538. package/external/folly/folly/base64.h +264 -0
  539. package/external/folly/folly/chrono/BUCK +29 -0
  540. package/external/folly/folly/chrono/Clock.h +65 -0
  541. package/external/folly/folly/chrono/Conv.h +712 -0
  542. package/external/folly/folly/chrono/test/BUCK +26 -0
  543. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  544. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  545. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  546. package/external/folly/folly/concurrency/BUCK +170 -0
  547. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  548. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  549. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  550. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  551. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  552. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  553. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  554. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  555. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  556. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  557. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  558. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  559. package/external/folly/folly/concurrency/container/BUCK +77 -0
  560. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  561. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  562. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  563. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  564. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  565. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  566. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  567. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  568. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  569. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  570. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  571. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  572. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  573. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  574. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  575. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  576. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  577. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  578. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  579. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  580. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  581. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  582. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  583. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  584. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  585. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  586. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  587. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  588. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  589. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  590. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  591. package/external/folly/folly/concurrency/test/BUCK +229 -0
  592. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  593. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  594. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  595. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  596. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  597. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  598. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  599. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  600. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  601. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  602. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  603. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  604. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  605. package/external/folly/folly/container/Access.h +57 -0
  606. package/external/folly/folly/container/Array.h +87 -0
  607. package/external/folly/folly/container/BUCK +353 -0
  608. package/external/folly/folly/container/BitIterator.h +203 -0
  609. package/external/folly/folly/container/Enumerate.h +162 -0
  610. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  611. package/external/folly/folly/container/F14.md +300 -0
  612. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  613. package/external/folly/folly/container/F14Map.h +2108 -0
  614. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  615. package/external/folly/folly/container/F14Set.h +1603 -0
  616. package/external/folly/folly/container/FBVector.h +1711 -0
  617. package/external/folly/folly/container/Foreach-inl.h +316 -0
  618. package/external/folly/folly/container/Foreach.h +209 -0
  619. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  620. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  621. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  622. package/external/folly/folly/container/IntrusiveList.h +131 -0
  623. package/external/folly/folly/container/Iterator.h +843 -0
  624. package/external/folly/folly/container/MapUtil.h +376 -0
  625. package/external/folly/folly/container/Merge.h +90 -0
  626. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  627. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  628. package/external/folly/folly/container/Reserve.h +109 -0
  629. package/external/folly/folly/container/SparseByteSet.h +123 -0
  630. package/external/folly/folly/container/View.h +81 -0
  631. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  632. package/external/folly/folly/container/detail/BUCK +115 -0
  633. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  634. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  635. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  636. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  637. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  638. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  639. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  640. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  641. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  642. package/external/folly/folly/container/detail/Util.h +303 -0
  643. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  644. package/external/folly/folly/container/detail/test/BUCK +14 -0
  645. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  646. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  647. package/external/folly/folly/container/range_traits.h +81 -0
  648. package/external/folly/folly/container/small_vector.h +1476 -0
  649. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  650. package/external/folly/folly/container/span.h +408 -0
  651. package/external/folly/folly/container/tape.h +608 -0
  652. package/external/folly/folly/container/test/.clang-tidy +12 -0
  653. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  654. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  655. package/external/folly/folly/container/test/BUCK +568 -0
  656. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  657. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  658. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  659. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  660. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  661. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  662. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  663. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  664. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  665. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  666. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  667. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  668. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  669. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  670. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  671. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  672. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  673. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  674. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  675. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  676. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  677. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  678. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  679. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  680. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  681. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  682. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  683. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  684. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  685. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  686. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  687. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  688. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  689. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  690. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  691. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  692. package/external/folly/folly/container/test/span_test.cpp +520 -0
  693. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  694. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  695. package/external/folly/folly/defs.bzl +238 -0
  696. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  697. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  698. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  699. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  700. package/external/folly/folly/detail/BUCK +406 -0
  701. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  702. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  703. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  704. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  705. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  706. package/external/folly/folly/detail/Futex-inl.h +123 -0
  707. package/external/folly/folly/detail/Futex.cpp +273 -0
  708. package/external/folly/folly/detail/Futex.h +109 -0
  709. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  710. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  711. package/external/folly/folly/detail/IPAddress.h +57 -0
  712. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  713. package/external/folly/folly/detail/Iterators.h +156 -0
  714. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  715. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  716. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  717. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  718. package/external/folly/folly/detail/PerfScoped.h +70 -0
  719. package/external/folly/folly/detail/PolyDetail.h +921 -0
  720. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  721. package/external/folly/folly/detail/RangeCommon.h +93 -0
  722. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  723. package/external/folly/folly/detail/RangeSse42.h +30 -0
  724. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  725. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  726. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  727. package/external/folly/folly/detail/Singleton.h +34 -0
  728. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  729. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  730. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  731. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  732. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  733. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  734. package/external/folly/folly/detail/Sse.cpp +35 -0
  735. package/external/folly/folly/detail/Sse.h +45 -0
  736. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  737. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  738. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  739. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  740. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  741. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  742. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  743. package/external/folly/folly/detail/TypeList.h +551 -0
  744. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  745. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  746. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  747. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  748. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  749. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  750. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  751. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  752. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  753. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  754. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  755. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  756. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  757. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  758. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  759. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  760. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  761. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  762. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  763. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  764. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  765. package/external/folly/folly/detail/test/BUCK +118 -0
  766. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  767. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  768. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  769. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  770. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  771. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  772. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  773. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  774. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  775. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  776. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  777. package/external/folly/folly/docs/AtomicHashMap.md +134 -0
  778. package/external/folly/folly/docs/Benchmark.md +310 -0
  779. package/external/folly/folly/docs/Conv.md +291 -0
  780. package/external/folly/folly/docs/Dynamic.md +220 -0
  781. package/external/folly/folly/docs/DynamicConverter.md +71 -0
  782. package/external/folly/folly/docs/Executors.md +63 -0
  783. package/external/folly/folly/docs/FBString.md +46 -0
  784. package/external/folly/folly/docs/FBVector.md +200 -0
  785. package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
  786. package/external/folly/folly/docs/Format.md +177 -0
  787. package/external/folly/folly/docs/Function.md +92 -0
  788. package/external/folly/folly/docs/Futures.md +263 -0
  789. package/external/folly/folly/docs/GroupVarint.md +46 -0
  790. package/external/folly/folly/docs/Histogram.md +104 -0
  791. package/external/folly/folly/docs/MapUtils.md +80 -0
  792. package/external/folly/folly/docs/Overview.md +263 -0
  793. package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
  794. package/external/folly/folly/docs/Poly.md +500 -0
  795. package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
  796. package/external/folly/folly/docs/Rcu.md +218 -0
  797. package/external/folly/folly/docs/SmallLocks.md +24 -0
  798. package/external/folly/folly/docs/Synchronized.md +793 -0
  799. package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
  800. package/external/folly/folly/docs/ThreadLocal.md +105 -0
  801. package/external/folly/folly/docs/Traits.md +161 -0
  802. package/external/folly/folly/docs/small_vector.md +64 -0
  803. package/external/folly/folly/docs/style.css +23 -0
  804. package/external/folly/folly/dynamic-inl.h +17 -0
  805. package/external/folly/folly/dynamic.h +17 -0
  806. package/external/folly/folly/folly_extended_library.bzl +28 -0
  807. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  808. package/external/folly/folly/functional/BUCK +57 -0
  809. package/external/folly/folly/functional/Invoke.h +880 -0
  810. package/external/folly/folly/functional/Partial.h +130 -0
  811. package/external/folly/folly/functional/protocol.h +203 -0
  812. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  813. package/external/folly/folly/functional/test/BUCK +57 -0
  814. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  815. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  816. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  817. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  818. package/external/folly/folly/functional/traits.h +675 -0
  819. package/external/folly/folly/hash/BUCK +86 -0
  820. package/external/folly/folly/hash/Checksum.cpp +275 -0
  821. package/external/folly/folly/hash/Checksum.h +94 -0
  822. package/external/folly/folly/hash/FarmHash.h +46 -0
  823. package/external/folly/folly/hash/Hash.h +1045 -0
  824. package/external/folly/folly/hash/MurmurHash.h +86 -0
  825. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  826. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  827. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  828. package/external/folly/folly/hash/SpookyHashV2.h +339 -0
  829. package/external/folly/folly/hash/detail/BUCK +26 -0
  830. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  831. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  832. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  833. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  834. package/external/folly/folly/hash/test/BUCK +132 -0
  835. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  836. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  837. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  838. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  839. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  840. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  841. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  842. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  843. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  844. package/external/folly/folly/hash/traits.h +115 -0
  845. package/external/folly/folly/json/BUCK +155 -0
  846. package/external/folly/folly/json/DynamicConverter.h +464 -0
  847. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  848. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  849. package/external/folly/folly/json/DynamicParser.h +394 -0
  850. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  851. package/external/folly/folly/json/JSONSchema.h +73 -0
  852. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  853. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  854. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  855. package/external/folly/folly/json/bser/BUCK +24 -0
  856. package/external/folly/folly/json/bser/Bser.h +107 -0
  857. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  858. package/external/folly/folly/json/bser/Load.cpp +246 -0
  859. package/external/folly/folly/json/bser/test/BUCK +14 -0
  860. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  861. package/external/folly/folly/json/dynamic.cpp +552 -0
  862. package/external/folly/folly/json/dynamic.h +1346 -0
  863. package/external/folly/folly/json/json.h +238 -0
  864. package/external/folly/folly/json/json_patch.cpp +325 -0
  865. package/external/folly/folly/json/json_patch.h +126 -0
  866. package/external/folly/folly/json/json_pointer.cpp +114 -0
  867. package/external/folly/folly/json/json_pointer.h +87 -0
  868. package/external/folly/folly/json/test/BUCK +147 -0
  869. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  870. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  871. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  872. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  873. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  874. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  875. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  876. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  877. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  878. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  879. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  880. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  881. package/external/folly/folly/json/tool/BUCK +13 -0
  882. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  883. package/external/folly/folly/json.h +17 -0
  884. package/external/folly/folly/json_patch.h +17 -0
  885. package/external/folly/folly/json_pointer.h +17 -0
  886. package/external/folly/folly/lang/Access.h +29 -0
  887. package/external/folly/folly/lang/Align.h +240 -0
  888. package/external/folly/folly/lang/Aligned.h +92 -0
  889. package/external/folly/folly/lang/Assume.h +82 -0
  890. package/external/folly/folly/lang/BUCK +287 -0
  891. package/external/folly/folly/lang/Badge.h +108 -0
  892. package/external/folly/folly/lang/Bits.h +570 -0
  893. package/external/folly/folly/lang/BitsClass.h +312 -0
  894. package/external/folly/folly/lang/Builtin.h +74 -0
  895. package/external/folly/folly/lang/CArray.h +34 -0
  896. package/external/folly/folly/lang/CString.cpp +86 -0
  897. package/external/folly/folly/lang/CString.h +55 -0
  898. package/external/folly/folly/lang/Cast.h +51 -0
  899. package/external/folly/folly/lang/CheckedMath.h +253 -0
  900. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  901. package/external/folly/folly/lang/Exception.cpp +822 -0
  902. package/external/folly/folly/lang/Exception.h +716 -0
  903. package/external/folly/folly/lang/Extern.h +55 -0
  904. package/external/folly/folly/lang/Hint-inl.h +144 -0
  905. package/external/folly/folly/lang/Hint.h +238 -0
  906. package/external/folly/folly/lang/Keep.h +98 -0
  907. package/external/folly/folly/lang/New.h +124 -0
  908. package/external/folly/folly/lang/Ordering.h +140 -0
  909. package/external/folly/folly/lang/Pretty.h +159 -0
  910. package/external/folly/folly/lang/PropagateConst.h +413 -0
  911. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  912. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  913. package/external/folly/folly/lang/StaticConst.h +33 -0
  914. package/external/folly/folly/lang/Thunk.h +100 -0
  915. package/external/folly/folly/lang/TypeInfo.h +58 -0
  916. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  917. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  918. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  919. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  920. package/external/folly/folly/lang/test/BUCK +258 -0
  921. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  922. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  923. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  924. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  925. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  926. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  927. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  928. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  929. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  930. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  931. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  932. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  933. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  934. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  935. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  936. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  937. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  938. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  939. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  940. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  941. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  942. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  943. package/external/folly/folly/memcpy.S +292 -0
  944. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  945. package/external/folly/folly/memory/Arena-inl.h +83 -0
  946. package/external/folly/folly/memory/Arena.h +325 -0
  947. package/external/folly/folly/memory/BUCK +191 -0
  948. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  949. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  950. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  951. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  952. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  953. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  954. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  955. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  956. package/external/folly/folly/memory/Malloc.h +551 -0
  957. package/external/folly/folly/memory/MemoryResource.h +57 -0
  958. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  959. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  960. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  961. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  962. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  963. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  964. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  965. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  966. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  967. package/external/folly/folly/memory/detail/BUCK +10 -0
  968. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  969. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  970. package/external/folly/folly/memory/not_null-inl.h +522 -0
  971. package/external/folly/folly/memory/not_null.h +449 -0
  972. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  973. package/external/folly/folly/memory/test/BUCK +146 -0
  974. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  975. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  976. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  977. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  978. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  979. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  980. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  981. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  982. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  983. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  984. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  985. package/external/folly/folly/memset.S +245 -0
  986. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  987. package/external/folly/folly/portability/Asm.h +50 -0
  988. package/external/folly/folly/portability/Atomic.h +31 -0
  989. package/external/folly/folly/portability/BUCK +456 -0
  990. package/external/folly/folly/portability/Builtins.cpp +31 -0
  991. package/external/folly/folly/portability/Builtins.h +161 -0
  992. package/external/folly/folly/portability/Config.h +43 -0
  993. package/external/folly/folly/portability/Constexpr.h +145 -0
  994. package/external/folly/folly/portability/Dirent.cpp +140 -0
  995. package/external/folly/folly/portability/Dirent.h +41 -0
  996. package/external/folly/folly/portability/Event.h +44 -0
  997. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  998. package/external/folly/folly/portability/Fcntl.h +67 -0
  999. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  1000. package/external/folly/folly/portability/Filesystem.h +114 -0
  1001. package/external/folly/folly/portability/FmtCompile.h +40 -0
  1002. package/external/folly/folly/portability/GFlags.h +139 -0
  1003. package/external/folly/folly/portability/GMock.h +35 -0
  1004. package/external/folly/folly/portability/GTest.h +35 -0
  1005. package/external/folly/folly/portability/IOVec.h +34 -0
  1006. package/external/folly/folly/portability/Libgen.cpp +59 -0
  1007. package/external/folly/folly/portability/Libgen.h +29 -0
  1008. package/external/folly/folly/portability/Libunwind.h +21 -0
  1009. package/external/folly/folly/portability/Malloc.cpp +31 -0
  1010. package/external/folly/folly/portability/Malloc.h +53 -0
  1011. package/external/folly/folly/portability/Math.h +90 -0
  1012. package/external/folly/folly/portability/Memory.h +26 -0
  1013. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  1014. package/external/folly/folly/portability/OpenSSL.h +102 -0
  1015. package/external/folly/folly/portability/PThread.cpp +697 -0
  1016. package/external/folly/folly/portability/PThread.h +148 -0
  1017. package/external/folly/folly/portability/README.md +21 -0
  1018. package/external/folly/folly/portability/Sched.cpp +41 -0
  1019. package/external/folly/folly/portability/Sched.h +45 -0
  1020. package/external/folly/folly/portability/Sockets.cpp +245 -0
  1021. package/external/folly/folly/portability/Sockets.h +155 -0
  1022. package/external/folly/folly/portability/SourceLocation.h +49 -0
  1023. package/external/folly/folly/portability/Stdio.cpp +77 -0
  1024. package/external/folly/folly/portability/Stdio.h +32 -0
  1025. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  1026. package/external/folly/folly/portability/Stdlib.h +64 -0
  1027. package/external/folly/folly/portability/String.cpp +53 -0
  1028. package/external/folly/folly/portability/String.h +39 -0
  1029. package/external/folly/folly/portability/SysFile.cpp +46 -0
  1030. package/external/folly/folly/portability/SysFile.h +27 -0
  1031. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  1032. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  1033. package/external/folly/folly/portability/SysMman.cpp +242 -0
  1034. package/external/folly/folly/portability/SysMman.h +68 -0
  1035. package/external/folly/folly/portability/SysResource.cpp +108 -0
  1036. package/external/folly/folly/portability/SysResource.h +71 -0
  1037. package/external/folly/folly/portability/SysStat.cpp +66 -0
  1038. package/external/folly/folly/portability/SysStat.h +52 -0
  1039. package/external/folly/folly/portability/SysSyscall.h +73 -0
  1040. package/external/folly/folly/portability/SysTime.cpp +62 -0
  1041. package/external/folly/folly/portability/SysTime.h +50 -0
  1042. package/external/folly/folly/portability/SysTypes.h +44 -0
  1043. package/external/folly/folly/portability/SysUio.cpp +179 -0
  1044. package/external/folly/folly/portability/SysUio.h +51 -0
  1045. package/external/folly/folly/portability/Syslog.h +39 -0
  1046. package/external/folly/folly/portability/Time.cpp +357 -0
  1047. package/external/folly/folly/portability/Time.h +74 -0
  1048. package/external/folly/folly/portability/Unistd.h +111 -0
  1049. package/external/folly/folly/portability/Windows.h +108 -0
  1050. package/external/folly/folly/portability/openat2.c +30 -0
  1051. package/external/folly/folly/portability/openat2.h +39 -0
  1052. package/external/folly/folly/portability/test/BUCK +59 -0
  1053. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  1054. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  1055. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  1056. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  1057. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  1058. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  1059. package/external/folly/folly/small_vector.h +17 -0
  1060. package/external/folly/folly/somerge_defs.bzl +399 -0
  1061. package/external/folly/folly/sorted_vector_types.h +17 -0
  1062. package/external/folly/folly/stop_watch.h +317 -0
  1063. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  1064. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  1065. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  1066. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  1067. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  1068. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  1069. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  1070. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  1071. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  1072. package/external/folly/folly/synchronization/BUCK +418 -0
  1073. package/external/folly/folly/synchronization/Baton.h +419 -0
  1074. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  1075. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  1076. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  1077. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  1078. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  1079. package/external/folly/folly/synchronization/EventCount.h +200 -0
  1080. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  1081. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  1082. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  1083. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  1084. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  1085. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  1086. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  1087. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  1088. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  1089. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  1090. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  1091. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  1092. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  1093. package/external/folly/folly/synchronization/Latch.h +160 -0
  1094. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  1095. package/external/folly/folly/synchronization/Lock.h +887 -0
  1096. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  1097. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  1098. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  1099. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  1100. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  1101. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  1102. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  1103. package/external/folly/folly/synchronization/Rcu.h +553 -0
  1104. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  1105. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  1106. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  1107. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  1108. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  1109. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  1110. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  1111. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  1112. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  1113. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  1114. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  1115. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  1116. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  1117. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  1118. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  1119. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  1120. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  1121. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  1122. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  1123. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  1124. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  1125. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  1126. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  1127. package/external/folly/folly/synchronization/example/BUCK +27 -0
  1128. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  1129. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  1130. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  1131. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  1132. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  1133. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  1134. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  1135. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  1136. package/external/folly/folly/synchronization/test/BUCK +495 -0
  1137. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  1138. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  1139. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  1140. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  1141. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  1142. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  1143. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  1144. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  1145. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  1146. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  1147. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  1148. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  1149. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  1150. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  1151. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  1152. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  1153. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  1154. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  1155. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  1156. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  1157. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  1158. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  1159. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  1160. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  1161. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  1162. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  1163. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  1164. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  1165. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  1166. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  1167. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  1168. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  1169. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  1170. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  1171. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  1172. package/external/folly/folly/system/AtFork.cpp +205 -0
  1173. package/external/folly/folly/system/AtFork.h +116 -0
  1174. package/external/folly/folly/system/AuxVector.h +198 -0
  1175. package/external/folly/folly/system/BUCK +144 -0
  1176. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  1177. package/external/folly/folly/system/EnvUtil.h +113 -0
  1178. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  1179. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  1180. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  1181. package/external/folly/folly/system/MemoryMapping.h +287 -0
  1182. package/external/folly/folly/system/Pid.cpp +87 -0
  1183. package/external/folly/folly/system/Pid.h +34 -0
  1184. package/external/folly/folly/system/Shell.cpp +33 -0
  1185. package/external/folly/folly/system/Shell.h +93 -0
  1186. package/external/folly/folly/system/ThreadId.cpp +89 -0
  1187. package/external/folly/folly/system/ThreadId.h +62 -0
  1188. package/external/folly/folly/system/ThreadName.cpp +330 -0
  1189. package/external/folly/folly/system/ThreadName.h +72 -0
  1190. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  1191. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  1192. package/external/folly/folly/system/test/BUCK +120 -0
  1193. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  1194. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  1195. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  1196. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  1197. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  1198. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  1199. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  1200. package/external/folly/folly.vcxitems +164 -0
  1201. package/external/folly/static/logo.svg +1 -0
  1202. package/external/folly/sync-config.json +8 -0
  1203. package/index.js +9 -0
  1204. package/index.windows.js +9 -0
  1205. package/jest/RefreshControlMock.js +2 -2
  1206. package/jest/assetFileTransformer.js +8 -3
  1207. package/jest/mockComponent.js +3 -4
  1208. package/jest/mockNativeComponent.js +1 -1
  1209. package/jest/mocks/ActivityIndicator.js +2 -2
  1210. package/jest/mocks/Image.js +2 -2
  1211. package/jest/mocks/Modal.js +2 -2
  1212. package/jest/mocks/RefreshControl.js +3 -3
  1213. package/jest/mocks/RendererProxy.js +2 -2
  1214. package/jest/mocks/ScrollView.js +5 -5
  1215. package/jest/mocks/Text.js +2 -2
  1216. package/jest/mocks/TextInput.js +2 -2
  1217. package/jest/mocks/View.js +2 -2
  1218. package/jest/mocks/ViewNativeComponent.js +1 -1
  1219. package/jest/mocks/requireNativeComponent.js +1 -1
  1220. package/jest/mocks/useColorScheme.js +1 -1
  1221. package/jest/setup.js +68 -31
  1222. package/package.json +28 -23
  1223. package/src/private/animated/NativeAnimatedHelper.js +2 -2
  1224. package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
  1225. package/src/private/components/virtualview/VirtualView.js +14 -21
  1226. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
  1227. package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
  1228. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
  1229. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
  1230. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
  1231. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  1232. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
  1233. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
  1234. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
  1235. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
  1236. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  1237. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  1238. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
  1239. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
  1240. package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
  1241. package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
  1242. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
  1243. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
  1244. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
  1245. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  1246. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  1247. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  1248. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  1249. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  1250. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  1251. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
  1252. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
  1253. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  1254. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
  1255. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +7 -3
  1256. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  1257. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  1258. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  1259. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  1260. package/src/private/styles/composeStyles.js +1 -1
  1261. package/src/private/utilities/toError.js +27 -0
  1262. package/src/private/utilities/toExtendedError.js +30 -0
  1263. package/src/private/webapis/dom/events/Event.js +1 -1
  1264. package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
  1265. package/src/private/webapis/dom/events/EventTarget.js +3 -3
  1266. package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
  1267. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  1268. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
  1269. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
  1270. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  1271. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  1272. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  1273. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
  1274. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
  1275. package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
  1276. package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
  1277. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  1278. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
  1279. package/src/private/webapis/performance/LongTasks.js +3 -3
  1280. package/src/private/webapis/performance/Performance.js +4 -4
  1281. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  1282. package/src/private/webapis/performance/PerformanceObserver.js +2 -2
  1283. package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
  1284. package/src/private/webapis/structuredClone/structuredClone.js +2 -2
  1285. package/src/types/globals.d.ts +4 -4
  1286. package/template/cpp-lib/proj/MyLib.sln +0 -33
  1287. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  1288. package/template/cs-lib/proj/MyLib.sln +0 -33
  1289. package/template/metro.config.js +12 -2
  1290. package/templates/cpp-app/metro.config.js +12 -2
  1291. package/templates/cpp-app/windows/MyApp/MyApp.cpp +9 -6
  1292. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
  1293. package/templates/cpp-app/windows/MyApp.sln +0 -33
  1294. package/templates/cpp-lib/example/metro.config.js +30 -4
  1295. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
  1296. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  1297. package/types/index.d.ts +2 -0
  1298. package/Folly/Folly.vcxproj +0 -378
  1299. package/Folly/Folly.vcxproj.filters +0 -558
  1300. package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
  1301. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +0 -64
  1302. package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
  1303. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +0 -75
  1304. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +0 -27
  1305. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +0 -81
  1306. package/Microsoft.ReactNative/Modules/CreateModules.cpp +0 -24
  1307. package/Microsoft.ReactNative/ReactSupport.cpp +0 -221
  1308. package/Microsoft.ReactNative/ReactSupport.h +0 -13
  1309. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.cpp +0 -107
  1310. package/Microsoft.ReactNative/Utils/UwpPreparedScriptStore.h +0 -62
  1311. package/Microsoft.ReactNative/Utils/UwpScriptStore.cpp +0 -56
  1312. package/Microsoft.ReactNative/Utils/UwpScriptStore.h +0 -23
  1313. package/Microsoft.ReactNative/XamlUIService.cpp +0 -68
  1314. package/Microsoft.ReactNative/XamlUIService.h +0 -37
  1315. package/Microsoft.ReactNative/XamlUIService.idl +0 -53
  1316. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/CxxNativeModule.cpp +0 -259
  1317. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/Instance.cpp +0 -381
  1318. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +0 -145
  1319. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/MethodCall.cpp +0 -100
  1320. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ModuleRegistry.cpp +0 -256
  1321. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +0 -363
  1322. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/RAMBundleRegistry.cpp +0 -93
  1323. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -148
  1324. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/TraceSection.h +0 -190
  1325. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSINativeModules.cpp +0 -123
  1326. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleWithJSIBindings.cpp +0 -27
  1327. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/webperformance/NativePerformance.cpp +0 -414
  1328. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +0 -91
  1329. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -80
  1330. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +0 -138
  1331. package/fmt/fmt.vcxproj +0 -153
  1332. package/fmt/fmt.vcxproj.filters +0 -59
  1333. package/fmt/pch.cpp +0 -4
  1334. package/fmt/pch.h +0 -2
  1335. /package/{fmt → external/fmt}/cgmanifest.json +0 -0
  1336. /package/{Folly → external/folly}/Folly.natvis +0 -0
  1337. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  1338. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  1339. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  1340. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  1341. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  1342. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  1343. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  1344. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  1345. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  1346. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  1347. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,2108 @@
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
+ /**
20
+ * F14NodeMap, F14ValueMap, and F14VectorMap
21
+ *
22
+ * F14FastMap conditionally works like F14ValueMap or F14VectorMap
23
+ *
24
+ * See F14.md
25
+ */
26
+
27
+ #include <cstddef>
28
+ #include <initializer_list>
29
+ #include <stdexcept>
30
+ #include <tuple>
31
+
32
+ #include <folly/Portability.h>
33
+ #include <folly/Range.h>
34
+ #include <folly/Traits.h>
35
+ #include <folly/container/View.h>
36
+ #include <folly/lang/Exception.h>
37
+ #include <folly/lang/SafeAssert.h>
38
+
39
+ #include <folly/container/F14Map-fwd.h>
40
+ #include <folly/container/Iterator.h>
41
+ #include <folly/container/detail/F14MapFallback.h>
42
+ #include <folly/container/detail/F14Policy.h>
43
+ #include <folly/container/detail/F14Table.h>
44
+ #include <folly/container/detail/Util.h>
45
+
46
+ namespace folly {
47
+
48
+ #if FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
49
+
50
+ //////// Common case for supported platforms
51
+
52
+ namespace f14 {
53
+ namespace detail {
54
+
55
+ template <typename Policy>
56
+ class F14BasicMap {
57
+ template <typename K, typename T>
58
+ using EnableHeterogeneousFind = std::enable_if_t<
59
+ ::folly::detail::EligibleForHeterogeneousFind<
60
+ typename Policy::Key,
61
+ typename Policy::Hasher,
62
+ typename Policy::KeyEqual,
63
+ K>::value,
64
+ T>;
65
+
66
+ template <typename K, typename T>
67
+ using EnableHeterogeneousInsert = std::enable_if_t<
68
+ ::folly::detail::EligibleForHeterogeneousInsert<
69
+ typename Policy::Key,
70
+ typename Policy::Hasher,
71
+ typename Policy::KeyEqual,
72
+ K>::value,
73
+ T>;
74
+
75
+ template <typename K>
76
+ using IsIter = Disjunction<
77
+ std::is_same<typename Policy::Iter, remove_cvref_t<K>>,
78
+ std::is_same<typename Policy::ConstIter, remove_cvref_t<K>>>;
79
+
80
+ template <typename K, typename T>
81
+ using EnableHeterogeneousErase = std::enable_if_t<
82
+ ::folly::detail::EligibleForHeterogeneousFind<
83
+ typename Policy::Key,
84
+ typename Policy::Hasher,
85
+ typename Policy::KeyEqual,
86
+ std::conditional_t<IsIter<K>::value, typename Policy::Key, K>>::
87
+ value &&
88
+ !IsIter<K>::value,
89
+ T>;
90
+
91
+ public:
92
+ //// PUBLIC - Member types
93
+
94
+ using key_type = typename Policy::Key;
95
+ using mapped_type = typename Policy::Mapped;
96
+ using value_type = typename Policy::Value;
97
+ using size_type = std::size_t;
98
+ using difference_type = std::ptrdiff_t;
99
+ using hash_token_type = F14HashToken;
100
+ using hasher = typename Policy::Hasher;
101
+ using key_equal = typename Policy::KeyEqual;
102
+ using allocator_type = typename Policy::Alloc;
103
+ using reference = value_type&;
104
+ using const_reference = value_type const&;
105
+ using pointer = typename Policy::AllocTraits::pointer;
106
+ using const_pointer = typename Policy::AllocTraits::const_pointer;
107
+ using iterator = typename Policy::Iter;
108
+ using const_iterator = typename Policy::ConstIter;
109
+
110
+ private:
111
+ using ItemIter = typename Policy::ItemIter;
112
+
113
+ public:
114
+ //// PUBLIC - Member functions
115
+
116
+ F14BasicMap() noexcept(Policy::kDefaultConstructIsNoexcept) : table_{} {}
117
+
118
+ explicit F14BasicMap(
119
+ std::size_t initialCapacity,
120
+ hasher const& hash = hasher{},
121
+ key_equal const& eq = key_equal{},
122
+ allocator_type const& alloc = allocator_type{})
123
+ : table_{initialCapacity, hash, eq, alloc} {}
124
+
125
+ explicit F14BasicMap(std::size_t initialCapacity, allocator_type const& alloc)
126
+ : F14BasicMap(initialCapacity, hasher{}, key_equal{}, alloc) {}
127
+
128
+ explicit F14BasicMap(
129
+ std::size_t initialCapacity,
130
+ hasher const& hash,
131
+ allocator_type const& alloc)
132
+ : F14BasicMap(initialCapacity, hash, key_equal{}, alloc) {}
133
+
134
+ explicit F14BasicMap(allocator_type const& alloc)
135
+ : F14BasicMap(0, hasher{}, key_equal{}, alloc) {}
136
+
137
+ template <typename InputIt>
138
+ F14BasicMap(
139
+ InputIt first,
140
+ InputIt last,
141
+ std::size_t initialCapacity = 0,
142
+ hasher const& hash = hasher{},
143
+ key_equal const& eq = key_equal{},
144
+ allocator_type const& alloc = allocator_type{})
145
+ : table_{initialCapacity, hash, eq, alloc} {
146
+ initialInsert(std::move(first), std::move(last), initialCapacity);
147
+ }
148
+
149
+ template <typename InputIt>
150
+ F14BasicMap(
151
+ InputIt first,
152
+ InputIt last,
153
+ std::size_t initialCapacity,
154
+ allocator_type const& alloc)
155
+ : table_{initialCapacity, hasher{}, key_equal{}, alloc} {
156
+ initialInsert(std::move(first), std::move(last), initialCapacity);
157
+ }
158
+
159
+ template <typename InputIt>
160
+ F14BasicMap(
161
+ InputIt first,
162
+ InputIt last,
163
+ std::size_t initialCapacity,
164
+ hasher const& hash,
165
+ allocator_type const& alloc)
166
+ : table_{initialCapacity, hash, key_equal{}, alloc} {
167
+ initialInsert(std::move(first), std::move(last), initialCapacity);
168
+ }
169
+
170
+ F14BasicMap(F14BasicMap const& rhs) = default;
171
+
172
+ F14BasicMap(F14BasicMap const& rhs, allocator_type const& alloc)
173
+ : table_{rhs.table_, alloc} {}
174
+
175
+ F14BasicMap(F14BasicMap&& rhs) = default;
176
+
177
+ F14BasicMap(F14BasicMap&& rhs, allocator_type const& alloc) noexcept(
178
+ Policy::kAllocIsAlwaysEqual)
179
+ : table_{std::move(rhs.table_), alloc} {}
180
+
181
+ /* implicit */ F14BasicMap(
182
+ std::initializer_list<value_type> init,
183
+ std::size_t initialCapacity = 0,
184
+ hasher const& hash = hasher{},
185
+ key_equal const& eq = key_equal{},
186
+ allocator_type const& alloc = allocator_type{})
187
+ : table_{initialCapacity, hash, eq, alloc} {
188
+ initialInsert(init.begin(), init.end(), initialCapacity);
189
+ }
190
+
191
+ F14BasicMap(
192
+ std::initializer_list<value_type> init,
193
+ std::size_t initialCapacity,
194
+ allocator_type const& alloc)
195
+ : table_{initialCapacity, hasher{}, key_equal{}, alloc} {
196
+ initialInsert(init.begin(), init.end(), initialCapacity);
197
+ }
198
+
199
+ F14BasicMap(
200
+ std::initializer_list<value_type> init,
201
+ std::size_t initialCapacity,
202
+ hasher const& hash,
203
+ allocator_type const& alloc)
204
+ : table_{initialCapacity, hash, key_equal{}, alloc} {
205
+ initialInsert(init.begin(), init.end(), initialCapacity);
206
+ }
207
+
208
+ F14BasicMap& operator=(F14BasicMap const&) = default;
209
+
210
+ F14BasicMap& operator=(F14BasicMap&&) = default;
211
+
212
+ F14BasicMap& operator=(std::initializer_list<value_type> ilist) {
213
+ clear();
214
+ bulkInsert(ilist.begin(), ilist.end(), true);
215
+ return *this;
216
+ }
217
+
218
+ /// Get the allocator for this container.
219
+ /// @methodset Allocator
220
+ allocator_type get_allocator() const noexcept { return table_.alloc(); }
221
+
222
+ //// PUBLIC - Iterators
223
+
224
+ /// Get an iterator to the beginning
225
+ /// @methodset Iterators
226
+ iterator begin() noexcept { return table_.makeIter(table_.begin()); }
227
+ const_iterator begin() const noexcept { return cbegin(); }
228
+ /// Get an iterator to the beginning
229
+ /// @methodset Iterators
230
+ const_iterator cbegin() const noexcept {
231
+ return table_.makeConstIter(table_.begin());
232
+ }
233
+
234
+ /// Get an iterator to the end
235
+ /// @methodset Iterators
236
+ iterator end() noexcept { return table_.makeIter(table_.end()); }
237
+ const_iterator end() const noexcept { return cend(); }
238
+ /// Get an iterator to the end
239
+ /// @methodset Iterators
240
+ const_iterator cend() const noexcept {
241
+ return table_.makeConstIter(table_.end());
242
+ }
243
+
244
+ //// PUBLIC - Capacity
245
+
246
+ /// Check if this container has any elements.
247
+ /// @methodset Capacity
248
+ bool empty() const noexcept { return table_.empty(); }
249
+
250
+ /// Number of elements in this container.
251
+ /// @methodset Capacity
252
+ std::size_t size() const noexcept { return table_.size(); }
253
+
254
+ /// The maximum size of this container.
255
+ /// @methodset Capacity
256
+ std::size_t max_size() const noexcept { return table_.max_size(); }
257
+
258
+ //// PUBLIC - Modifiers
259
+
260
+ /**
261
+ * Remove all elements.
262
+ * @methodset Modifiers
263
+ *
264
+ * Frees heap-allocated memory; bucket_count is returned to 0.
265
+ */
266
+ void clear() noexcept { table_.clear(); }
267
+
268
+ /**
269
+ * Add a single element.
270
+ * @overloadbrief Add elements.
271
+ * @methodset Modifiers
272
+ */
273
+ std::pair<iterator, bool> insert(value_type const& value) {
274
+ return emplace(value);
275
+ }
276
+
277
+ /// Add a single element, of a heterogeneous type.
278
+ template <typename P>
279
+ std::enable_if_t<
280
+ std::is_constructible<value_type, P&&>::value,
281
+ std::pair<iterator, bool>>
282
+ insert(P&& value) {
283
+ return emplace(std::forward<P>(value));
284
+ }
285
+
286
+ /**
287
+ * Add a single element, of a heterogeneous type.
288
+ *
289
+ * TODO(T31574848): Work around libstdc++ versions (e.g., GCC < 6) with no
290
+ * implementation of N4387 ("perfect initialization" for pairs and tuples).
291
+ */
292
+ template <typename U1, typename U2>
293
+ std::enable_if_t<
294
+ std::is_constructible<key_type, U1 const&>::value &&
295
+ std::is_constructible<mapped_type, U2 const&>::value,
296
+ std::pair<iterator, bool>>
297
+ insert(std::pair<U1, U2> const& value) {
298
+ return emplace(value);
299
+ }
300
+
301
+ /**
302
+ * Add a single element, of a heterogeneous type.
303
+ *
304
+ * TODO(T31574848): Work around libstdc++ versions (e.g., GCC < 6) with no
305
+ * implementation of N4387 ("perfect initialization" for pairs and tuples).
306
+ */
307
+ template <typename U1, typename U2>
308
+ std::enable_if_t<
309
+ std::is_constructible<key_type, U1&&>::value &&
310
+ std::is_constructible<mapped_type, U2&&>::value,
311
+ std::pair<iterator, bool>>
312
+ insert(std::pair<U1, U2>&& value) {
313
+ return emplace(std::move(value));
314
+ }
315
+
316
+ /// Add a single element.
317
+ std::pair<iterator, bool> insert(value_type&& value) {
318
+ return emplace(std::move(value));
319
+ }
320
+
321
+ // std::unordered_map's hinted insertion API is misleading. No
322
+ // implementation I've seen actually uses the hint. Code restructuring
323
+ // by the caller to use the hinted API is at best unnecessary, and at
324
+ // worst a pessimization. It is used, however, so we provide it.
325
+
326
+ /// Add a single element, with a locational hint.
327
+ iterator insert(const_iterator /*hint*/, value_type const& value) {
328
+ return insert(value).first;
329
+ }
330
+
331
+ /// Add a single element, of heterogeneous type, with a locational hint.
332
+ template <typename P>
333
+ std::enable_if_t<std::is_constructible<value_type, P&&>::value, iterator>
334
+ insert(const_iterator /*hint*/, P&& value) {
335
+ return insert(std::forward<P>(value)).first;
336
+ }
337
+
338
+ /// Add a single element, with a locational hint.
339
+ iterator insert(const_iterator /*hint*/, value_type&& value) {
340
+ return insert(std::move(value)).first;
341
+ }
342
+
343
+ /// Emplace with hint.
344
+ /// @methodset Modifiers
345
+ template <class... Args>
346
+ iterator emplace_hint(const_iterator /*hint*/, Args&&... args) {
347
+ return emplace(std::forward<Args>(args)...).first;
348
+ }
349
+
350
+ private:
351
+ template <class InputIt>
352
+ FOLLY_ALWAYS_INLINE void bulkInsert(
353
+ InputIt first, InputIt last, bool autoReserve) {
354
+ if (autoReserve) {
355
+ auto n = std::distance(first, last);
356
+ if (n == 0) {
357
+ return;
358
+ }
359
+ table_.reserveForInsert(n);
360
+ }
361
+ while (first != last) {
362
+ insert(*first);
363
+ ++first;
364
+ }
365
+ }
366
+
367
+ template <class InputIt>
368
+ void initialInsert(InputIt first, InputIt last, std::size_t initialCapacity) {
369
+ FOLLY_SAFE_DCHECK(empty() && bucket_count() >= initialCapacity, "");
370
+
371
+ // It's possible that there are a lot of duplicates in first..last and
372
+ // so we will oversize ourself. The common case, however, is that
373
+ // we can avoid a lot of rehashing if we pre-expand. The behavior
374
+ // is easy to disable at a particular call site by asking for an
375
+ // initialCapacity of 1.
376
+ bool autoReserve =
377
+ std::is_base_of<
378
+ std::random_access_iterator_tag,
379
+ typename std::iterator_traits<InputIt>::iterator_category>::value &&
380
+ initialCapacity == 0;
381
+ bulkInsert(std::move(first), std::move(last), autoReserve);
382
+ }
383
+
384
+ public:
385
+ /// Add elements
386
+ template <class InputIt>
387
+ void insert(InputIt first, InputIt last) {
388
+ // Bulk reserve is a heuristic choice, so it can backfire. We restrict
389
+ // ourself to situations that mimic bulk construction without an
390
+ // explicit initialCapacity.
391
+ bool autoReserve =
392
+ std::is_base_of<
393
+ std::random_access_iterator_tag,
394
+ typename std::iterator_traits<InputIt>::iterator_category>::value &&
395
+ bucket_count() == 0;
396
+ bulkInsert(std::move(first), std::move(last), autoReserve);
397
+ }
398
+
399
+ /// Add elements from an initializer list
400
+ void insert(std::initializer_list<value_type> ilist) {
401
+ insert(ilist.begin(), ilist.end());
402
+ }
403
+
404
+ /// Insert if the key is missing, overwrite using operator= if present.
405
+ /// @methodset Modifiers
406
+ template <typename M>
407
+ std::pair<iterator, bool> insert_or_assign(key_type const& key, M&& obj) {
408
+ auto rv = try_emplace(key, std::forward<M>(obj));
409
+ if (!rv.second) {
410
+ rv.first->second = std::forward<M>(obj);
411
+ }
412
+ return rv;
413
+ }
414
+
415
+ template <typename M>
416
+ std::pair<iterator, bool> insert_or_assign(key_type&& key, M&& obj) {
417
+ auto rv = try_emplace(std::move(key), std::forward<M>(obj));
418
+ if (!rv.second) {
419
+ rv.first->second = std::forward<M>(obj);
420
+ }
421
+ return rv;
422
+ }
423
+
424
+ template <typename M>
425
+ std::pair<iterator, bool> insert_or_assign(
426
+ F14HashToken const& token, key_type const& key, M&& obj) {
427
+ auto rv = try_emplace_token(token, key, std::forward<M>(obj));
428
+ if (!rv.second) {
429
+ rv.first->second = std::forward<M>(obj);
430
+ }
431
+ return rv;
432
+ }
433
+
434
+ template <typename M>
435
+ std::pair<iterator, bool> insert_or_assign(
436
+ const F14HashedKey<key_type, hasher>& hashedKey, M&& obj) {
437
+ return insert_or_assign(
438
+ hashedKey.getHashToken(), hashedKey.getKey(), std::forward<M>(obj));
439
+ }
440
+
441
+ template <typename M>
442
+ std::pair<iterator, bool> insert_or_assign(
443
+ F14HashToken const& token, key_type&& key, M&& obj) {
444
+ auto rv = try_emplace_token(token, std::move(key), std::forward<M>(obj));
445
+ if (!rv.second) {
446
+ rv.first->second = std::forward<M>(obj);
447
+ }
448
+ return rv;
449
+ }
450
+
451
+ template <typename M>
452
+ std::pair<iterator, bool> insert_or_assign(
453
+ F14HashedKey<key_type, hasher>&& hashedKey, M&& obj) {
454
+ return insert_or_assign(
455
+ hashedKey.getHashToken(),
456
+ std::move(hashedKey.getKey()),
457
+ std::forward<M>(obj));
458
+ }
459
+
460
+ template <typename M>
461
+ iterator insert_or_assign(
462
+ const_iterator /*hint*/, key_type const& key, M&& obj) {
463
+ return insert_or_assign(key, std::forward<M>(obj)).first;
464
+ }
465
+
466
+ template <typename M>
467
+ iterator insert_or_assign(const_iterator /*hint*/, key_type&& key, M&& obj) {
468
+ return insert_or_assign(std::move(key), std::forward<M>(obj)).first;
469
+ }
470
+
471
+ template <typename K, typename M>
472
+ EnableHeterogeneousInsert<K, std::pair<iterator, bool>> insert_or_assign(
473
+ K&& key, M&& obj) {
474
+ auto rv = try_emplace(std::forward<K>(key), std::forward<M>(obj));
475
+ if (!rv.second) {
476
+ rv.first->second = std::forward<M>(obj);
477
+ }
478
+ return rv;
479
+ }
480
+
481
+ template <typename K, typename M>
482
+ EnableHeterogeneousInsert<K, std::pair<iterator, bool>> insert_or_assign(
483
+ F14HashToken const& token, K&& key, M&& obj) {
484
+ auto rv = try_emplace(token, std::forward<K>(key), std::forward<M>(obj));
485
+ if (!rv.second) {
486
+ rv.first->second = std::forward<M>(obj);
487
+ }
488
+ return rv;
489
+ }
490
+
491
+ private:
492
+ template <typename Arg>
493
+ using UsableAsKey = ::folly::detail::
494
+ EligibleForHeterogeneousFind<key_type, hasher, key_equal, Arg>;
495
+
496
+ public:
497
+ /**
498
+ * Add an element by constructing it in-place.
499
+ * @overloadbrief Add elements in-place.
500
+ * @methodset Modifiers
501
+ */
502
+ template <typename... Args>
503
+ std::pair<iterator, bool> emplace(Args&&... args) {
504
+ auto rv =
505
+ folly::detail::callWithExtractedKey<key_type, mapped_type, UsableAsKey>(
506
+ table_.alloc(),
507
+ [&](auto&&... inner) {
508
+ return table_.tryEmplaceValue(
509
+ std::forward<decltype(inner)>(inner)...);
510
+ },
511
+ std::forward<Args>(args)...);
512
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
513
+ }
514
+
515
+ /**
516
+ * Add an element by constructing it in-place.
517
+ * @methodset Modifiers
518
+ *
519
+ * Does nothing if the key already exists.
520
+ */
521
+ template <typename... Args>
522
+ std::pair<iterator, bool> try_emplace(key_type const& key, Args&&... args) {
523
+ auto rv = table_.tryEmplaceValue(
524
+ key,
525
+ std::piecewise_construct,
526
+ std::forward_as_tuple(key),
527
+ std::forward_as_tuple(std::forward<Args>(args)...));
528
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
529
+ }
530
+
531
+ template <typename... Args>
532
+ std::pair<iterator, bool> try_emplace(key_type&& key, Args&&... args) {
533
+ auto rv = table_.tryEmplaceValue(
534
+ key,
535
+ std::piecewise_construct,
536
+ std::forward_as_tuple(std::move(key)),
537
+ std::forward_as_tuple(std::forward<Args>(args)...));
538
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
539
+ }
540
+
541
+ /// @copydoc try_emplace
542
+ template <typename... Args>
543
+ std::pair<iterator, bool> try_emplace_token(
544
+ F14HashToken const& token, key_type const& key, Args&&... args) {
545
+ auto rv = table_.tryEmplaceValueWithToken(
546
+ token,
547
+ key,
548
+ std::piecewise_construct,
549
+ std::forward_as_tuple(key),
550
+ std::forward_as_tuple(std::forward<Args>(args)...));
551
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
552
+ }
553
+
554
+ template <typename... Args>
555
+ std::pair<iterator, bool> try_emplace_token(
556
+ const F14HashedKey<key_type, hasher>& hashedKey, Args&&... args) {
557
+ return try_emplace_token(
558
+ hashedKey.getHashToken(),
559
+ hashedKey.getKey(),
560
+ std::forward<Args>(args)...);
561
+ }
562
+
563
+ template <typename... Args>
564
+ std::pair<iterator, bool> try_emplace_token(
565
+ F14HashToken const& token, key_type&& key, Args&&... args) {
566
+ auto rv = table_.tryEmplaceValueWithToken(
567
+ token,
568
+ key,
569
+ std::piecewise_construct,
570
+ std::forward_as_tuple(std::move(key)),
571
+ std::forward_as_tuple(std::forward<Args>(args)...));
572
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
573
+ }
574
+
575
+ template <typename... Args>
576
+ std::pair<iterator, bool> try_emplace_token(
577
+ F14HashedKey<key_type, hasher>&& hashedKey, Args&&... args) {
578
+ return try_emplace_token(
579
+ hashedKey.getHashToken(),
580
+ std::move(hashedKey.getKey()),
581
+ std::forward<Args>(args)...);
582
+ }
583
+
584
+ template <typename... Args>
585
+ iterator try_emplace(
586
+ const_iterator /*hint*/, key_type const& key, Args&&... args) {
587
+ auto rv = table_.tryEmplaceValue(
588
+ key,
589
+ std::piecewise_construct,
590
+ std::forward_as_tuple(key),
591
+ std::forward_as_tuple(std::forward<Args>(args)...));
592
+ return table_.makeIter(rv.first);
593
+ }
594
+
595
+ template <typename... Args>
596
+ iterator try_emplace(
597
+ const_iterator /*hint*/, key_type&& key, Args&&... args) {
598
+ auto rv = table_.tryEmplaceValue(
599
+ key,
600
+ std::piecewise_construct,
601
+ std::forward_as_tuple(std::move(key)),
602
+ std::forward_as_tuple(std::forward<Args>(args)...));
603
+ return table_.makeIter(rv.first);
604
+ }
605
+
606
+ template <typename K, typename... Args>
607
+ EnableHeterogeneousInsert<K, std::pair<iterator, bool>> try_emplace(
608
+ K&& key, Args&&... args) {
609
+ auto rv = table_.tryEmplaceValue(
610
+ key,
611
+ std::piecewise_construct,
612
+ std::forward_as_tuple(std::forward<K>(key)),
613
+ std::forward_as_tuple(std::forward<Args>(args)...));
614
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
615
+ }
616
+
617
+ template <typename K, typename... Args>
618
+ EnableHeterogeneousInsert<K, std::pair<iterator, bool>> try_emplace_token(
619
+ F14HashToken const& token, K&& key, Args&&... args) {
620
+ auto rv = table_.tryEmplaceValueWithToken(
621
+ token,
622
+ key,
623
+ std::piecewise_construct,
624
+ std::forward_as_tuple(std::forward<K>(key)),
625
+ std::forward_as_tuple(std::forward<Args>(args)...));
626
+ return std::make_pair(table_.makeIter(rv.first), rv.second);
627
+ }
628
+
629
+ /**
630
+ * Remove element at a specific position (iterator).
631
+ * @overloadbrief Remove elements.
632
+ * @methodset Modifiers
633
+ */
634
+ FOLLY_ALWAYS_INLINE iterator erase(const_iterator pos) {
635
+ return eraseInto(pos, variadic_noop);
636
+ }
637
+
638
+ /**
639
+ * Remove element at a specific position (iterator).
640
+ *
641
+ * This form avoids ambiguity when key_type has a templated constructor
642
+ * that accepts const_iterator
643
+ */
644
+ FOLLY_ALWAYS_INLINE iterator erase(iterator pos) {
645
+ return eraseInto(pos, variadic_noop);
646
+ }
647
+
648
+ /// Remove a range of elements.
649
+ iterator erase(const_iterator first, const_iterator last) {
650
+ return eraseInto(first, last, variadic_noop);
651
+ }
652
+
653
+ /// Remove a specific key.
654
+ size_type erase(key_type const& key) { return eraseInto(key, variadic_noop); }
655
+
656
+ /// Remove a key, using a heterogeneous representation.
657
+ template <typename K>
658
+ EnableHeterogeneousErase<K, size_type> erase(K const& key) {
659
+ return eraseInto(key, variadic_noop);
660
+ }
661
+
662
+ protected:
663
+ template <typename BeforeDestroy>
664
+ FOLLY_ALWAYS_INLINE void tableEraseIterInto(
665
+ ItemIter pos, BeforeDestroy&& beforeDestroy) {
666
+ table_.eraseIterInto(pos, [&](value_type&& v) {
667
+ auto p = Policy::moveValue(v);
668
+ beforeDestroy(std::move(p.first), std::move(p.second));
669
+ });
670
+ }
671
+
672
+ template <typename K, typename BeforeDestroy>
673
+ FOLLY_ALWAYS_INLINE std::size_t tableEraseKeyInto(
674
+ K const& key, BeforeDestroy&& beforeDestroy) {
675
+ return table_.eraseKeyInto(key, [&](value_type&& v) {
676
+ auto p = Policy::moveValue(v);
677
+ beforeDestroy(std::move(p.first), std::move(p.second));
678
+ });
679
+ }
680
+
681
+ public:
682
+ /**
683
+ * Callback-erase a single iterator.
684
+ * @overloadbrief Erase with pre-destruction callback.
685
+ * @methodset Modifiers
686
+ *
687
+ * eraseInto contains the same overloads as erase but provides
688
+ * an additional callback argument which is called with an rvalue
689
+ * reference (not const) to the key and an rvalue reference to the
690
+ * mapped value directly before it is destroyed. This can be used
691
+ * to extract an entry out of a F14Map while avoiding a copy.
692
+ */
693
+ template <typename BeforeDestroy>
694
+ FOLLY_ALWAYS_INLINE iterator
695
+ eraseInto(const_iterator pos, BeforeDestroy&& beforeDestroy) {
696
+ // If we are inlined then gcc and clang can optimize away all of the
697
+ // work of itemPos.advance() if our return value is discarded.
698
+ auto itemPos = table_.unwrapIter(pos);
699
+ tableEraseIterInto(itemPos, beforeDestroy);
700
+ itemPos.advanceLikelyDead();
701
+ return table_.makeIter(itemPos);
702
+ }
703
+
704
+ /// This form avoids ambiguity when key_type has a templated constructor
705
+ /// that accepts const_iterator
706
+ template <typename BeforeDestroy>
707
+ FOLLY_ALWAYS_INLINE iterator
708
+ eraseInto(iterator pos, BeforeDestroy&& beforeDestroy) {
709
+ const_iterator cpos{pos};
710
+ return eraseInto(cpos, beforeDestroy);
711
+ }
712
+
713
+ /// Callback-erase a range of values.
714
+ template <typename BeforeDestroy>
715
+ iterator eraseInto(
716
+ const_iterator first,
717
+ const_iterator last,
718
+ BeforeDestroy&& beforeDestroy) {
719
+ auto itemFirst = table_.unwrapIter(first);
720
+ auto itemLast = table_.unwrapIter(last);
721
+ while (itemFirst != itemLast) {
722
+ tableEraseIterInto(itemFirst, beforeDestroy);
723
+ itemFirst.advance();
724
+ }
725
+ return table_.makeIter(itemFirst);
726
+ }
727
+
728
+ template <typename BeforeDestroy>
729
+ size_type eraseInto(key_type const& key, BeforeDestroy&& beforeDestroy) {
730
+ return tableEraseKeyInto(key, beforeDestroy);
731
+ }
732
+
733
+ /// Callback-erase a specific key, using a heterogeneous representation.
734
+ template <typename K, typename BeforeDestroy>
735
+ EnableHeterogeneousErase<K, size_type> eraseInto(
736
+ K const& key, BeforeDestroy&& beforeDestroy) {
737
+ return tableEraseKeyInto(key, beforeDestroy);
738
+ }
739
+
740
+ //// PUBLIC - Lookup
741
+
742
+ /// Get a value for a key
743
+ /// @methodset Element Access
744
+ FOLLY_ALWAYS_INLINE mapped_type& at(key_type const& key) {
745
+ return at(*this, key);
746
+ }
747
+
748
+ FOLLY_ALWAYS_INLINE mapped_type const& at(key_type const& key) const {
749
+ return at(*this, key);
750
+ }
751
+
752
+ template <typename K>
753
+ EnableHeterogeneousFind<K, mapped_type&> at(K const& key) {
754
+ return at(*this, key);
755
+ }
756
+
757
+ template <typename K>
758
+ EnableHeterogeneousFind<K, mapped_type const&> at(K const& key) const {
759
+ return at(*this, key);
760
+ }
761
+
762
+ /// Get a value for a key; create the value if it doesn't already exist
763
+ /// @methodset Element Access
764
+ mapped_type& operator[](key_type const& key) {
765
+ return try_emplace(key).first->second;
766
+ }
767
+
768
+ mapped_type& operator[](key_type&& key) {
769
+ return try_emplace(std::move(key)).first->second;
770
+ }
771
+
772
+ template <typename K>
773
+ EnableHeterogeneousInsert<K, mapped_type&> operator[](K&& key) {
774
+ return try_emplace(std::forward<K>(key)).first->second;
775
+ }
776
+
777
+ /// @overloadbrief Number of elements matching the given key.
778
+ /// @methodset Lookup
779
+ FOLLY_ALWAYS_INLINE size_type count(key_type const& key) const {
780
+ return contains(key) ? 1 : 0;
781
+ }
782
+
783
+ template <typename K>
784
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, size_type> count(
785
+ K const& key) const {
786
+ return contains(key) ? 1 : 0;
787
+ }
788
+
789
+ /**
790
+ * @overloadbrief Prehash a key.
791
+ * @methodset Lookup
792
+ *
793
+ * prehash(key) does the work of evaluating hash_function()(key)
794
+ * (including additional bit-mixing for non-avalanching hash functions),
795
+ * and wraps the result of that work in a token for later reuse.
796
+ *
797
+ * The returned token may be used at any time, may be used more than
798
+ * once, and may be used in other F14 sets and maps. Tokens are
799
+ * transferrable between any F14 containers (maps and sets) with the
800
+ * same key_type and equal hash_function()s.
801
+ *
802
+ * Hash tokens are not hints -- it is a bug to call any method on this
803
+ * class with a token t and key k where t isn't the result of a call
804
+ * to prehash(k2) with k2 == k.
805
+ */
806
+ F14HashToken prehash(key_type const& key) const {
807
+ return table_.prehash(key);
808
+ }
809
+ /// @copydoc prehash
810
+ F14HashToken prehash(key_type const& key, std::size_t hash) const {
811
+ return table_.prehash(key, hash);
812
+ }
813
+
814
+ /// @copydoc prehash
815
+ template <typename K>
816
+ EnableHeterogeneousFind<K, F14HashToken> prehash(K const& key) const {
817
+ return table_.prehash(key);
818
+ }
819
+ /// @copydoc prehash
820
+ template <typename K>
821
+ EnableHeterogeneousFind<K, F14HashToken> prehash(
822
+ K const& key, std::size_t hash) const {
823
+ return table_.prehash(key, hash);
824
+ }
825
+
826
+ /**
827
+ * @overloadbrief Prefetch cachelines associated with a key.
828
+ * @methodset Lookup
829
+ *
830
+ * prefetch(token) begins prefetching the first steps of looking for key into
831
+ * the local CPU cache.
832
+ *
833
+ * Example Scenario: Loading 2 values from a cold map.
834
+ * You have a map that is cold, meaning it is out of the local CPU cache,
835
+ * and you want to load two values from the map. This can be extended to
836
+ * load N values, but we're loading 2 for simplicity.
837
+ *
838
+ * When the map is cold the dominating factor in the latency is loading the
839
+ * cache line of the entry into the local CPU cache. Using prehash() will
840
+ * issue these cache line fetches in parallel. That means that by the time we
841
+ * finish map.find(token1, key1) the cache lines needed by map.find(token2,
842
+ * key2) may already be in the local CPU cache. In the best case this will
843
+ * half the latency.
844
+ *
845
+ * It is always okay to call prefetch() before a find() or other lookup
846
+ * operation, as it only prefetches cache lines that are guaranteed to be
847
+ * needed by the lookup.
848
+ *
849
+ * std::pair<iterator, iterator> find2(
850
+ * auto& map, key_type const& key1, key_type const& key2) {
851
+ * auto const token1 = map.prehash(key1);
852
+ * map.prefetch(token1);
853
+ * auto const token2 = map.prehash(key2);
854
+ * map.prefetch(token2);
855
+ * return std::make_pair(map.find(token1, key1), map.find(token2, key2));
856
+ * }
857
+ */
858
+ void prefetch(F14HashToken const& token) const { table_.prefetch(token); }
859
+
860
+ /// @overloadbrief Get the iterator for a key.
861
+ /// @methodset Lookup
862
+ FOLLY_ALWAYS_INLINE iterator find(key_type const& key) {
863
+ return table_.makeIter(table_.find(key));
864
+ }
865
+
866
+ /// Get the iterator for a key.
867
+ FOLLY_ALWAYS_INLINE const_iterator find(key_type const& key) const {
868
+ return table_.makeConstIter(table_.find(key));
869
+ }
870
+
871
+ FOLLY_ALWAYS_INLINE iterator
872
+ find(F14HashToken const& token, key_type const& key) {
873
+ return table_.makeIter(table_.find(token, key));
874
+ }
875
+
876
+ FOLLY_ALWAYS_INLINE iterator
877
+ find(const F14HashedKey<key_type, hasher>& hashedKey) {
878
+ return table_.makeIter(
879
+ table_.find(hashedKey.getHashToken(), hashedKey.getKey()));
880
+ }
881
+
882
+ FOLLY_ALWAYS_INLINE const_iterator
883
+ find(F14HashToken const& token, key_type const& key) const {
884
+ return table_.makeConstIter(table_.find(token, key));
885
+ }
886
+
887
+ FOLLY_ALWAYS_INLINE const_iterator
888
+ find(F14HashedKey<key_type, hasher> const& hashedKey) const {
889
+ return table_.makeIter(
890
+ table_.find(hashedKey.getHashToken(), hashedKey.getKey()));
891
+ }
892
+
893
+ template <typename K>
894
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, iterator> find(K const& key) {
895
+ return table_.makeIter(table_.find(key));
896
+ }
897
+
898
+ template <typename K>
899
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, const_iterator> find(
900
+ K const& key) const {
901
+ return table_.makeConstIter(table_.find(key));
902
+ }
903
+
904
+ template <typename K>
905
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, iterator> find(
906
+ F14HashToken const& token, K const& key) {
907
+ return table_.makeIter(table_.find(token, key));
908
+ }
909
+
910
+ template <typename K>
911
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, const_iterator> find(
912
+ F14HashToken const& token, K const& key) const {
913
+ return table_.makeConstIter(table_.find(token, key));
914
+ }
915
+
916
+ /**
917
+ * @overloadbrief Checks if the container contains an element with the
918
+ * specific key.
919
+ * @methodset Lookup
920
+ */
921
+ FOLLY_ALWAYS_INLINE bool contains(key_type const& key) const {
922
+ return !table_.find(key).atEnd();
923
+ }
924
+
925
+ template <typename K>
926
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, bool> contains(
927
+ K const& key) const {
928
+ return !table_.find(key).atEnd();
929
+ }
930
+
931
+ FOLLY_ALWAYS_INLINE bool contains(
932
+ F14HashToken const& token, key_type const& key) const {
933
+ return !table_.find(token, key).atEnd();
934
+ }
935
+
936
+ FOLLY_ALWAYS_INLINE bool contains(
937
+ const F14HashedKey<key_type, hasher>& hashedKey) const {
938
+ return !table_.find(hashedKey.getHashToken(), hashedKey.getKey()).atEnd();
939
+ }
940
+
941
+ template <typename K>
942
+ FOLLY_ALWAYS_INLINE EnableHeterogeneousFind<K, bool> contains(
943
+ F14HashToken const& token, K const& key) const {
944
+ return !table_.find(token, key).atEnd();
945
+ }
946
+
947
+ /// @overloadbrief Returns the range of elements matching a specific key.
948
+ /// @methodset Lookup
949
+ std::pair<iterator, iterator> equal_range(key_type const& key) {
950
+ return equal_range(*this, key);
951
+ }
952
+
953
+ std::pair<const_iterator, const_iterator> equal_range(
954
+ key_type const& key) const {
955
+ return equal_range(*this, key);
956
+ }
957
+
958
+ template <typename K>
959
+ EnableHeterogeneousFind<K, std::pair<iterator, iterator>> equal_range(
960
+ K const& key) {
961
+ return equal_range(*this, key);
962
+ }
963
+
964
+ template <typename K>
965
+ EnableHeterogeneousFind<K, std::pair<const_iterator, const_iterator>>
966
+ equal_range(K const& key) const {
967
+ return equal_range(*this, key);
968
+ }
969
+
970
+ //// PUBLIC - Bucket interface
971
+
972
+ /// The number of buckets in this container.
973
+ /// @methodset Bucket interface
974
+ std::size_t bucket_count() const noexcept { return table_.bucket_count(); }
975
+
976
+ /// The maximum number of buckets for this container.
977
+ /// @methodset Bucket interface
978
+ std::size_t max_bucket_count() const noexcept {
979
+ return table_.max_bucket_count();
980
+ }
981
+
982
+ //// PUBLIC - Hash policy
983
+
984
+ /// Load factor of the underlying hashtable.
985
+ /// @methodset Hash policy
986
+ float load_factor() const noexcept { return table_.load_factor(); }
987
+
988
+ /**
989
+ * @overloadbrief Load factor control.
990
+ * Get the maximum load factor for this container.
991
+ * @methodset Hash policy
992
+ */
993
+ float max_load_factor() const noexcept { return table_.max_load_factor(); }
994
+
995
+ /// Set the maximum load factor for this container.
996
+ /// @methodset Hash policy
997
+ void max_load_factor(float v) { table_.max_load_factor(v); }
998
+
999
+ /**
1000
+ * Rehash this container.
1001
+ * @methodset Hash policy
1002
+ *
1003
+ * This function is provided for compliance with C++'s requirements for
1004
+ * hashtables, but is no better than a simple `reserve` call for F14.
1005
+ *
1006
+ * @param bucketCapcity The desired capacity across all buckets.
1007
+ */
1008
+ void rehash(std::size_t bucketCapacity) {
1009
+ // The standard's rehash() requires understanding the max load factor,
1010
+ // which is easy to get wrong. Since we don't actually allow adjustment
1011
+ // of max_load_factor there is no difference.
1012
+ reserve(bucketCapacity);
1013
+ }
1014
+
1015
+ /**
1016
+ * Pre-allocate space for at least this many elements.
1017
+ * @methodset Capacity
1018
+ *
1019
+ * @param capacity The number of elements to pre-allocate space for.
1020
+ */
1021
+ void reserve(std::size_t capacity) { table_.reserve(capacity); }
1022
+
1023
+ //// PUBLIC - Observers
1024
+
1025
+ /// Get the hasher.
1026
+ /// @methodset Observers
1027
+ hasher hash_function() const { return table_.hasher(); }
1028
+
1029
+ /// Get the key_equal.
1030
+ /// @methodset Observers
1031
+ key_equal key_eq() const { return table_.keyEqual(); }
1032
+
1033
+ //// PUBLIC - F14 Extensions
1034
+
1035
+ /**
1036
+ * Checks for a value using operator==
1037
+ * @methodset Lookup
1038
+ *
1039
+ * containsEqualValue returns true iff there is an element in the map
1040
+ * that compares equal to value using operator==. It is undefined
1041
+ * behavior to call this function if operator== on key_type can ever
1042
+ * return true when the same keys passed to key_eq() would return false
1043
+ * (the opposite is allowed).
1044
+ */
1045
+ bool containsEqualValue(value_type const& value) const {
1046
+ auto it = table_.findMatching(
1047
+ value.first, [&](auto& key) { return value.first == key; });
1048
+ return !it.atEnd() && value.second == table_.valueAtItem(it.citem()).second;
1049
+ }
1050
+
1051
+ /// Get memory footprint, not including sizeof(*this).
1052
+ /// @methodset Capacity
1053
+ std::size_t getAllocatedMemorySize() const {
1054
+ return table_.getAllocatedMemorySize();
1055
+ }
1056
+
1057
+ /**
1058
+ * In-depth memory analysis.
1059
+ * @methodset Capacity
1060
+ *
1061
+ * Enumerates classes of allocated memory blocks currently owned
1062
+ * by this table, calling visitor(allocationSize, allocationCount).
1063
+ * This can be used to get a more accurate indication of memory footprint
1064
+ * than getAllocatedMemorySize() if you have some way of computing the
1065
+ * internal fragmentation of the allocator, such as JEMalloc's nallocx.
1066
+ * The visitor might be called twice with the same allocationSize. The
1067
+ * visitor's computation should produce the same result for visitor(8,
1068
+ * 2) as for two calls to visitor(8, 1), for example. The visitor may
1069
+ * be called with a zero allocationCount.
1070
+ */
1071
+ template <typename V>
1072
+ void visitAllocationClasses(V&& visitor) const {
1073
+ return table_.visitAllocationClasses(visitor);
1074
+ }
1075
+
1076
+ /**
1077
+ * Visit contiguous ranges of elements.
1078
+ * @methodset Iterators
1079
+ *
1080
+ * Calls visitor with two value_type const*, b and e, such that every
1081
+ * entry in the table is included in exactly one of the ranges [b,e).
1082
+ * This can be used to efficiently iterate elements in bulk when crossing
1083
+ * an API boundary that supports contiguous blocks of items.
1084
+ */
1085
+ template <typename V>
1086
+ void visitContiguousRanges(V&& visitor) const;
1087
+
1088
+ /// Get stats.
1089
+ /// @methodset Hash policy
1090
+ F14TableStats computeStats() const noexcept { return table_.computeStats(); }
1091
+
1092
+ private:
1093
+ template <typename Self, typename K>
1094
+ FOLLY_ALWAYS_INLINE static auto& at(Self& self, K const& key) {
1095
+ auto iter = self.find(key);
1096
+ if (iter == self.end()) {
1097
+ throw_exception<std::out_of_range>("at() did not find key");
1098
+ }
1099
+ return iter->second;
1100
+ }
1101
+
1102
+ template <typename Self, typename K>
1103
+ static auto equal_range(Self& self, K const& key) {
1104
+ auto first = self.find(key);
1105
+ auto last = first;
1106
+ if (last != self.end()) {
1107
+ ++last;
1108
+ }
1109
+ return std::make_pair(first, last);
1110
+ }
1111
+
1112
+ protected:
1113
+ F14Table<Policy> table_;
1114
+ };
1115
+ } // namespace detail
1116
+ } // namespace f14
1117
+
1118
+ template <
1119
+ typename Key,
1120
+ typename Mapped,
1121
+ typename Hasher,
1122
+ typename KeyEqual,
1123
+ typename Alloc>
1124
+ class F14ValueMap
1125
+ : public f14::detail::F14BasicMap<f14::detail::MapPolicyWithDefaults<
1126
+ f14::detail::ValueContainerPolicy,
1127
+ Key,
1128
+ Mapped,
1129
+ Hasher,
1130
+ KeyEqual,
1131
+ Alloc>> {
1132
+ protected:
1133
+ using Policy = f14::detail::MapPolicyWithDefaults<
1134
+ f14::detail::ValueContainerPolicy,
1135
+ Key,
1136
+ Mapped,
1137
+ Hasher,
1138
+ KeyEqual,
1139
+ Alloc>;
1140
+
1141
+ private:
1142
+ using Super = f14::detail::F14BasicMap<Policy>;
1143
+
1144
+ public:
1145
+ using typename Super::value_type;
1146
+
1147
+ F14ValueMap() = default;
1148
+
1149
+ using Super::Super;
1150
+
1151
+ F14ValueMap& operator=(std::initializer_list<value_type> ilist) {
1152
+ Super::operator=(ilist);
1153
+ return *this;
1154
+ }
1155
+
1156
+ /// Swaps contained objects with another F14Map
1157
+ /// @methodset Modifiers
1158
+ void swap(F14ValueMap& rhs) noexcept(Policy::kSwapIsNoexcept) {
1159
+ this->table_.swap(rhs.table_);
1160
+ }
1161
+
1162
+ /**
1163
+ * Visit contiguous ranges of elements.
1164
+ * @methodset Iterators
1165
+ *
1166
+ * Calls visitor with two value_type const*, b and e, such that every
1167
+ * entry in the table is included in exactly one of the ranges [b,e).
1168
+ * This can be used to efficiently iterate elements in bulk when crossing
1169
+ * an API boundary that supports contiguous blocks of items.
1170
+ */
1171
+ template <typename V>
1172
+ void visitContiguousRanges(V&& visitor) const {
1173
+ this->table_.visitContiguousItemRanges(visitor);
1174
+ }
1175
+ };
1176
+ #endif // FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1177
+
1178
+ template <
1179
+ typename InputIt,
1180
+ typename Hasher = f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1181
+ typename KeyEqual = f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1182
+ typename Alloc = f14::DefaultAlloc<iterator_value_type_t<InputIt>>,
1183
+ typename = detail::RequireInputIterator<InputIt>,
1184
+ // Next two constraints are necessary to disambiguate from next constructor
1185
+ typename = detail::RequireNotAllocator<Hasher>,
1186
+ typename = detail::RequireNotAllocator<KeyEqual>,
1187
+ typename = detail::RequireAllocator<Alloc>>
1188
+ F14ValueMap(
1189
+ InputIt, InputIt, std::size_t = {}, Hasher = {}, KeyEqual = {}, Alloc = {})
1190
+ -> F14ValueMap<
1191
+ iterator_key_type_t<InputIt>,
1192
+ iterator_mapped_type_t<InputIt>,
1193
+ Hasher,
1194
+ KeyEqual,
1195
+ Alloc>;
1196
+
1197
+ template <
1198
+ typename InputIt,
1199
+ typename Alloc,
1200
+ typename = detail::RequireInputIterator<InputIt>,
1201
+ typename = detail::RequireAllocator<Alloc>>
1202
+ F14ValueMap(InputIt, InputIt, std::size_t, Alloc)
1203
+ -> F14ValueMap<
1204
+ iterator_key_type_t<InputIt>,
1205
+ iterator_mapped_type_t<InputIt>,
1206
+ f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1207
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1208
+ Alloc>;
1209
+
1210
+ template <
1211
+ typename InputIt,
1212
+ typename Hasher,
1213
+ typename Alloc,
1214
+ typename = detail::RequireInputIterator<InputIt>,
1215
+ typename = detail::RequireNotAllocator<Hasher>,
1216
+ typename = detail::RequireAllocator<Alloc>>
1217
+ F14ValueMap(InputIt, InputIt, std::size_t, Hasher, Alloc)
1218
+ -> F14ValueMap<
1219
+ iterator_key_type_t<InputIt>,
1220
+ iterator_mapped_type_t<InputIt>,
1221
+ Hasher,
1222
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1223
+ Alloc>;
1224
+
1225
+ template <
1226
+ typename Key,
1227
+ typename Mapped,
1228
+ typename Hasher = f14::DefaultHasher<Key>,
1229
+ typename KeyEqual = f14::DefaultKeyEqual<Key>,
1230
+ typename Alloc = f14::DefaultAlloc<std::pair<const Key, Mapped>>,
1231
+ typename = detail::RequireNotAllocator<Hasher>,
1232
+ typename = detail::RequireNotAllocator<KeyEqual>,
1233
+ typename = detail::RequireAllocator<Alloc>>
1234
+ F14ValueMap(
1235
+ std::initializer_list<std::pair<Key, Mapped>>,
1236
+ std::size_t = {},
1237
+ Hasher = {},
1238
+ KeyEqual = {},
1239
+ Alloc = {}) -> F14ValueMap<Key, Mapped, Hasher, KeyEqual, Alloc>;
1240
+
1241
+ template <
1242
+ typename Key,
1243
+ typename Mapped,
1244
+ typename Alloc,
1245
+ typename = detail::RequireAllocator<Alloc>>
1246
+ F14ValueMap(std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Alloc)
1247
+ -> F14ValueMap<
1248
+ Key,
1249
+ Mapped,
1250
+ f14::DefaultHasher<Key>,
1251
+ f14::DefaultKeyEqual<Key>,
1252
+ Alloc>;
1253
+
1254
+ template <
1255
+ typename Key,
1256
+ typename Mapped,
1257
+ typename Hasher,
1258
+ typename Alloc,
1259
+ typename = detail::RequireAllocator<Alloc>>
1260
+ F14ValueMap(
1261
+ std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Hasher, Alloc)
1262
+ -> F14ValueMap<Key, Mapped, Hasher, f14::DefaultKeyEqual<Key>, Alloc>;
1263
+
1264
+ #if FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1265
+ template <
1266
+ typename Key,
1267
+ typename Mapped,
1268
+ typename Hasher,
1269
+ typename KeyEqual,
1270
+ typename Alloc>
1271
+ class F14NodeMap
1272
+ : public f14::detail::F14BasicMap<f14::detail::MapPolicyWithDefaults<
1273
+ f14::detail::NodeContainerPolicy,
1274
+ Key,
1275
+ Mapped,
1276
+ Hasher,
1277
+ KeyEqual,
1278
+ Alloc>> {
1279
+ protected:
1280
+ using Policy = f14::detail::MapPolicyWithDefaults<
1281
+ f14::detail::NodeContainerPolicy,
1282
+ Key,
1283
+ Mapped,
1284
+ Hasher,
1285
+ KeyEqual,
1286
+ Alloc>;
1287
+
1288
+ private:
1289
+ using Super = f14::detail::F14BasicMap<Policy>;
1290
+
1291
+ public:
1292
+ using typename Super::value_type;
1293
+
1294
+ F14NodeMap() = default;
1295
+
1296
+ using Super::Super;
1297
+
1298
+ F14NodeMap& operator=(std::initializer_list<value_type> ilist) {
1299
+ Super::operator=(ilist);
1300
+ return *this;
1301
+ }
1302
+
1303
+ /// @methodset Modifiers
1304
+ void swap(F14NodeMap& rhs) noexcept(Policy::kSwapIsNoexcept) {
1305
+ this->table_.swap(rhs.table_);
1306
+ }
1307
+
1308
+ /**
1309
+ * Visit contiguous ranges of elements.
1310
+ * @methodset Iterators
1311
+ *
1312
+ * Calls visitor with two value_type const*, b and e, such that every
1313
+ * entry in the table is included in exactly one of the ranges [b,e).
1314
+ * This can be used to efficiently iterate elements in bulk when crossing
1315
+ * an API boundary that supports contiguous blocks of items.
1316
+ */
1317
+ template <typename V>
1318
+ void visitContiguousRanges(V&& visitor) const {
1319
+ this->table_.visitItems([&](typename Policy::Item ptr) {
1320
+ value_type const* b = std::addressof(*ptr);
1321
+ visitor(b, b + 1);
1322
+ });
1323
+ }
1324
+
1325
+ // TODO extract and node_handle insert
1326
+ };
1327
+ #endif // FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1328
+
1329
+ template <
1330
+ typename InputIt,
1331
+ typename Hasher = f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1332
+ typename KeyEqual = f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1333
+ typename Alloc = f14::DefaultAlloc<iterator_value_type_t<InputIt>>,
1334
+ typename = detail::RequireInputIterator<InputIt>,
1335
+ typename = detail::RequireNotAllocator<Hasher>,
1336
+ typename = detail::RequireNotAllocator<KeyEqual>,
1337
+ typename = detail::RequireAllocator<Alloc>>
1338
+ F14NodeMap(
1339
+ InputIt, InputIt, std::size_t = {}, Hasher = {}, KeyEqual = {}, Alloc = {})
1340
+ -> F14NodeMap<
1341
+ iterator_key_type_t<InputIt>,
1342
+ iterator_mapped_type_t<InputIt>,
1343
+ Hasher,
1344
+ KeyEqual,
1345
+ Alloc>;
1346
+
1347
+ template <
1348
+ typename InputIt,
1349
+ typename Alloc,
1350
+ typename = detail::RequireInputIterator<InputIt>,
1351
+ typename = detail::RequireAllocator<Alloc>>
1352
+ F14NodeMap(InputIt, InputIt, std::size_t, Alloc)
1353
+ -> F14NodeMap<
1354
+ iterator_key_type_t<InputIt>,
1355
+ iterator_mapped_type_t<InputIt>,
1356
+ f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1357
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1358
+ Alloc>;
1359
+
1360
+ template <
1361
+ typename InputIt,
1362
+ typename Hasher,
1363
+ typename Alloc,
1364
+ typename = detail::RequireInputIterator<InputIt>,
1365
+ typename = detail::RequireNotAllocator<Hasher>,
1366
+ typename = detail::RequireAllocator<Alloc>>
1367
+ F14NodeMap(InputIt, InputIt, std::size_t, Hasher, Alloc)
1368
+ -> F14NodeMap<
1369
+ iterator_key_type_t<InputIt>,
1370
+ iterator_mapped_type_t<InputIt>,
1371
+ Hasher,
1372
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1373
+ Alloc>;
1374
+
1375
+ template <
1376
+ typename Key,
1377
+ typename Mapped,
1378
+ typename Hasher = f14::DefaultHasher<Key>,
1379
+ typename KeyEqual = f14::DefaultKeyEqual<Key>,
1380
+ typename Alloc = f14::DefaultAlloc<std::pair<const Key, Mapped>>,
1381
+ typename = detail::RequireNotAllocator<Hasher>,
1382
+ typename = detail::RequireNotAllocator<KeyEqual>,
1383
+ typename = detail::RequireAllocator<Alloc>>
1384
+ F14NodeMap(
1385
+ std::initializer_list<std::pair<Key, Mapped>>,
1386
+ std::size_t = {},
1387
+ Hasher = {},
1388
+ KeyEqual = {},
1389
+ Alloc = {}) -> F14NodeMap<Key, Mapped, Hasher, KeyEqual, Alloc>;
1390
+
1391
+ template <
1392
+ typename Key,
1393
+ typename Mapped,
1394
+ typename Alloc,
1395
+ typename = detail::RequireAllocator<Alloc>>
1396
+ F14NodeMap(std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Alloc)
1397
+ -> F14NodeMap<
1398
+ Key,
1399
+ Mapped,
1400
+ f14::DefaultHasher<Key>,
1401
+ f14::DefaultKeyEqual<Key>,
1402
+ Alloc>;
1403
+
1404
+ template <
1405
+ typename Key,
1406
+ typename Mapped,
1407
+ typename Hasher,
1408
+ typename Alloc,
1409
+ typename = detail::RequireAllocator<Alloc>>
1410
+ F14NodeMap(
1411
+ std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Hasher, Alloc)
1412
+ -> F14NodeMap<Key, Mapped, Hasher, f14::DefaultKeyEqual<Key>, Alloc>;
1413
+
1414
+ #if FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1415
+ namespace f14 {
1416
+ namespace detail {
1417
+ template <
1418
+ typename Key,
1419
+ typename Mapped,
1420
+ typename Hasher,
1421
+ typename KeyEqual,
1422
+ typename Alloc,
1423
+ typename EligibleForPerturbedInsertionOrder>
1424
+ class F14VectorMapImpl : public F14BasicMap<MapPolicyWithDefaults<
1425
+ VectorContainerPolicy,
1426
+ Key,
1427
+ Mapped,
1428
+ Hasher,
1429
+ KeyEqual,
1430
+ Alloc,
1431
+ EligibleForPerturbedInsertionOrder>> {
1432
+ protected:
1433
+ using Policy = MapPolicyWithDefaults<
1434
+ VectorContainerPolicy,
1435
+ Key,
1436
+ Mapped,
1437
+ Hasher,
1438
+ KeyEqual,
1439
+ Alloc,
1440
+ EligibleForPerturbedInsertionOrder>;
1441
+
1442
+ private:
1443
+ using Super = F14BasicMap<Policy>;
1444
+
1445
+ template <typename K>
1446
+ using IsIter = Disjunction<
1447
+ std::is_same<typename Policy::Iter, remove_cvref_t<K>>,
1448
+ std::is_same<typename Policy::ConstIter, remove_cvref_t<K>>,
1449
+ std::is_same<typename Policy::ReverseIter, remove_cvref_t<K>>,
1450
+ std::is_same<typename Policy::ConstReverseIter, remove_cvref_t<K>>>;
1451
+
1452
+ template <typename K, typename T>
1453
+ using EnableHeterogeneousVectorErase = std::enable_if_t<
1454
+ ::folly::detail::EligibleForHeterogeneousFind<
1455
+ Key,
1456
+ Hasher,
1457
+ KeyEqual,
1458
+ std::conditional_t<IsIter<K>::value, Key, K>>::value &&
1459
+ !IsIter<K>::value,
1460
+ T>;
1461
+
1462
+ public:
1463
+ using typename Super::const_iterator;
1464
+ using typename Super::iterator;
1465
+ using typename Super::key_type;
1466
+ using typename Super::mapped_type;
1467
+ using typename Super::value_type;
1468
+
1469
+ F14VectorMapImpl() = default;
1470
+
1471
+ // inherit constructors
1472
+ using Super::Super;
1473
+
1474
+ F14VectorMapImpl& operator=(std::initializer_list<value_type> ilist) {
1475
+ Super::operator=(ilist);
1476
+ return *this;
1477
+ }
1478
+
1479
+ /// @methodset Iterators
1480
+ iterator begin() { return this->table_.linearBegin(this->size()); }
1481
+ /// @methodset Iterators
1482
+ const_iterator begin() const { return cbegin(); }
1483
+ /// @methodset Iterators
1484
+ const_iterator cbegin() const {
1485
+ return this->table_.linearBegin(this->size());
1486
+ }
1487
+
1488
+ /// @methodset Iterators
1489
+ iterator end() { return this->table_.linearEnd(); }
1490
+ /// @methodset Iterators
1491
+ const_iterator end() const { return cend(); }
1492
+ /// @methodset Iterators
1493
+ const_iterator cend() const { return this->table_.linearEnd(); }
1494
+
1495
+ private:
1496
+ template <typename BeforeDestroy>
1497
+ void eraseUnderlying(
1498
+ typename Policy::ItemIter underlying, BeforeDestroy&& beforeDestroy) {
1499
+ Alloc& a = this->table_.alloc();
1500
+ auto values = this->table_.values_;
1501
+
1502
+ // Remove the ptr from the base table and destroy the value.
1503
+ auto index = underlying.item();
1504
+ // The item still needs to be hashable during this call, so we must destroy
1505
+ // the value _afterwards_.
1506
+ this->tableEraseIterInto(underlying, beforeDestroy);
1507
+ Policy::AllocTraits::destroy(a, std::addressof(values[index]));
1508
+
1509
+ // move the last element in values_ down and fix up the inbound index
1510
+ auto tailIndex = this->size();
1511
+ if (tailIndex != index) {
1512
+ auto tail = this->table_.find(
1513
+ VectorContainerIndexSearch{static_cast<uint32_t>(tailIndex)});
1514
+ tail.item() = index;
1515
+ auto p = std::addressof(values[index]);
1516
+ assume(p != nullptr);
1517
+ this->table_.transfer(a, std::addressof(values[tailIndex]), p, 1);
1518
+ }
1519
+ }
1520
+
1521
+ template <typename K, typename BeforeDestroy>
1522
+ std::size_t eraseUnderlyingKey(K const& key, BeforeDestroy&& beforeDestroy) {
1523
+ auto underlying = this->table_.find(key);
1524
+ if (underlying.atEnd()) {
1525
+ return 0;
1526
+ } else {
1527
+ eraseUnderlying(underlying, beforeDestroy);
1528
+ return 1;
1529
+ }
1530
+ }
1531
+
1532
+ public:
1533
+ /**
1534
+ * Remove element at a specific position (iterator).
1535
+ * @overloadbrief Remove elements.
1536
+ * @methodset Modifiers
1537
+ */
1538
+ FOLLY_ALWAYS_INLINE iterator erase(const_iterator pos) {
1539
+ return eraseInto(pos, variadic_noop);
1540
+ }
1541
+
1542
+ // This form avoids ambiguity when key_type has a templated constructor
1543
+ // that accepts const_iterator
1544
+ FOLLY_ALWAYS_INLINE iterator erase(iterator pos) {
1545
+ return eraseInto(pos, variadic_noop);
1546
+ }
1547
+
1548
+ /// Remove a range of elements.
1549
+ iterator erase(const_iterator first, const_iterator last) {
1550
+ return eraseInto(first, last, variadic_noop);
1551
+ }
1552
+
1553
+ /// Remove a specific key.
1554
+ std::size_t erase(key_type const& key) {
1555
+ return eraseInto(key, variadic_noop);
1556
+ }
1557
+
1558
+ /// Remove a key, using a heterogeneous representation.
1559
+ template <typename K>
1560
+ EnableHeterogeneousVectorErase<K, std::size_t> erase(K const& key) {
1561
+ return eraseInto(key, variadic_noop);
1562
+ }
1563
+
1564
+ /**
1565
+ * Callback-erase a single iterator.
1566
+ * @overloadbrief Erase with pre-destruction callback.
1567
+ * @methodset Modifiers
1568
+ *
1569
+ * Like erase, but with an additional callback argument which is called with
1570
+ * an rvalue reference to the item directly before it is destroyed. This can
1571
+ * be used to extract an item out of a F14Set while avoiding a copy.
1572
+ */
1573
+ template <typename BeforeDestroy>
1574
+ FOLLY_ALWAYS_INLINE iterator
1575
+ eraseInto(const_iterator pos, BeforeDestroy&& beforeDestroy) {
1576
+ auto index = this->table_.iterToIndex(pos);
1577
+ auto underlying = this->table_.find(VectorContainerIndexSearch{index});
1578
+ eraseUnderlying(underlying, beforeDestroy);
1579
+ return index == 0 ? end() : this->table_.indexToIter(index - 1);
1580
+ }
1581
+
1582
+ // This form avoids ambiguity when key_type has a templated constructor
1583
+ // that accepts const_iterator
1584
+ template <typename BeforeDestroy>
1585
+ FOLLY_ALWAYS_INLINE iterator
1586
+ eraseInto(iterator pos, BeforeDestroy&& beforeDestroy) {
1587
+ const_iterator cpos{pos};
1588
+ return eraseInto(cpos, beforeDestroy);
1589
+ }
1590
+
1591
+ /// Callback-erase a range of values.
1592
+ template <typename BeforeDestroy>
1593
+ iterator eraseInto(
1594
+ const_iterator first,
1595
+ const_iterator last,
1596
+ BeforeDestroy&& beforeDestroy) {
1597
+ while (first != last) {
1598
+ first = eraseInto(first, beforeDestroy);
1599
+ }
1600
+ auto index = this->table_.iterToIndex(first);
1601
+ return index == 0 ? end() : this->table_.indexToIter(index - 1);
1602
+ }
1603
+
1604
+ /// Callback-erase a specific key.
1605
+ template <typename BeforeDestroy>
1606
+ std::size_t eraseInto(key_type const& key, BeforeDestroy&& beforeDestroy) {
1607
+ return eraseUnderlyingKey(key, beforeDestroy);
1608
+ }
1609
+
1610
+ /// Callback-erase a specific key, using a heterogeneous representation.
1611
+ template <typename K, typename BeforeDestroy>
1612
+ EnableHeterogeneousVectorErase<K, std::size_t> eraseInto(
1613
+ K const& key, BeforeDestroy&& beforeDestroy) {
1614
+ return eraseUnderlyingKey(key, beforeDestroy);
1615
+ }
1616
+
1617
+ /**
1618
+ * Visit contiguous ranges of elements.
1619
+ * @methodset Iterators
1620
+ *
1621
+ * Calls visitor with two value_type const*, b and e, such that every
1622
+ * entry in the table is included in exactly one of the ranges [b,e).
1623
+ * This can be used to efficiently iterate elements in bulk when crossing
1624
+ * an API boundary that supports contiguous blocks of items.
1625
+ */
1626
+ template <typename V>
1627
+ void visitContiguousRanges(V&& visitor) const {
1628
+ auto n = this->table_.size();
1629
+ if (n > 0) {
1630
+ value_type const* b = std::addressof(this->table_.values_[0]);
1631
+ visitor(b, b + n);
1632
+ }
1633
+ }
1634
+ };
1635
+ } // namespace detail
1636
+ } // namespace f14
1637
+
1638
+ template <
1639
+ typename Key,
1640
+ typename Mapped,
1641
+ typename Hasher,
1642
+ typename KeyEqual,
1643
+ typename Alloc>
1644
+ class F14VectorMap : public f14::detail::F14VectorMapImpl<
1645
+ Key,
1646
+ Mapped,
1647
+ Hasher,
1648
+ KeyEqual,
1649
+ Alloc,
1650
+ std::false_type> {
1651
+ using Super = f14::detail::
1652
+ F14VectorMapImpl<Key, Mapped, Hasher, KeyEqual, Alloc, std::false_type>;
1653
+
1654
+ public:
1655
+ using typename Super::const_iterator;
1656
+ using typename Super::iterator;
1657
+ using typename Super::value_type;
1658
+ using reverse_iterator = typename Super::Policy::ReverseIter;
1659
+ using const_reverse_iterator = typename Super::Policy::ConstReverseIter;
1660
+
1661
+ F14VectorMap() = default;
1662
+
1663
+ // inherit constructors
1664
+ using Super::Super;
1665
+
1666
+ F14VectorMap& operator=(std::initializer_list<value_type> ilist) {
1667
+ Super::operator=(ilist);
1668
+ return *this;
1669
+ }
1670
+
1671
+ /// @methodset Modifiers
1672
+ void swap(F14VectorMap& rhs) noexcept(Super::Policy::kSwapIsNoexcept) {
1673
+ this->table_.swap(rhs.table_);
1674
+ }
1675
+
1676
+ // ITERATION ORDER
1677
+ //
1678
+ // Deterministic iteration order for insert-only workloads is part of
1679
+ // F14VectorMap's supported API: iterator is LIFO and reverse_iterator
1680
+ // is FIFO.
1681
+ //
1682
+ // If there have been no calls to erase() then iterator and
1683
+ // const_iterator enumerate entries in the opposite of insertion order.
1684
+ // begin()->first is the key most recently inserted. reverse_iterator
1685
+ // and reverse_const_iterator, therefore, enumerate in LIFO (insertion)
1686
+ // order for insert-only workloads. Deterministic iteration order is
1687
+ // only guaranteed if no keys were removed since the last time the
1688
+ // map was empty. Iteration order is preserved across rehashes and
1689
+ // F14VectorMap copies and moves.
1690
+ //
1691
+ // iterator uses LIFO order so that erasing while iterating with begin()
1692
+ // and end() is safe using the erase(it++) idiom, which is supported
1693
+ // by std::map and std::unordered_map. erase(iter) invalidates iter
1694
+ // and all iterators before iter in the non-reverse iteration order.
1695
+ // Every successful erase invalidates all reverse iterators.
1696
+ //
1697
+ // No erase is provided for reverse_iterator or const_reverse_iterator
1698
+ // to make it harder to shoot yourself in the foot by erasing while
1699
+ // reverse-iterating. You can write that as map.erase(map.iter(riter))
1700
+ // if you really need it.
1701
+
1702
+ /// @methodset Iterators
1703
+ reverse_iterator rbegin() { return this->table_.values_; }
1704
+ /// @methodset Iterators
1705
+ const_reverse_iterator rbegin() const { return crbegin(); }
1706
+ /// @methodset Iterators
1707
+ const_reverse_iterator crbegin() const { return this->table_.values_; }
1708
+
1709
+ /// @methodset Iterators
1710
+ reverse_iterator rend() { return this->table_.values_ + this->table_.size(); }
1711
+ /// @methodset Iterators
1712
+ const_reverse_iterator rend() const { return crend(); }
1713
+ /// @methodset Iterators
1714
+ const_reverse_iterator crend() const {
1715
+ return this->table_.values_ + this->table_.size();
1716
+ }
1717
+
1718
+ /// Explicit conversions between iterator and reverse_iterator
1719
+ /// @methodset Iterators
1720
+ iterator iter(reverse_iterator riter) { return this->table_.iter(riter); }
1721
+ const_iterator iter(const_reverse_iterator riter) const {
1722
+ return this->table_.iter(riter);
1723
+ }
1724
+
1725
+ /// @copydoc iter
1726
+ reverse_iterator riter(iterator it) { return this->table_.riter(it); }
1727
+ const_reverse_iterator riter(const_iterator it) const {
1728
+ return this->table_.riter(it);
1729
+ }
1730
+
1731
+ friend Range<const_reverse_iterator> tag_invoke(
1732
+ order_preserving_reinsertion_view_fn, F14VectorMap const& c) noexcept {
1733
+ return {c.rbegin(), c.rend()};
1734
+ }
1735
+ };
1736
+ #endif // FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1737
+
1738
+ template <
1739
+ typename InputIt,
1740
+ typename Hasher = f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1741
+ typename KeyEqual = f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1742
+ typename Alloc = f14::DefaultAlloc<iterator_value_type_t<InputIt>>,
1743
+ typename = detail::RequireInputIterator<InputIt>,
1744
+ typename = detail::RequireNotAllocator<Hasher>,
1745
+ typename = detail::RequireNotAllocator<KeyEqual>,
1746
+ typename = detail::RequireAllocator<Alloc>>
1747
+ F14VectorMap(
1748
+ InputIt, InputIt, std::size_t = {}, Hasher = {}, KeyEqual = {}, Alloc = {})
1749
+ -> F14VectorMap<
1750
+ iterator_key_type_t<InputIt>,
1751
+ iterator_mapped_type_t<InputIt>,
1752
+ Hasher,
1753
+ KeyEqual,
1754
+ Alloc>;
1755
+
1756
+ template <
1757
+ typename InputIt,
1758
+ typename Alloc,
1759
+ typename = detail::RequireInputIterator<InputIt>,
1760
+ typename = detail::RequireAllocator<Alloc>>
1761
+ F14VectorMap(InputIt, InputIt, std::size_t, Alloc)
1762
+ -> F14VectorMap<
1763
+ iterator_key_type_t<InputIt>,
1764
+ iterator_mapped_type_t<InputIt>,
1765
+ f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1766
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1767
+ Alloc>;
1768
+
1769
+ template <
1770
+ typename InputIt,
1771
+ typename Hasher,
1772
+ typename Alloc,
1773
+ typename = detail::RequireInputIterator<InputIt>,
1774
+ typename = detail::RequireNotAllocator<Hasher>,
1775
+ typename = detail::RequireAllocator<Alloc>>
1776
+ F14VectorMap(InputIt, InputIt, std::size_t, Hasher, Alloc)
1777
+ -> F14VectorMap<
1778
+ iterator_key_type_t<InputIt>,
1779
+ iterator_mapped_type_t<InputIt>,
1780
+ Hasher,
1781
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1782
+ Alloc>;
1783
+
1784
+ template <
1785
+ typename Key,
1786
+ typename Mapped,
1787
+ typename Hasher = f14::DefaultHasher<Key>,
1788
+ typename KeyEqual = f14::DefaultKeyEqual<Key>,
1789
+ typename Alloc = f14::DefaultAlloc<std::pair<const Key, Mapped>>,
1790
+ typename = detail::RequireNotAllocator<Hasher>,
1791
+ typename = detail::RequireNotAllocator<KeyEqual>,
1792
+ typename = detail::RequireAllocator<Alloc>>
1793
+ F14VectorMap(
1794
+ std::initializer_list<std::pair<Key, Mapped>>,
1795
+ std::size_t = {},
1796
+ Hasher = {},
1797
+ KeyEqual = {},
1798
+ Alloc = {}) -> F14VectorMap<Key, Mapped, Hasher, KeyEqual, Alloc>;
1799
+
1800
+ template <
1801
+ typename Key,
1802
+ typename Mapped,
1803
+ typename Alloc,
1804
+ typename = detail::RequireAllocator<Alloc>>
1805
+ F14VectorMap(std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Alloc)
1806
+ -> F14VectorMap<
1807
+ Key,
1808
+ Mapped,
1809
+ f14::DefaultHasher<Key>,
1810
+ f14::DefaultKeyEqual<Key>,
1811
+ Alloc>;
1812
+
1813
+ template <
1814
+ typename Key,
1815
+ typename Mapped,
1816
+ typename Hasher,
1817
+ typename Alloc,
1818
+ typename = detail::RequireAllocator<Alloc>>
1819
+ F14VectorMap(
1820
+ std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Hasher, Alloc)
1821
+ -> F14VectorMap<Key, Mapped, Hasher, f14::DefaultKeyEqual<Key>, Alloc>;
1822
+
1823
+ #if FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1824
+ /**
1825
+ * F14FastMap is, under the hood, either an F14ValueMap or an F14VectorMap.
1826
+ * F14FastMap chooses which of these two representations to use based on the
1827
+ * size of a node.
1828
+ */
1829
+ template <
1830
+ typename Key,
1831
+ typename Mapped,
1832
+ typename Hasher,
1833
+ typename KeyEqual,
1834
+ typename Alloc>
1835
+ class F14FastMap : public std::conditional_t<
1836
+ (sizeof(std::pair<Key const, Mapped>) < 24),
1837
+ F14ValueMap<Key, Mapped, Hasher, KeyEqual, Alloc>,
1838
+ f14::detail::F14VectorMapImpl<
1839
+ Key,
1840
+ Mapped,
1841
+ Hasher,
1842
+ KeyEqual,
1843
+ Alloc,
1844
+ std::true_type>> {
1845
+ using Super = std::conditional_t<
1846
+ sizeof(std::pair<Key const, Mapped>) < 24,
1847
+ F14ValueMap<Key, Mapped, Hasher, KeyEqual, Alloc>,
1848
+ f14::detail::F14VectorMapImpl<
1849
+ Key,
1850
+ Mapped,
1851
+ Hasher,
1852
+ KeyEqual,
1853
+ Alloc,
1854
+ std::true_type>>;
1855
+
1856
+ public:
1857
+ using typename Super::value_type;
1858
+
1859
+ F14FastMap() = default;
1860
+
1861
+ using Super::Super;
1862
+
1863
+ F14FastMap& operator=(std::initializer_list<value_type> ilist) {
1864
+ Super::operator=(ilist);
1865
+ return *this;
1866
+ }
1867
+
1868
+ /// @methodset Modifiers
1869
+ void swap(F14FastMap& rhs) noexcept(Super::Policy::kSwapIsNoexcept) {
1870
+ this->table_.swap(rhs.table_);
1871
+ }
1872
+ };
1873
+ #endif // if FOLLY_F14_VECTOR_INTRINSICS_AVAILABLE
1874
+
1875
+ template <
1876
+ typename InputIt,
1877
+ typename Hasher = f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1878
+ typename KeyEqual = f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1879
+ typename Alloc = f14::DefaultAlloc<iterator_value_type_t<InputIt>>,
1880
+ typename = detail::RequireInputIterator<InputIt>,
1881
+ typename = detail::RequireNotAllocator<Hasher>,
1882
+ typename = detail::RequireNotAllocator<KeyEqual>,
1883
+ typename = detail::RequireAllocator<Alloc>>
1884
+ F14FastMap(
1885
+ InputIt, InputIt, std::size_t = {}, Hasher = {}, KeyEqual = {}, Alloc = {})
1886
+ -> F14FastMap<
1887
+ iterator_key_type_t<InputIt>,
1888
+ iterator_mapped_type_t<InputIt>,
1889
+ Hasher,
1890
+ KeyEqual,
1891
+ Alloc>;
1892
+
1893
+ template <
1894
+ typename InputIt,
1895
+ typename Alloc,
1896
+ typename = detail::RequireInputIterator<InputIt>,
1897
+ typename = detail::RequireAllocator<Alloc>>
1898
+ F14FastMap(InputIt, InputIt, std::size_t, Alloc)
1899
+ -> F14FastMap<
1900
+ iterator_key_type_t<InputIt>,
1901
+ iterator_mapped_type_t<InputIt>,
1902
+ f14::DefaultHasher<iterator_key_type_t<InputIt>>,
1903
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1904
+ Alloc>;
1905
+
1906
+ template <
1907
+ typename InputIt,
1908
+ typename Hasher,
1909
+ typename Alloc,
1910
+ typename = detail::RequireInputIterator<InputIt>,
1911
+ typename = detail::RequireNotAllocator<Hasher>,
1912
+ typename = detail::RequireAllocator<Alloc>>
1913
+ F14FastMap(InputIt, InputIt, std::size_t, Hasher, Alloc)
1914
+ -> F14FastMap<
1915
+ iterator_key_type_t<InputIt>,
1916
+ iterator_mapped_type_t<InputIt>,
1917
+ Hasher,
1918
+ f14::DefaultKeyEqual<iterator_key_type_t<InputIt>>,
1919
+ Alloc>;
1920
+
1921
+ template <
1922
+ typename Key,
1923
+ typename Mapped,
1924
+ typename Hasher = f14::DefaultHasher<Key>,
1925
+ typename KeyEqual = f14::DefaultKeyEqual<Key>,
1926
+ typename Alloc = f14::DefaultAlloc<std::pair<const Key, Mapped>>,
1927
+ typename = detail::RequireNotAllocator<Hasher>,
1928
+ typename = detail::RequireNotAllocator<KeyEqual>,
1929
+ typename = detail::RequireAllocator<Alloc>>
1930
+ F14FastMap(
1931
+ std::initializer_list<std::pair<Key, Mapped>>,
1932
+ std::size_t = {},
1933
+ Hasher = {},
1934
+ KeyEqual = {},
1935
+ Alloc = {}) -> F14FastMap<Key, Mapped, Hasher, KeyEqual, Alloc>;
1936
+
1937
+ template <
1938
+ typename Key,
1939
+ typename Mapped,
1940
+ typename Alloc,
1941
+ typename = detail::RequireAllocator<Alloc>>
1942
+ F14FastMap(std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Alloc)
1943
+ -> F14FastMap<
1944
+ Key,
1945
+ Mapped,
1946
+ f14::DefaultHasher<Key>,
1947
+ f14::DefaultKeyEqual<Key>,
1948
+ Alloc>;
1949
+
1950
+ template <
1951
+ typename Key,
1952
+ typename Mapped,
1953
+ typename Hasher,
1954
+ typename Alloc,
1955
+ typename = detail::RequireAllocator<Alloc>>
1956
+ F14FastMap(
1957
+ std::initializer_list<std::pair<Key, Mapped>>, std::size_t, Hasher, Alloc)
1958
+ -> F14FastMap<Key, Mapped, Hasher, f14::DefaultKeyEqual<Key>, Alloc>;
1959
+
1960
+ } // namespace folly
1961
+
1962
+ namespace folly {
1963
+ namespace f14 {
1964
+ namespace detail {
1965
+ template <typename M>
1966
+ bool mapsEqual(M const& lhs, M const& rhs) {
1967
+ if (lhs.size() != rhs.size()) {
1968
+ return false;
1969
+ }
1970
+ for (auto& kv : lhs) {
1971
+ if (!rhs.containsEqualValue(kv)) {
1972
+ return false;
1973
+ }
1974
+ }
1975
+ return true;
1976
+ }
1977
+ } // namespace detail
1978
+ } // namespace f14
1979
+
1980
+ template <typename K, typename M, typename H, typename E, typename A>
1981
+ bool operator==(
1982
+ F14ValueMap<K, M, H, E, A> const& lhs,
1983
+ F14ValueMap<K, M, H, E, A> const& rhs) {
1984
+ return mapsEqual(lhs, rhs);
1985
+ }
1986
+
1987
+ template <typename K, typename M, typename H, typename E, typename A>
1988
+ bool operator!=(
1989
+ F14ValueMap<K, M, H, E, A> const& lhs,
1990
+ F14ValueMap<K, M, H, E, A> const& rhs) {
1991
+ return !(lhs == rhs);
1992
+ }
1993
+
1994
+ template <typename K, typename M, typename H, typename E, typename A>
1995
+ bool operator==(
1996
+ F14NodeMap<K, M, H, E, A> const& lhs,
1997
+ F14NodeMap<K, M, H, E, A> const& rhs) {
1998
+ return mapsEqual(lhs, rhs);
1999
+ }
2000
+
2001
+ template <typename K, typename M, typename H, typename E, typename A>
2002
+ bool operator!=(
2003
+ F14NodeMap<K, M, H, E, A> const& lhs,
2004
+ F14NodeMap<K, M, H, E, A> const& rhs) {
2005
+ return !(lhs == rhs);
2006
+ }
2007
+
2008
+ template <typename K, typename M, typename H, typename E, typename A>
2009
+ bool operator==(
2010
+ F14VectorMap<K, M, H, E, A> const& lhs,
2011
+ F14VectorMap<K, M, H, E, A> const& rhs) {
2012
+ return mapsEqual(lhs, rhs);
2013
+ }
2014
+
2015
+ template <typename K, typename M, typename H, typename E, typename A>
2016
+ bool operator!=(
2017
+ F14VectorMap<K, M, H, E, A> const& lhs,
2018
+ F14VectorMap<K, M, H, E, A> const& rhs) {
2019
+ return !(lhs == rhs);
2020
+ }
2021
+
2022
+ template <typename K, typename M, typename H, typename E, typename A>
2023
+ bool operator==(
2024
+ F14FastMap<K, M, H, E, A> const& lhs,
2025
+ F14FastMap<K, M, H, E, A> const& rhs) {
2026
+ return mapsEqual(lhs, rhs);
2027
+ }
2028
+
2029
+ template <typename K, typename M, typename H, typename E, typename A>
2030
+ bool operator!=(
2031
+ F14FastMap<K, M, H, E, A> const& lhs,
2032
+ F14FastMap<K, M, H, E, A> const& rhs) {
2033
+ return !(lhs == rhs);
2034
+ }
2035
+
2036
+ template <typename K, typename M, typename H, typename E, typename A>
2037
+ void swap(
2038
+ F14ValueMap<K, M, H, E, A>& lhs,
2039
+ F14ValueMap<K, M, H, E, A>& rhs) noexcept(noexcept(lhs.swap(rhs))) {
2040
+ lhs.swap(rhs);
2041
+ }
2042
+
2043
+ template <typename K, typename M, typename H, typename E, typename A>
2044
+ void swap(
2045
+ F14NodeMap<K, M, H, E, A>& lhs,
2046
+ F14NodeMap<K, M, H, E, A>& rhs) noexcept(noexcept(lhs.swap(rhs))) {
2047
+ lhs.swap(rhs);
2048
+ }
2049
+
2050
+ template <typename K, typename M, typename H, typename E, typename A>
2051
+ void swap(
2052
+ F14VectorMap<K, M, H, E, A>& lhs,
2053
+ F14VectorMap<K, M, H, E, A>& rhs) noexcept(noexcept(lhs.swap(rhs))) {
2054
+ lhs.swap(rhs);
2055
+ }
2056
+
2057
+ template <typename K, typename M, typename H, typename E, typename A>
2058
+ void swap(
2059
+ F14FastMap<K, M, H, E, A>& lhs,
2060
+ F14FastMap<K, M, H, E, A>& rhs) noexcept(noexcept(lhs.swap(rhs))) {
2061
+ lhs.swap(rhs);
2062
+ }
2063
+
2064
+ template <
2065
+ typename K,
2066
+ typename M,
2067
+ typename H,
2068
+ typename E,
2069
+ typename A,
2070
+ typename Pred>
2071
+ std::size_t erase_if(F14ValueMap<K, M, H, E, A>& c, Pred pred) {
2072
+ return f14::detail::erase_if_impl(c, pred);
2073
+ }
2074
+
2075
+ template <
2076
+ typename K,
2077
+ typename M,
2078
+ typename H,
2079
+ typename E,
2080
+ typename A,
2081
+ typename Pred>
2082
+ std::size_t erase_if(F14NodeMap<K, M, H, E, A>& c, Pred pred) {
2083
+ return f14::detail::erase_if_impl(c, pred);
2084
+ }
2085
+
2086
+ template <
2087
+ typename K,
2088
+ typename M,
2089
+ typename H,
2090
+ typename E,
2091
+ typename A,
2092
+ typename Pred>
2093
+ std::size_t erase_if(F14VectorMap<K, M, H, E, A>& c, Pred pred) {
2094
+ return f14::detail::erase_if_impl(c, pred);
2095
+ }
2096
+
2097
+ template <
2098
+ typename K,
2099
+ typename M,
2100
+ typename H,
2101
+ typename E,
2102
+ typename A,
2103
+ typename Pred>
2104
+ std::size_t erase_if(F14FastMap<K, M, H, E, A>& c, Pred pred) {
2105
+ return f14::detail::erase_if_impl(c, pred);
2106
+ }
2107
+
2108
+ } // namespace folly